Настройка кэширующего DNS-сервера BIND

Назначение DNS это перевод доменных имен, легко запоминаемых человеком в IP адреса которые понимают компьютеры, этот процесс называется-Разрешение имен. Что нам даст установка собственного кеширующего DNS сервера? Это немного ускорит отклик сайтов + Linux не очень хорошо воспринимает имена NetBios, а ведь иногда приходится находить компьютеры или принтеры внутри локальной сети, а хочется это делать по именам.


Запоминать IP адреса- не удобно, а постоянно лазить к журнал работы DHCP сервера- тоже не наш метод. Вот для таких случаев и нужен DNS в локальной сети. Сама установка пакета bind9 не отличается сложностью, затыки, обычно возникают на стадии его конфигурирования, т.к. после легко читаемых конфигурационных файлов системы, на человека сваливается непонятный синтаксис, кстати, очень похожий на язык программирования С. Т.к. сервер будет работать внутри локальной сети, то не имеет смысла переносить его в chroot окружение и вся настройка занимает совсем немного времени. На этом, лирическую часть, можно завершить, переходим к установке и настройке.

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

# apt-get install bind9

После завершения, закачки и установки, нам необходимо отредактировать его конфигурационный файл:

# vim /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 запрос на разрешение имени, в случае если его нет в собственной базе. Последнее время меня совсем не радует, работа этих серверов у провайдера по этому можно подключить сторонние например гугловские, запомнить IP очень легко 8.8.8.8, на его примере я и буду вести настройку, но никто не мешает использовать, те что вам нравятся больше.

Редактируем секцию, для начала с нее нужно снять комментарии и добавить сторонние DNS, если есть необходимость добавить несколько серверов, например на тот случай если сервер google не выдержит ваших запросов и поломается :), то IP других серверов можно написать в столбик, тогда можно добиться более значительной отказоустойчивости.

forwarders {
          8.8.8.8;
          193.58.251.251;   //Российская служба DNS -SkyDNS
       };

В эту секцию лучше вписать IP того сервера который у вас указан в файле /etc/resolv.conf или вписать туда в секциюnameserver этот IP. Сохраняем изменения и выходим. Перезапускаем сервер и проверяем. Набираем в командной строке nslookup mail.ru
Должно выдать:

Non-authoritative answer:
Name:        mail.ru
Addresses:  94.100.191.202

Это говорит о том, что наш сервер не является, главным в обслуживании этой зоны (mail.ru), но запросы добавил в кеш!
Теперь нужно создать ДНС зону для нашей сети чтобы машины могли находить различные сетевые сервисы — могут быть, например, сетевые принтеры, они могут быть как самостоятельными так и расшаренными на других рабочих станциях.
Нашу зону можно назвать orgname –т.е. название организации.
Первым делом создаем зону, для этого отредактируем named.conf.local

# vim /etc/bind/named.conf.local

и добавим в него следующее:

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

Сохраняем и выходим
Теперь нам необходимо создать файл настройки зоны

# vim /etc/bind/db.orgname

и вставляем в него следующее:
(Прошу отнестись внимательно к синтаксису конфигурационного файла, даже точки имеют значение)

@ IN SOA orgname. root.orgname.    (
        20101015        
        4h              ; время обновления -4 часа
        1h              ; повтор каждый час
        1w              ; как долго хранить информацию -1 неделю
        1d    )         ; TTL (время жизни ) записи - 1 день

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

Теперь, при добавлении нового сетевого устройства, вам необходимо сделать 2 вещи:
1) Зарезервировать IP адрес на DHCP сервере, о том, как это сделать, можно прочитать в статье- Настройка DHCP сервера
2) Создать DNS зону для этого IP, вида devicename IN A XXX.XXX.XXX.XXX. Где: devicename-сетевое имя устройства; XXX.XXX.XXX.XXX-его IP адрес который зарезервирован на DHCP сервере.

теперь нам необходимо отредактировать файл resolv.conf

# vim /etc/resolv.conf

и вписать туда:

nameserver 127.0.0.1

все что там было можно закоментировать поставив #
перезапускам сервер

# reboot

Сделано это для того чтобы сервер искал все в собственной базе, а уже потом BIND будет перенаправлять запросы к серверу 8.8.8.8 IP которого вписан в директиве forwarders.
Теперь можно проверять работоспособность:
Если тестирование происходит из под Windows:

ping devicename.orgname

Если тестируем из под Linux:

ping devicename.orgname -c 4

Должны пойти пинги на тот IP который вы указали вместо XXX.XXX.XXX.XXX

Можно так же проверять скорость обработки запросов коммандой dig

# dig @127.0.0.1 tut.by

; <<>> DiG 9.9.5-9+deb8u6-Debian <<>> @127.0.0.1 tut.by
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63893
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 13, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;tut.by. IN A

;; ANSWER SECTION:
tut.by. 103 IN A 178.172.160.5
tut.by. 103 IN A 178.172.160.4
tut.by. 103 IN A 178.172.160.2
tut.by. 103 IN A 178.172.160.3

;; AUTHORITY SECTION:
. 6029 IN NS i.root-servers.net.
. 6029 IN NS b.root-servers.net.
. 6029 IN NS m.root-servers.net.
. 6029 IN NS k.root-servers.net.
. 6029 IN NS e.root-servers.net.
. 6029 IN NS d.root-servers.net.
. 6029 IN NS j.root-servers.net.
. 6029 IN NS g.root-servers.net.
. 6029 IN NS l.root-servers.net.
. 6029 IN NS f.root-servers.net.
. 6029 IN NS h.root-servers.net.
. 6029 IN NS a.root-servers.net.
. 6029 IN NS c.root-servers.net.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Mar 22 16:46:24 MSK 2016
;; MSG SIZE rcvd: 310

Где вместо 127.0.0.1 можно подставить любой проверяемый сервер.

На этом настройку DNS сервера можно завершить.


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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2023

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!