BIND DNS на Debian 10.9

Статья описывает быструю настройку 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-адреса этих серверов можно прописывать на клиентских машинах в сети.

Один комментарий к “BIND DNS на Debian 10.9”

  1. Единственная статья, которая помогла хоть как-то настроить. 🙂 Только второй сервер не копирует данные с первого.

    В файле /etc/network/interfaces не смог найти строку с dns-nameservers, прописал в конец файла. Правильно это?

    Генерировать ключ на втором сервере тоже нужно? Или ключ от первого можно на второй скопировать?

    Спасибо.

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

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