Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление

...

Пакет bind9 входит в стандартный дистрибутив ОСОН Смоленск и доступен через репозиторий ОСОН Орёл.
Установку службы DNS BIND9 можно выполнить из графического менеджера пакетов, или из командной строки:

Информация

apt install bind9

При установке пакета bind9 будет автоматически уставновлен пакет инструментов командной строки bind9utils. Из этих инструментов следует отметить:

  • named-checkconf  — инструмент проверки синтаксиса файлов конфигурации
  • named-checkzone — инструмент проверки файлов зон DNS
  • rndc                             — инструмент управления службой DNS

В дополнение к пакетам bind9 и bind9utils, рекомендуем сразу установить пакет инструментов командной строки dnsutils, предназначенных для работы с DNS:

Информация
apt install dnsutils

В составе пакета dnsutils  будут установлены следующие инструменты:

  • dig              - инструмент для опроса DNS-серверов и проверки их реакции
  • nslookup - инструмент для проверки преобразования имен в IP-адреса
                          (далее в тексте используется термин "разрешение имён")
  • nsupdate - инструмент для динамического обновления записей DNS

Настройка службы

Предупреждение

После настройки службы DNS не забудьте перенастроить службу DHCP,
чтобы клиентам автоматически выдавались правильные адреса серверов DNS.

Вариант простейшей настройки "Кеширующий сервер DNS"

Если у вас уже есть настроенный и доступный DNS-сервер (собственный, или сервер провайдера), создание в локальной сети кеширующего DNS-сервера позволит без особых затрат ускорить работу с Интернет за счет ускорения разрешения имен по запросам различных сетевых служб и/или пользовательскими программами.

Для примера предположим, что у нас есть:

  • сервер DNS с  адресом 192.168.32.211

Для создания кеширующего dns-сервера

...


Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1
  • Astra Linux Special Edition РУСБ.10015-16 исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12



Информация
titleСм. также:


Установка пакета

Пакет bind9 входит в стандартные дистрибутивы ОС Astra Linux. Установку службы DNS bind9 можно выполнить из графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:

Command

sudo apt install bind9

При установке пакета bind9 будет автоматически установлен пакет инструментов командной строки bind9utils. Из этих инструментов следует отметить:

  • named-checkconf  — инструмент проверки синтаксиса файлов конфигурации;
  • named-checkzone — инструмент проверки файлов зон DNS;
  • rndc                             — инструмент управления службой DNS.

В дополнение к пакетам bind9 и bind9utils, рекомендуем сразу установить пакет инструментов командной строки dnsutils, предназначенных для работы с DNS:

Command
sudo apt install dnsutils

В составе пакета dnsutils будут установлены следующие инструменты командной строки:

  • dig - инструмент для опроса DNS-серверов и проверки их реакции;
  • nslookup - инструмент для проверки преобразования имен в IP-адреса (далее в тексте используется термин "разрешение имён");
  • nsupdate - инструмент для динамического обновления записей DNS.

Предупреждение

Многие устаревшие материалы в сети Интернет рекомендуют для работы bind создать учетную запись и группу named. Этого делать не следует, так как при установке пакета будут автоматически созданы учетная запись пользователя и группа, причем не группа named, как написано в устаревших материалах, а учетная запись bind и группа bind. Соответственно, сервис будет работать от имени bind:bind, а не от имени named:named, о чем следует помнить при работе с устаревшими примерами из сети Интернет.

Настройка службы

Предупреждение

После настройки службы DNS не забудьте перенастроить службу DHCP, чтобы клиентам автоматически выдавались правильные адреса сервера (серверов) 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 для работы с Samba AD

Параметры настройки BIND9 и BIND9_DLZ для использования в качестве DNS-сервера домена см. BIND9 как DNS-сервер для Samba AD

Вариант простейшей настройки "Кеширующий сервер DNS"

Если в сети уже есть настроенный и доступный DNS-сервер (собственный или сервер провайдера), то создание в локальной сети дополнительного кеширующего DNS-сервера позволит ускорить работу с Интернет за счет ускорения разрешения имен по запросам различных сетевых служб и/или пользовательскими программами.

Установленная по умолчанию служба bind9 сразу настроена на выполнение роли кеширующего сервера, однако при этом запросы будут направляться к внешним серверам, входящим в т.н. список корневых DNS-серверов, что может быть не всегда оптимальным вариантом.

Для примера предположим, что в сети уже есть настроенный сервер DNS с  IP-адресом 192.168.32.1, а новый сервер DNS установлен на сервере с IP-адресом 192.168.32.100. Для перенаправления запросов на ранее настроенный сервер (и, для примера, на серверы Яндекс 77.88.8.8 и 77.88.8.1) следует:

  1. Внести в файл конфигурации /etc/bind/named.conf.

...

Информация
//  forwarders {
//      0.0.0.0;
//  };

...

  1. options внутри секции options строки суказанием адресов серверов, которым нужно передавать запросы:

    Блок кода

...

  1. forwarders {
    	

...

  1. 192.168.32.1;
    	77.88.8.8;

...

  1. 
    	

...

  1. 77.88.8.

...

  1. 1;
    }

...

  1. ;


  2. Опционально добавить список интерфейсов компьютера, через которые

...

  1. сервис DNS

...

  1. должен принимать запросы, а также запретить работу по IPv6:

...

  1. Блок кода
    listen-on {

...

  1. 
    	127.0.0.1;

...

  1. 
    	192.168.

...

  1. 32.100;
    };
    listen-on-v6 {
        none;
    };


  2. Проверить правильность конфигурации командой:

    Command
    sudo named-checkconf

    Если команда не выдает

...

  1. никаких сообщений - значит ошибок нет

...

  1. ;

Информация
named-checkconf
  • и перезапускаем сервис

...

  1. Перезапустить службу:

    Command

    sudo systemctl restart bind9


Проверить работоспособность и эффективность кеширующего DNS-сервера можно с помощью инструмента dig:

...

  1. Отправить первый запрос:

    Command
    Titledig @localhost www.astralinux.ru | grep

...

  1. msec

    ;; Query time: 15 msec

    В ответе на запрос видно, что время ответа составило 15 msec;

  2. Отправить второй запрос (например, через через 5 секунд):

    Command
    Titledig @localhost www.astralinux.ru | grep msec
      ;; Query time: 0 msec
    

    Время ответа на запрос при работающем кешировании должно существенно сократиться.

Вариант простой настройки "Локальный сервер DNS"

Это вариант настройки собственного полноценного DNS-сервера,

...

обслуживающего собственную локальную сеть (собственный DNS-домен).

...

Создание DNS-сервера в локальной сети

...

необходимо для организации единого пространства имен для всех сетевых служб и пользователей.

...

В отличие от кеширующего сервера из предыдущего примера, этот сервер самостоятельно обрабатывает запросы, относящиеся к его зоне ответственности.

Для примера

...

используем следующую конфигурацию сети:

  • домен localnet

...

  • .example.ru

...

  • ;
  • сервер DNS

...

  • в этом домене с именем

...

  • dns.localnet.example.ru

...

Настройка конфигурации bind:

  • на сервере DNS файл конфигурации /etc/bind/named.conf.options используем из предыдущего примера:
Информация
forwarders {
	8.8.8.8;
	8.8.4.4;
};
listen-on {
	127.0.0.1;
	192.168.32.211;
};

...

  • и адресом 192.168.32.211;
  • компьютер host в этом домене с именем host.localnet.example.ru и адресом 192.168.32.96.

Для настройки конфигурации bind:

  1. Файл конфигурации /etc/bind/named.conf.options использовать из предыдущего примера;
  2. Внести информацию о домене в файл конфигурации /etc/bind/named.conf.local. Исходно в этом файле содержатся только комментарии.

...

  1. Добавить следующие строки:

...

  1. Блок кода
    zone "localnet.example.

...

  1. ru"    {                    # имя прямой зоны
        type master;                                    # тип master указывает, что запросы относительно этой зоны будут обрабатываться этим сервером, и перенаправляться не будут
        file "/etc/bind/zones/db.localnet.example.ru"; # путь к файлу данных прямой зоны

...

  1. 
    };

...

  1. 
    
    zone "32.168.192.in-addr.arpa" {                    # имя реверсивной зоны. Имя реверсивной зоны формируется из адреса сети, с обратным порядком чисел.
        type master;                                    # тип master указывает, что запросы, относящиеся к этой зоне, будут обрабатываться этим сервером, и перенаправляться не будут

...

  1. 
        file "/etc/bind/zones/db.32.168.192";           # подсеть 192.168.32.0/24, путь к файлу данных
    };

...


  1. Создать подкаталог /etc/bind/zones для хранения файлов данных, и

...

  1. скопировать в созданный каталог образцы файлов данных:

...

  1. Command

    sudo mkdir /etc/bind/zones
    sudo cp /etc/bind/db.local /etc/bind/zones/db.localnet.example.ru
    sudo cp /etc/bind/db.127 /etc/bind/zones/db.32

...

  1. .168.192
    sudo chown -R bind:bind /etc/bind/zones


  2. Внести

...

  1. изменения в файл прямой зоны /etc/bind/zones/db.localnet.example.

...

  1. ru:

...

  1. Блок кода
    $TTL    604800

...

  1. 
    @       IN      SOA     dns.localnet.example.ru. admin.localnet.example.ru. (

...

  1. 
                                  3         ; Serial

...

  1. 
                             604800         ; Refresh

...

  1. 
                              86400         ; Retry

...

  1. 
                            2419200         ; Expire

...

  1. 
                             604800 )       ; Negative Cache TTL

...

  1. 
    ;

...

  1.  

...

  1. name servers - NS records - определяем имена DNS-серверов

...

  1. 
            IN      NS      dns.localnet.example.ru.

...

  1. 
    ; name servers - A records - определяем адреса компьютеров, сначала сервер(ы) DNS

...

  1. 
    dns.localnet.example.ru.           IN      A      192.168.32.211

...

  1. 
    ; 

...

  1. 192.168.32.0/24 - A records - а потом все остальные компьютер(ы) сети

...

  1. 
    host.localnet.example.ru.          IN      A      192.168.32.96

...


  1. Внести изменения в файл /etc/bind/zones/db.32.168.192 реверсивной зоны:

...

  1. Блок кода
    $TTL  

...

  1.   604800
    @       IN      SOA     localnet.example.ru. admin.localnet.example.ru. (

...

  1. 
                                  3         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL

...

  1.  ;
    

...

  1. 
    ; name servers
          IN      NS      dns.localnet.example.ru.
    

...

  1. ;

...

  1.  

...

  1. PTR Records
    211

...

  1.  IN      PTR     dns.localnet.example.ru.    ; 192.168.32.

...

  1. 211
    96

...

  1.   IN      PTR     host.localnet.example.ru.   ; 192.168.32.96

...

...


  1. Проверить созданную конфигурацию с помощью соответствующих инструментов :

...

  1. Command

    sudo named-checkconf
    sudo named-checkzone

...

  1. localnet.example.ru

...

  1. /etc/bind/zones/db.localnet.example.ru
    sudo named-checkzone

...

  1. 32.168.192.in-addr.arpa

...

  1. /etc/bind/zones/db.32.168.192

...


  1. Перезапустить службу:

...

  1. Command

    sudo systemctl

...

  1. restart

...

  1. bind9


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

...

Command
dig @localhost host.localnet.example.ru

...

Добавление резервного сервера

Как и в примере ранее, предположим, что

...

используются:

  • домен localnet.example.ru
  • сервер DNS в этом домене с именем dns.localnet.example.ru и адресом 192.168.32.211
  • компьютер host в этом домене с именем host.localnet.example.ru и адресом 192.168.32.96
  • и добавляется резервный сервер DNS dns2.localnet.example.ru и адресом 192.168.32.212

Для добавления резервного сервера:

  1. на основном сервере DNS

...

  1. внести информацию о резервном сервере в файл

...

  1. конфигурации /etc/bind/named.conf.local

...

  1. и

...

  1. перезапустить службу.  Добавляемые строки

...

  1. отмечены комментариями:

...

  1. Блок кода
    zone "localnet.example.

...

  1. ru"    {                    
        type master;                                    
        file "/etc/bind/zones/db.localnet.example.ru";  

...

  1. 
        allow-transfer { 192.168.32.212; };             # добавлен адрес вторичного сервера
    };

...

  1. 
    
    zone "32.168.192.in-addr.arpa" {                    
        type master;                                    
        file "/etc/bind/zones/db.32.168.192";           
        allow-transfer { 192.168.32.212; };             # добавлен адрес вторичного 

...

  1. сервера
    };


  2. На резервном сервере DNS файл конфигурации

  1. /etc/bind/

...

  1. 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

...

  1. ;

...

  1.  # 

...

  1. изменён адрес 

...

  1. интерфейса
    

...

  1. };

...


  1. Внести изменения в файл конфигурации /etc

...

forwarders {
	8.8.8.8;
	8.8.4.4;
};
listen-on {
	127.0.0.1;
  1. /bind/named.conf.local:

    Блок кода
    zone "localnet.example.ru" {
        type slave;
        file "slaves/db.nyc3.example.ru";
        masters { 

...

  1. 192.168.32.

...

  1. 211; };  # 

...

  1. адрес 

...

  1. первого 

...

  1. сервера
    };

...

  • вносим изменения в файл конфигурации /etc/bind/named.conf.local.

...

  1. 
    
    zone "

...

  1. 32.168.192.in-addr.arpa" {
        type slave;
        file "slaves/db.

...

  1. 32.

...

  1. 168.

...

  • проверяем корректность конфигурации и перезапускаем сервис
Информация
named-checkconf
systemctl restart bind9

Добавляем служебные записи (SRV-записи).

Служебная запись (SRV-запись) — стандарт в DNS, определяющий имя хоста и номер порта серверов для определённых служб. Определяется в RFC 2782.
Могут использоваться в различных протоколах, например, в Kerberos.

SRV-записи располагаются в файлах зоны (в примере выше - это файл  /etc/bind/zones/db.localnet.example.ru).

Формат записи: 

Информация
_service._proto.name TTL class SRV priority weight port target

Где:

  • service - символьное имя сервиса;
  • proto - транспортный протокол используемый сервисом, как правило _tcp или _udp;
  • name - доменное имя, для которого эта запись действует;
  • TTL - стандарт DNS, время жизни;
  • class- стандарт DNS, поле класса (это всегда IN);
  • priority - приоритет целевого хоста, более низкое значение означает более предпочтительный;
  • weight - относительный вес для записей с одинаковым приоритетом;
  • port - Порт TCP или UDP, на котором работает сервис;.
  • target - канонические имя машины, предоставляющей сервис.

Примеры служебных записей

Kerberos

Информация

$ORIGIN localdomain.example.com.
$TTL 1h
@ IN SOA dns.localdomain.example.com. root.localdomain.example.com. (

	2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
	IN NS dns.localdomain.example.com.
@ IN AAAA ::1
dns.localdomain.example.com. IN A 10.0.2.254
dhcp.localdomain.example.com. IN A 10.0.2.254
kdc.localdomain.example.com. IN A 10.0.2.253
ntp.localdomain.example.com. IN A 10.0.2.253
;kerberos
_kerberos TXT "LOCALDOMAIN.EXAMPLE.COM"
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.localhost.example.com.

...

  1. 192";
    
        masters { 192.168.32.211; };  # адрес первого сервера
    
    };

...

    masters { 192.168.32.211; };  # адрес первого сервера
};

  1. Проверить корректность конфигурации и перезапустить службу:

    Command

    sudo named-checkconf
    sudo systemctl restart bind9


Добавление служебных записей (SRV-записи)

Служебная запись (SRV-запись) — стандарт DNS, определяющий имя хоста и номер порта серверов для определённых служб. Определяется в RFC 2782. Могут использоваться в различных протоколах, например, в Kerberos. SRV-записи располагаются в файлах зоны (в примере выше - это файл  /etc/bind/zones/db.localnet.example.ru).

Формат записи: 

Блок кода
_service._proto.name TTL class SRV priority weight port target

Где:

  • service - символьное имя сервиса;
  • proto - транспортный протокол используемый сервисом, как правило _tcp или _udp;
  • name - доменное имя, для которого эта запись действует;
  • TTL - стандарт DNS, время жизни;
  • class- стандарт DNS, поле класса (это всегда IN);
  • priority - приоритет целевого хоста, более низкое значение означает более предпочтительный;
  • weight - относительный вес для записей с одинаковым приоритетом;
  • port - Порт TCP или UDP, на котором работает сервис;.
  • target - канонические имя машины, предоставляющей сервис.

Примеры служебных записей (Kerberos и NTP)

Блок кода
$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 (например, когда протокол IPv6 не поддерживается сетью), в файл локальных параметров сервера /etc/bind/named.conf.local можно добавить секцию:

Блок кода
server ::/0 {
 bogus yes;
};


Включение аутентификации по ключам.

В работе

Настройка клиентов

...

Клиентским компьютерам после стандартной установки ОС настройка не требуется.