Настройка DNS сервера Bind9

Для чего нужна локальная доменная зона и DNS-сервер? Чтобы расшарить (сделать доступными) свои локальные сайты для всех пользователей сети. Я создам сеть, где все устройства моей локальной сети смогут пользоваться ресурсами формата site.lan. В моем случае устройства локальной сети подключаются к интернету через роутер.

Серверная машина — на Linux Debian 9 (desktop), клиенты: ПК под управлением Windows, Linux, телевизор со Smart TV, а также смартфоны и планшет. Для начала убедитесь, что в роутере для сервера (машины, на которой будет установлен DNS сервер) зарезервирован статический внутренний IP адрес. Это очень важно, чтобы потом указать всем сетевым устройствам, где именно находится наш DNS сервер.

Установка DNS неймсервера:

Для начала необходимо установить пакет Bind:

sudo apt-get install bind

Кроме того, для нормальной работы веб-сайтов нам потребуется LAMP (Linux Apache MySQL PHP). Единственное, что не прописывайте в /etc/hosts адрес сайта, т.к. этими вопросами будет заниматься неймсервер. На этом этап подготовки окончен.

Настройка Bind

Входим в директорию Bind и делаем резервные копии конфигурируемых файлов:

cd /etc/bind/
cp named.conf.local named.conf.local.back
cp named.conf.options named.conf.options.back

Создаём локальную доменную зону .lan:

nano named.conf.local

И дописываем в конец файла следующие строки:

zone "lan" {
 type master;
  file "/etc/bind/db.lan";
};

Теперь создаем соответствующий файл для доменной зоны .lan и открываем его на редактирование:

touch db.lan
nano db.lan

Наполняем его содержимым:

@ IN SOA lan. root.lan.    (
        201605019        ;Serial
        4h
        1h
        1w
        1d

@   IN    NS    ns1.lan.
@   IN    A  192.168.0.100
ns1 IN A 192.168.0.100
it-admin IN A 192.168.0.100
site IN A 192.168.0.100
* IN    CNAME  @

Обратите внимание на Serial 201605019. Это значение нужно увеличивать каждый раз при редактировании файла доменной зоны. Я пишу YY-MM-DD + наращиваю порядковый номер на 1. 192.168.0.100 — IP адрес сервера. Запись формата «it-admin IN A» означает, что в зоне .lan существует доменное имя it-admin и что этот сайт расположен по IP адресу 192.168.0.100. В apache2 создан, соответственно веб-сайт с ServerName it-admin.lan. Если бы сайт располагался на ином IP, чем DNS сервер, то запись бы имела вид it-admin IN A _IP-ПК-с-сайтом_ Редактируем named.conf.options:

nano named.conf.options

В него нужно дописать выделенные строки:

acl "home" {192.168.0.0/24; 127.0.0.1;};

options {
 directory "/var/cache/bind";
  dnssec-validation auto;

 allow-recursion {127.0.0.1/32; 192.168.0.0/24; 192.168.1.0/24; };
 allow-transfer { none; };

 auth-nxdomain no;    # conform to RFC1035
 listen-on-v6 { none; };

 allow-query {"home";};
};

Первая строка создаёт локальную DNS группу home, с диапазоном IP адресов от 192.168.0.0 до 192.168.0.255, а также 127.0.0.1. Вторая добавляемая строка содержит параметр allow-query (разрешить запросы) и мы указываем, что нужно разрешить запросы от группы home. С конфигурацией закончили, можем перезапустить сервер

sudo /etc/init.d/bind9 restart

Проверка работоспособности

Запускаю Запускаю виртуалку под управлением Windows Xp в которой уже вбил данный днс и тестирую подключение. Первым делом нужно очистить DNS кеш. Заходим в командндую строку виндовс и пишем:
ipconfig /flushdns
1. Теперь уже проверяю видимость в сети сервера DNS, ping 192.168.0.100:
C:\\Documents and Settings\\www>ping 192.168.0.100

Обмен пакетами с 192.168.0.100 по 32 байт:

Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64

Статистика Ping для 192.168.0.100:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
Проверяю локальный сайт: nslookup it-admin.lan:
C:\\Documents and Settings\\www>nslookup it-admin.lan
*** Can't find server name for address 192.168.0.1: Non-existent domain
*** Default servers are not available
Server:  UnKnown
Address:  192.168.0.1

Name:    slicks.lan
Address:  192.168.0.100
ping it-admin.lan:
C:\\Documents and Settings\\www>ping it-admin.lan

Обмен пакетами с it-admin.lan [192.168.0.100] по 32 байт:

Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.100: число байт=32 время<1мс TTL=64

Статистика Ping для 192.168.0.100:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
Наслаждаемся результатами!