Статья описывает быструю настройку Master и Slave DNS серверов с использованием BIND в ОС Debian GNU/Linux 10.9.
На всех серверах сделаем следующее:
установим необходимые пакеты
# apt install bind9 bind9utils dnsutils
если включён файрволл, необходимо разрешить использование DNS
# firewall-cmd --permanent --zone=public --add-service=dns # firewall-cmd --reload
переходим в каталог /etc/bind и откроем здесь файл named.conf
# cd /etc/bind # nano named.conf
в самом конце впишем строчку:
include "/etc/bind/named.conf.zones";
теперь создадим файл /etc/bind/named.conf.zones
# touch /etc/bind/named.conf.zones
и при необходимости отдадим права пользователю root группы bind
# chown -R root:bind /etc/bind/named.conf.zones
в настройках сетевого интерфейса /etc/network/interfaces в параметре dns-nameservers поменяем IP-адреса на наши DNS-сервера:
dns-nameservers 192.168.1.47 192.168.1.48
также в файле /etc/resolv.conf закомментируем все строчки решёткой и добавим наши DNS-сервера:
nameserver 192.168.1.47 nameserver 192.168.1.48
192.168.1.47 и 192.168.1.48 — заданные для примера IP-адреса серверов ns1 (master) и ns2 (slave) соответственно
перезапускаем сетевой интерфейс
# systemctl restart networking
и проверяем его
# ip a
после этого сгенерируем ключи
# /usr/sbin/dnssec-keygen -a HMAC-MD5 -b 128 -n USER rndckey
Переходим к настройкам на сервере ns1:
в файле /etc/bind/named.conf.options стираем строчку
dnssec-validation auto;
и на её месте напишем:
listen-on port 53 { 127.0.0.1; 192.168.1.47; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto;
в файле /etc/bind/named.conf.zones пропишем описание нашей зоны:
zone "localserver34.ru" IN { type master; file "/etc/bind/db.localserver34.ru"; allow-transfer { 192.168.1.48; }; notify yes; };
в файле /etc/bind/db.localserver34.ru зададим описание зоны, т.е. внесём основные записи:
$TTL 3600 @ IN SOA ns1.localserver34.ru. admin.localserver34.ru. ( 20210420 ; Serial 3600 ; Refresh 900 ; Retry 3600000 ; Expire 3600 ) ; Minimum ; DNS servers @ IN NS ns1.localserver34.ru. @ IN NS ns2.localserver34.ru. ; A records www IN A 192.168.1.50 win7 IN A 192.168.1.50 ns1 IN A 192.168.1.47 ns2 IN A 192.168.1.48
перезапускаем службу bind9
# systemctl restart bind9
и проверяем её состояние
# systemctl status bind9
ответ должен содержать:
Loaded: loaded Active: active
Затем переходим к настройке сервера ns2:
в файле /etc/bind/named.conf.options стираем строчку
dnssec-validation auto;
и на её месте напишем:
listen-on port 53 { 127.0.0.1; 192.168.1.48; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto;
в файле /etc/bind/named.conf.zones пропишем описание нашей зоны:
zone "localserver34.ru" { type slave; file "/etc/bind/slave/db.localserver34.ru"; masters { 192.168.1.47; }; allow-transfer {192.168.1.47; }; };
теперь создадим каталог /etc/bind/slave и отдадим на него права пользователю bind группы bind
# mkdir /etc/bind/slave # chown -R bind:bind /etc/bind/slave
при этом здесь файл зоны создавать не нужно — он автоматически подтянется из мастера
перезапускаем службу bind9
# systemctl restart bind9
и проверяем её состояние
# systemctl status bind9
ответ должен содержать:
Loaded: loaded Active: active
Проверяем работу DNS-серверов с помощью утилиты dig:
на ns1 (Master DNS) запускаем
# dig @ns2.localserver34.ru localserver34.ru axfr
ответ должен быть таким:
; <<>> DiG 9.11.5-P4-5.1+deb10u3-Debian <<>> @ns2.localserver34.ru localserver34.ru axfr ; (1 server found) ;; global options: +cmd localserver34.ru. 3600 IN SOA ns1.localserver34.ru. admin.localserver34.ru. 20210420 3600 900 3600000 3600 localserver34.ru. 3600 IN NS ns1.localserver34.ru. localserver34.ru. 3600 IN NS ns2.localserver34.ru. ns1.localserver34.ru. 3600 IN A 192.168.1.47 ns2.localserver34.ru. 3600 IN A 192.168.1.48 win7.localserver34.ru. 3600 IN A 192.168.1.50 www.localserver34.ru. 3600 IN A 192.168.1.50 localserver34.ru. 3600 IN SOA ns1.localserver34.ru. admin.localserver34.ru. 20210420 3600 900 3600000 3600 ;; Query time: 8 msec ;; SERVER: 192.168.1.48#53(192.168.1.48) ;; WHEN: Ср апр 21 09:02:35 MSK 2021 ;; XFR size: 8 records (messages 1, bytes 260)
на ns2 (Slave DNS) запускаем
# dig @ns1.localserver34.ru localserver34.ru axfr
ждём такого ответа:
; <<>> DiG 9.11.5-P4-5.1+deb10u3-Debian <<>> @ns1.localserver34.ru localserver34.ru axfr ; (1 server found) ;; global options: +cmd localserver34.ru. 3600 IN SOA ns1.localserver34.ru. admin.localserver34.ru. 20210420 3600 900 3600000 3600 localserver34.ru. 3600 IN NS ns1.localserver34.ru. localserver34.ru. 3600 IN NS ns2.localserver34.ru. ns1.localserver34.ru. 3600 IN A 192.168.1.47 ns2.localserver34.ru. 3600 IN A 192.168.1.48 win7.localserver34.ru. 3600 IN A 192.168.1.50 www.localserver34.ru. 3600 IN A 192.168.1.50 localserver34.ru. 3600 IN SOA ns1.localserver34.ru. admin.localserver34.ru. 20210420 3600 900 3600000 3600 ;; Query time: 3 msec ;; SERVER: 192.168.1.47#53(192.168.1.47) ;; WHEN: Ср апр 21 09:03:54 MSK 2021 ;; XFR size: 8 records (messages 1, bytes 260)
Если ошибок нет, значит настройка прошла успешно.
Теперь IP-адреса этих серверов можно прописывать на клиентских машинах в сети.
Единственная статья, которая помогла хоть как-то настроить. 🙂 Только второй сервер не копирует данные с первого.
В файле /etc/network/interfaces не смог найти строку с dns-nameservers, прописал в конец файла. Правильно это?
Генерировать ключ на втором сервере тоже нужно? Или ключ от первого можно на второй скопировать?
Спасибо.