Настройка кеширующего DNS сервера BIND9 для локальной сети в Linux.

Автор Itworkroom

Настройка кеширующего DNS сервера BIND9 для локальной сети в Linux.

Бывает много причин для внедрения своего ДНС сервера, кому то нужен он для локальной сети, чтобы не запоминать ip адреса пользователей  и устройств, другой причиной может являться неудовлетворительная работа ДНС серверов провайдера. Моя причина именно такая. Очень нервирует когда крупный провайдер не может предоставить достойный доступ, в моем случае это проявлялось ежедневно, ДНС сервера не могли обработать запрос в течении 1-3 минут, и все страницы тупо отваливались так и не выяснив ip адрес сайта. Итак решаем эту на мой взгляд большую проблему, обходим использование ДНС серверов провайдера, настроив перенаправляющий и кеширующий сервер ДНС., но скорей всего это подойдет для предприятия (если конечно же у вас нет домашнего сервера), а для простого решения этой проблемы дома читайте тут.
Рассмотрим известную и стабильную сборка на основе linux+bind.

Установим DNS сервер Bind9:

sudo apt-get install bind9

Главные настройки находятся в файле (named.conf.options),  отредактируем его:

sudo vi /etc/bind/named.conf.options

Содержимое файла:

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

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

Комментированая секция forwarders, отвечает за то, куда будет передаваться DNS запрос на разрешение имени. Вместо 0.0.0.0, нужно указать альтернативный ДНС сервер. Например 213.180.204.3 — yandex, 8.8.8.8 — google.

После редактирования должно быть примерно так:

forwarders {
          213.180.204.3;//yandex
          8.8.8.8;      //google        
           };

Сохраняем изменения и выходим (:wq)
Перезапускаем сервер (sudo reboot) и проверяем:

# nslookup ya.ru
Non-authoritative answer:
Name:        ya.ru
Addresses:  213.180.204.3

В данном случае, сервер не является главным в обслуживании этой зоны (ya.ru).
Создадим зону для сети, чтобы сопоставить ip адреса компьютерам и сетевым устройствам.
Зоны описываются в конфигурационном файле: named.conf.local

sudo vi /etc/bind/named.conf.local

добавим в него секцию:

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

Сохраняем изменения и выходим (:wq)
Зону мы обозначили, теперь настроим её:

sudo vi /etc/bind/db.home или sudo touch /etc/bind/db.home

редактируем до следующего вида:

@ IN SOA home. root.home.    (

20131001        ; релиз зоны, дата
2h              ; время обновления 2 часа
2h              ; повтор каждый 2 часа
1w              ; как долго хранить информацию 1 неделю
1d    )         ; время жизни, TTL записи 1 день

@   IN    NS    name.        ; имя сервера имен
@   IN    A  192.168.20       ; A - запись - IP адрес нашего ДНС сервера который обслуживает эту зону, @ корневая зона
*   IN    CNAME  @

webserver IN A 192.168.0.25      ; A - запись - IP адрес нашего web сервера в сети
torrentserver IN A 192.168.0.26  ; A - запись - IP адрес нашего torrent сервера в сети
vidserver IN A 192.168.0.27      ; A - запись - IP адрес нашего сервера видео-наблюдения в сети

Также надо внести изменения в файл локального разрешения имен: resolv.conf

sudo vi /etc/resolv.conf

указать в нем адрес:

nameserver 127.0.0.1

Сохраняем изменения и выходим (:wq)

перезапускам службу

sudo service bind9 restart

Теперь разрешением имен в интернете будут заниматься ДНС сервера указанные в секции forwarders.

Проверяем работоспособность:

1. Преобразование внутри сети:

ping webserver.home
Обмен пакетами с web.home [192.168.0.25] с 32 байтами данных:

Ответ от 192.168.0.25: число байт=32 время=115мс TTL=64
Ответ от 192.168.0.25: число байт=32 время=207мс TTL=64
Ответ от 192.168.0.25: число байт=32 время=86мс TTL=64
Ответ от 192.168.0.25: число байт=32 время=406мс TTL=64 

2.  Разрешение имен в интернете:

# nslookup ya.ru

Unknown answer:
Addresses: 192.168.20

Non-authoritative answer:
Name:        ya.ru
Addresses:  213.180.204.3

6 comments on “Настройка кеширующего DNS сервера BIND9 для локальной сети в Linux.

  1. Здраствуйте!

    Прошу помощи.

    Как можно настроить BIND при условии: Имеется локальная сеть (без интернета, внешних DNS сеть не видет).

    Стоит маршрутизатор Mikrotik (DHCP, Hotspot). Hotspot перенаправляет клиентов на локальный Web-сайт (www-сервер).

    Проблема в том что, Hotspot без DNS сервера работает только с запросами IP-адресами (в браузерах клиентов). По запросам от клиентов в браузере типа google.ru вылетает ошибка о недоступности страницы, тоесть Hotspot такие запросы без DNS обратки игнорирует.

    Как научить BIND, при отсутствии интернета, подменять любой запрос хоть google.ru, хоть пупкин.рф припарковывал IP моего веб-сервера?

    Схема моей сетки http://efimrus.ru//var/www/clients/client2/web5/web/wp-content/uploads/2014/06/NET.jpg

    • Доброго дня, не совсем понятен смысл, конкретизируйте вопрос.
      На сколько на данный момент понял, у клиентов нет возможности разрешать имена внутри сети?
      если так, то вам достаточно создать зону или если она есть запись в ДНС, типа
      webserver IN A 192.168.0.25 ; A — запись — IP адрес нашего web сервера в сети
      в данной статье это есть, пишите.

  2. @ IN NS name. ; имя сервера имен

    Не пойму, какое имя сервера имён ему нужно? он жа сам себе dns сервер?

  3. Сохраняем изменения и выходим (:wq)
    Перезапускаем сервер (sudo reboot) и проверяем:

    Вы серьезно!?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *