|
|
Пакет bind9 входит в стандартные дистрибутивы ОС Astra Linux. Установку службы DNS bind9 можно выполнить из графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:
sudo apt install bind9 |
При установке пакета bind9 будет автоматически установлен пакет инструментов командной строки bind9utils. Из этих инструментов следует отметить:
В дополнение к пакетам bind9 и bind9utils, рекомендуем сразу установить пакет инструментов командной строки dnsutils, предназначенных для работы с DNS:
| sudo apt install dnsutils |
В составе пакета dnsutils будут установлены следующие инструменты командной строки:
Многие устаревшие материалы в сети Интернет рекомендуют для работы bind создать учетную запись и группу named. Этого делать не следует, так как при установке пакета будут автоматически созданы учетная запись пользователя и группа, причем не группа named, как написано в устаревших материалах, а учетная запись bind и группа bind. Соответственно, сервис будет работать от имени bind:bind, а не от имени named:named, о чем следует помнить при работе с устаревшими примерами из сети Интернет. |
После настройки службы DNS необходимо перенастроить службу DHCP (DHCP: служба isc-dhcp-server или Архив ⬝ DHCP: служба kea), чтобы клиентам автоматически выдавались правильные адреса сервера (серверов) DNS. |
При установке BIND9 в каталоге /etc/bind автоматически создаются следующие конфигурационные файлы:
| /etc/bind/named.conf | Основной файл конфигурации. Этот файл изменять не следует, так как он содержит в себе только ссылки на остальные конфигурационные файлы (см. ниже). |
| /etc/bind/named.conf.options | Файл для глобальных настроек службы |
| /etc/bind/named.conf.local | Файл для настроек зоны DNS |
| /etc/bind/named.conf.default-zones | Файл конфигурации зон "по умолчанию". В частности, этом файле содержатся ссылки на автоматически созданные файлы конфигурации зоны localhost /etc/bind/db.local и /etc/bind/127.db |
Подробности о конфигурационных параметрах см. в руководстве man named.conf (5).
Параметры настройки BIND9 и BIND9_DLZ для использования в качестве DNS-сервера домена см. BIND9 как DNS-сервер для Samba AD
Если в сети уже есть настроенный и доступный DNS-сервер (собственный или сервер провайдера), то создание в локальной сети дополнительного кеширующего DNS-сервера позволит ускорить работу с Интернет за счет ускорения разрешения имен по запросам различных сетевых служб и/или пользовательскими программами.
Установленная по умолчанию служба bind9 сразу настроена на выполнение роли кеширующего сервера, однако при этом запросы будут направляться к внешним серверам, входящим в т.н. список корневых DNS-серверов, что может быть не всегда оптимальным вариантом.
Для примера предположим, что в сети уже есть настроенный сервер DNS с IP-адресом 192.168.32.1, а новый сервер DNS установлен на сервере с IP-адресом 192.168.32.100. Для перенаправления запросов на ранее настроенный сервер (и, для примера, на серверы Яндекс 77.88.8.8 и 77.88.8.1) следует:
Внести в файл конфигурации /etc/bind/named.conf.options внутри секции options строки с указанием адресов серверов, которым нужно передавать запросы:
forwarders {
192.168.32.1;
77.88.8.8;
77.88.8.1;
}; |
Опционально добавить список интерфейсов компьютера, через которые сервис DNS должен принимать запросы, а также запретить работу по IPv6:
listen-on {
127.0.0.1;
192.168.32.100;
};
listen-on-v6 {
none;
}; |
Проверить правильность конфигурации командой:
| sudo named-checkconf |
Если команда не выдает никаких сообщений - значит ошибок нет;
Перезапустить службу:
sudo systemctl restart bind9 |
Проверить работоспособность и эффективность кеширующего DNS-сервера можно с помощью инструмента dig:
Отправить первый запрос:
|
В ответе на запрос видно, что время ответа составило 15 msec;
Отправить второй запрос (например, через через 5 секунд):
|
Время ответа на запрос при работающем кешировании должно существенно сократиться.
Это вариант настройки собственного полноценного DNS-сервера, обслуживающего собственную локальную сеть (собственный DNS-домен). Создание DNS-сервера в локальной сети необходимо для организации единого пространства имен для всех сетевых служб и пользователей. В отличие от кеширующего сервера из предыдущего примера, этот сервер самостоятельно обрабатывает запросы, относящиеся к его зоне ответственности.
Для примера используем следующую конфигурацию сети:
ocalnet.example.ru;dns.localnet.example.ru и адресом 192.168.32.211;host.localnet.example.ru и адресом 192.168.32.96.Для настройки конфигурации bind:
/etc/bind/named.conf.options использовать из предыдущего примера;Внести информацию о домене в файл конфигурации /etc/bind/named.conf.local. Исходно в этом файле содержатся только комментарии. Добавить следующие строки:
zone "localnet.example.ru" { # имя прямой зоны
type master; # тип master указывает, что запросы относительно этой зоны будут обрабатываться этим сервером, и перенаправляться не будут
file "/etc/bind/zones/db.localnet.example.ru"; # путь к файлу данных прямой зоны
};
zone "32.168.192.in-addr.arpa" { # имя реверсивной зоны. Имя реверсивной зоны формируется из адреса сети, с обратным порядком чисел.
type master; # тип master указывает, что запросы, относящиеся к этой зоне, будут обрабатываться этим сервером, и перенаправляться не будут
file "/etc/bind/zones/db.32.168.192"; # подсеть 192.168.32.0/24, путь к файлу данных
}; |
Создать подкаталог /etc/bind/zones для хранения файлов данных, и скопировать в созданный каталог образцы файлов данных:
sudo mkdir /etc/bind/zones |
Внести изменения в файл прямой зоны /etc/bind/zones/db.localnet.example.ru:
$TTL 604800
@ IN SOA dns.localnet.example.ru. admin.localnet.example.ru. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers - NS records - определяем имена DNS-серверов
IN NS dns.localnet.example.ru.
; name servers - A records - определяем адреса компьютеров, сначала сервер(ы) DNS
dns.localnet.example.ru. IN A 192.168.32.211
; 192.168.32.0/24 - A records - а потом все остальные компьютер(ы) сети
host.localnet.example.ru. IN A 192.168.32.96 |
Внести изменения в файл /etc/bind/zones/db.32.168.192 реверсивной зоны:
$TTL 604800
@ IN SOA localnet.example.ru. admin.localnet.example.ru. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL ;
; name servers
IN NS dns.localnet.example.ru.
; PTR Records
211 IN PTR dns.localnet.example.ru. ; 192.168.32.211
96 IN PTR host.localnet.example.ru. ; 192.168.32.96 |
Проверить созданную конфигурацию с помощью соответствующих инструментов :
sudo named-checkconf |
Перезапустить службу:
sudo systemctl restart bind9 |
Проверить работу сервера можно выполнив на сервере команду:
| dig @localhost host.localnet.example.ru |
Как и в примере ранее, предположим, что используются:
localnet.example.rudns.localnet.example.ru и адресом 192.168.32.211host.localnet.example.ru и адресом 192.168.32.96dns2.localnet.example.ru и адресом 192.168.32.212Для добавления резервного сервера:
на основном сервере DNS внести информацию о резервном сервере в файл конфигурации /etc/bind/named.conf.local и перезапустить службу. Добавляемые строки отмечены комментариями:
zone "localnet.example.ru" {
type master;
file "/etc/bind/zones/db.localnet.example.ru";
allow-transfer { 192.168.32.212; }; # добавлен адрес вторичного сервера
};
zone "32.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.32.168.192";
allow-transfer { 192.168.32.212; }; # добавлен адрес вторичного сервера
}; |
На резервном сервере DNS файл конфигурации /etc/bind/named.conf.options использовать из предыдущего примера с одним отличием - резервный сервер использует ("слушает") слушает адрес 192.168.32.212:
forwarders {
77.88.8.8;
77.88.8.1;
};
listen-on {
127.0.0.1;
192.168.32.212; # изменён адрес интерфейса
}; |
Внести изменения в файл конфигурации /etc/bind/named.conf.local:
zone "localnet.example.ru" {
type slave;
file "slaves/db.nyc3.example.ru";
masters { 192.168.32.211; }; # адрес первого сервера
};
zone "32.168.192.in-addr.arpa" {
type slave;
file "slaves/db.32.168.192";
masters { 192.168.32.211; }; # адрес первого сервера
}; |
Проверить корректность конфигурации и перезапустить службу:
sudo named-checkconf |
Служебная запись (SRV-запись) — стандарт DNS, определяющий имя хоста и номер порта серверов для определённых служб. Определяется в RFC 2782. Могут использоваться в различных протоколах, например, в Kerberos. SRV-записи располагаются в файлах зоны (в примере выше - это файл /etc/bind/zones/db.localnet.example.ru).
Формат записи:
_service._proto.name TTL class SRV priority weight port target |
Где:
$ORIGIN samdom.example.ru. $TTL 1h @ IN SOA dns.samdom.example.ru. root.samdom.example.ru. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS dns.samdom.example.ru. @ IN AAAA ::1 dns.samdom.example.ru. IN A 10.0.2.254 dhcp.samdom.example.ru. IN A 10.0.2.254 kdc.samdom.example.ru. IN A 10.0.2.253 ntp.samdom.example.ru. IN A 10.0.2.253 ;kerberos _kerberos TXT "SAMDOM.EXAMPLE.RU" kerberos CNAME kdc _kerberos._udp SRV 0 0 88 kdc SRV 0 0 88 kdc SRV 0 0 88 kdc _kerberos-master._udp SRV 0 0 88 kdc _kerberos-adm._tcp SRV 0 0 749 kdc _kpasswd._udp SRV 0 0 464 kdc ;ntp server _ntp._udp IN SRV 0 100 123 ntp.samdom.example.ru. |
Для того, чтобы сервер не тратил ресурсы на попытки опроса недоступных корневых серверов, работающих по протоколу IPv6 (например, когда протокол IPv6 не поддерживается сетью), в файл локальных параметров сервера /etc/bind/named.conf.local можно добавить секцию:
server ::/0 {
bogus yes;
};
|
В работе
Клиентским компьютерам после стандартной установки ОС настройка не требуется.