Настройка DNS сервера Bind9 (Создание локальной доменной зоны)

Опубликовано: Комментариев: 1

Сегодня поговорим о создании локальной доменной зоны внутри локальной сети. Для чего нужна локальная доменная зона и DNS-сервер? Чтобы расшарить (сделать доступными) свои локальные сайты для всех пользователей сети. Я создам сеть, где все устройства моей локальной сети смогут пользоваться ресурсами формата site.lan. В моем случае устройства локальной сети подключаются к интернету через роутер. Серверная машина - на Linux Mint (desktop), клиенты: ПК под управлением Windows, Linux, телевизор со Smart TV, а также смартфоны и планшет. Для начала убедитесь, что в роутере для сервера (машины, на которой будет установлен DNS сервер) зарезервирован статический внутренний IP адрес. Это очень важно, чтобы потом указать всем сетевым устройствам, где именно находится наш DNS сервер.

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

Для начала необходимо установить пакет Bind:
sudo apt-get install bind
Кроме того, для нормальной работы веб-сайтов нам потребуется LAMP (Linux Apache MySQL PHP). О том как установить LAMP в Ubuntu читайте в моей статье. А также по ссылке внизу статьи можете настроить локальный сайт. Единственное, что не прописывайте в /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
slicks 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 адрес сервера. Запись формата "slicks IN A" означает, что в зоне .lan существует доменное имя slicks и что этот сайт расположен по IP адресу 192.168.0.100. В apache2 создан, соответственно веб-сайт с ServerName slicks.lan. Если бы сайт располагался на ином IP, чем DNS сервер, то запись бы имела вид slicks 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
 

Указываем локальный DNS в роутере

Чтобы не было нужды редактировать сетевое подключение на каждом клиенте и вручную прописывать DNS-сервер, мы можем указать IP локального DNS в настройках маршрутизатора. И все запросы пользователей сети будут отправляться последним сперва на локальный DNS, а потом уже уходить в Интернет. У меня:
  • Модель роутера: Dir-615;
  • Internet Connection Type:  Dynamic IP (DHCP);
Для указания локального DNS сервера в моем случае я вхожу в Setup -> Network Settings -> Manual Internet Connection Setup и в поле Primary DNS Address  прописываю IP адрес сервера локальной доменной зоны 192.168.0.100, он же будет теперь выступать основным DNS сервером в локальной сети. А в качестве Secondary DNS адреса пишем 8.8.8.8. Это адреса DNS Google. LocalDNS На скрине у меня Primary и Secondary DNS адреса ведут на мой сервер. Почему-то вначале казалось, что роутер не перенаправлял запросы на мой DNS и прописал так. Вторым DNS лучше указать гугловский сервер, чтобы в случае если локальный сервер 192.168.0.100 будет выключен - не пропадал интернет у всех остальных устройств!

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

Запускаю клиентский ПК под управлением 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 slicks.lan:
C:\\Documents and Settings\\www>nslookup slicks.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 slicks.lan:
C:\\Documents and Settings\\www>ping slicks.lan

Обмен пакетами с slicks.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 мсек
Наслаждаемся результатами!