DNS, или доменная система имён (Domain Name System) – система, которая используется в компьютерных сетях для преобразования человеко-читаемых доменных имен в IP-адреса компьютеров для идентификации друг друга в сети.
DNS выполняет важную роль в интернете, обеспечивая прозрачное разрешение доменных имен в соответствующие IP-адреса. Когда вы вводите адрес веб-сайта в браузере, ваш компьютер отправляет запрос DNS-серверу, который возвращает соответствующий IP-адрес. Затем ваш компьютер использует этот IP-адрес для установления соединения с сервером, хранящим запрашиваемый веб-ресурс.
В этом руководстве мы покажем, как настроить DNS-сервер BIND.
Подготовка
Для успешного выполнения настроек требуется наличие как минимум двух серверов с операционной системой Ubuntu в одном центре обработки данных (ЦОД). Вы можете арендовать их в Spaceweb и настроить под свои нужды:
Необходимо будет подготовить два сервера, работающих на Ubuntu 22.04, которые будут использоваться в роли первичного (ns1) и вторичного (ns2) DNS-серверов.
Важно! Вам потребуются права суперпользователя на каждом из серверов.
Как настроить DNS с помощью сервера имён BIND на Ubuntu
Установка BIND на DNS-серверах
- Сначала обновите пакеты:
sudo apt update && sudo apt upgrade -y
- Установите пакет BIND из репозитория Linux, выполнив следующую команду:
sudo apt install bind9
- Также вы можете установить инструменты мониторинга сети и пакет документации:
sudo apt install dnsutils bind9-doc
- После завершения установки BIND запустите его:
sudo service bind9 start
Основной файл конфигурации сервера находится в директории «/etc/bind/named.conf» и содержит общие настройки, которые часто распределяются по нескольким файлам. Настройка DNS связана именно с параметрами внутри этого файла.
Еще один файл конфигурации – «named.conf.options». В нем задаются общие параметры для сервера DNS.
Вот пример данных, которые вы можете в нем указать:
Важно! Пожалуйста, замените значения IP-адресов и диапазонов на актуальные в соответствии с вашей сетевой конфигурацией.
Проверьте корректность внесенных изменений. Для этого воспользуйтесь утилитой демона named — «named-checkconf»:
sudo named-checkconf
Теперь BIND-сервер будет готов к работе.
Настройка первичного DNS-сервера
Первичный DNS-сервер – это сервер, который содержит основную (первичную) копию данных для определенной зоны домена в системе доменных имен DNS. Он является источником авторитетной информации для этой зоны.
- Сначала создайте директорию, в которой будем хранить файлы зон:
sudo mkdir /etc/bind/masterzones
- Теперь создайте файл для описания локальной зоны «test.example.ru.local»:
sudo touch /etc/bind/masterzones/test.example.ru.local.zone
- Откройте файл для редактирования и добавьте SOA-, NS- и A-записи.
sudo nano /etc/bind/masterzones/test.example.ru.local.zone
Пример содержимого файла:
- Сохраните изменения и закройте файл.
- Выполните проверку созданного файла зоны с помощью «named-checkzone»:
sudo named-checkzone test.example.ru. /etc/bind/masterzones/test.example.ru.local.zone
- Теперь отредактируйте файл «named.conf.local», добавив информацию о новой локальной зоне:
sudo nano /etc/bind/named.conf.local
- Добавьте следующую запись:
zone "test.example.ru." {
type master;
file "/etc/bind/masterzones/test.example.ru.local.zone";
};
Пример:
- Сохраните изменения и закройте файл.
- Проверьте корректность общих настроек и файлов зон:
sudo named-checkconf
sudo named-checkconf -z
- Если проверка завершится успешно, перезапустите BIND, чтобы применить изменения:
sudo service bind9 restart
- Убедитесь, что BIND работает без ошибок:
sudo service bind9 status
- Перейдем к настройке представлений. Для этого нужно отредактировать файл «/etc/bind/named.conf»:
sudo nano /etc/bind/named.conf
- Добавьте следующие строки:
include "/etc/bind/named.conf.options";
acl "local" { 192.168.0.0/168; };
view "local" {
include "/etc/bind/named.conf.local";
match-clients { local; };
};
- Сохраните изменения и закройте файл.
- Теперь отредактируйте файл «/etc/bind/named.conf.local» в соответствии с вашими зонами.
- Перезапустите BIND для применения изменений:
sudo service bind9 restart
- После перезапуска сервера выполните запрос с другого компьютера в вашей локальной сети для проверки наличия SOA-записи:
dig @192.168.1.5 -t SOA test.example.ru.
Убедитесь, что запрос возвращает необходимую информацию.
На этом этапе настройка основного DNS-сервера завершена.
Настройка вторичного сервера
- Обновите список пакетов и установите Bind9 и все необходимые утилиты, включая dnsutils:
sudo apt update && sudo apt upgrade -y
sudo apt install bind9
sudo apt install dnsutils
sudo service bind9 start
- Создайте каталог «/etc/bind/slave» для хранения файлов зон и предоставим необходимые права:
sudo mkdir /etc/bind/slave
sudo chmod g+w /etc/bind/slave
- Добавьте настройки зоны в файл «/etc/bind/named.conf.local»:
sudo nano /etc/bind/named.conf.local
- Добавьте следующую запись:
zone "test.example.ru." {
type slave;
file "/etc/bind/slave/test.example.ru.local.zone";
masters { 192.168.1.5; };
};
- Далее добавьте настройки представлений в основной конфигурационный файл «named.conf»:
sudo nano /etc/bind/named.conf
- Введите:
include "/etc/bind/named.conf.options";
acl "local" { 192.168.0.0/168; };
view "local" {
match-clients { local; };
include "/etc/bind/named.conf.local";
};
- Проверьте синтаксис конфигурационных файлов:
sudo named-checkconf
sudo named-checkconf -z
- Если ошибок нет, перезагрузите BIND:
sudo service bind9 restart
- Затем выполните трансфер зоны со вторичного сервера:
sudo rndc retransfer test.example.ru.
- На первичном сервере ограничьте передачу зоны указанием IP-адреса вторичного DNS-сервера. Для этого добавьте директиву «allow-transfer» в «named.conf»:
sudo nano /etc/bind/named.conf
- Скопируйте туда следующую запись, заменив «<IP_вторичного_сервера>» на реальный IP:
allow-transfer { <IP_вторичного_сервера>; };
- Перезагрузите сервер:
sudo service bind9 restart
Теперь ваши DNS-серверы настроены, и вторичный сервер выполняет трансфер зоны от первичного.
MX-записи
- Отредактируйте файл зоны «/etc/bind/masterzones/test.example.ru.local.zone»:
sudo nano /etc/bind/masterzones/test.example.ru.local.zone
- Добавьте ресурсные записи для почтового хоста «mx.test.example.ru.»:
$ORIGIN test.example.ru.
mx IN A <IP_адрес_mx>
MX 10 mx.test.example.ru.
- Проверьте синтаксис файла зоны:
sudo named-checkzone test.example.ru. /etc/bind/masterzones/test.example.ru.local.zone
- Если ошибок нет, перезагрузите BIND:
sudo service bind9 reload
Теперь ваш DNS-сервер обновлен с новыми ресурсными записями почты для домена «test.example.ru.».
Обратная зона DNS
Обратная зона DNS – это особая доменная зона, которая используется для связывания IP-адресов с соответствующими им доменными именами. Она обратно преобразует IP-адреса в доменные имена, позволяя определить имя узла по его IP-адресу. Это особенно полезно в сетевых и интернет-сервисах, где требуется идентификация устройств по их IP-адресам.
PTR-записи, используемые в обратной зоне, определяют домен по адресу и часто используются для проверки почтовых серверов.
- Создайте новый файл зоны для обратного просмотра:
sudo nano /etc/bind/masterzones/168.192/in-addr.arpa.zone
- Добавьте в него новые настройки. Например:
- Проверьте синтаксис созданной зоны:
sudo named-checkzone 168.192.in-addr.arpa /etc/bind/masterzones/168.192.in-addr.arpa.zone
- Добавьте зону в конфигурационный файл «named.conf.local»:
sudo nano /etc/bind/named.conf.local
- Добавьте следующую конфигурацию:
zone "168.192.in-addr.arpa." {
type master;
file "/etc/bind/masterzones/168.192.in-addr.arpa.zone";
allow-transfer { 192.168.0.6; };
};
Пример:
- Проверьте синтаксис измененных конфигураций:
sudo named-checkconf
- Перезапустите BIND:
sudo service bind9 restart
- Для вторичного сервера добавьте аналогичную конфигурацию в «named.conf.local»:
sudo nano /etc/bind/named.conf.local
- Пропишите:
zone "168.192.in-addr.arpa." {
type slave;
file "/etc/bind/slave/168.192.in-addr.arpa.zone";
masters { 192.168.0.5; };
};
Пример:
- Проверьте синтаксис изменений и перезагрузите BIND на вторичном сервере:
sudo named-checkconf
sudo service bind9 restart
Теперь обратная зона DNS настроена на вашем сервере BIND, и вы можете приступить к настройке внешней доменной зоны.
Внешняя доменная зона
- Добавьте внешний адрес в директиву «listen-on» в файле конфигурации «named.conf.options»:
sudo nano /etc/bind/named.conf.options
- Обновите секцию «listen-on» следующим образом, заменив «111.222.333.444» на ваш внешний IP-адрес:
..
listen-on {
111.222.333.444/32; # Ваш внешний IP
192.168.0.0;
127.0.0.0/8
}
..
- Создайте файл зоны для внешнего просмотра, не забыв изменить серийный номер:
sudo nano /etc/bind/masterzones/test.example.ru.zone
- Добавьте следующие записи, учитывая внешние IP-адреса:
$ttl 3600
$ORIGIN test.example.ru.
test.example.ru. IN SOA (
ns.test.example.ru.
admin.test.example.ru.
2022041205
10800
1200
604800
3600
)
@ IN NS ns.test.example.ru.
@ IN NS ns2.test.example.ru.
@ IN A 111.222.333.444 # Ваш первый внешний адрес
ns IN A 111.222.333.444
ns2 IN A 555.666.777.888 # Ваш второй внешний адрес
- Создайте файл конфигурации для внешнего просмотра:
sudo nano /etc/bind/named.conf.external
- Добавьте в него следующее:
zone "test.example.ru." {
type master;
file "/etc/bind/masterzones/test.example.ru.zone";
allow-transfer { 192.168.0.6; };
};
- Переместите созданный файл в основной конфигурационный файл «named.conf»:
sudo nano /etc/bind/named.conf
- Пропишите следующий блок:
acl "external-view" { 111.222.333.444; };
view "external-view" {
recursion no;
match-clients { external-view; };
include "/etc/bind/named.conf.external";
};
- Проверьте синтаксис конфигурации:
sudo named-checkconf -z
sudo named-checkzone test.example.ru. /etc/bind/masterzones/test.example.ru.zone
- Перезапустите BIND:
sudo service bind9 restart
sudo service bind9 status
- На вторичном DNS-сервере добавьте внешний адрес в файл конфигурации «named.conf.options»:
sudo nano /etc/bind/named.conf.options
- Обновите секцию «listen-on», заменив «555.666.777.888» на ваш внешний IP-адрес:
..
listen-on {
555.666.777.888/24; # ваш внешний IP
192.168.0.0/168;
127.0.0.0/8;
}
..
- Создайте файл конфигурации для внешнего просмотра:
sudo nano /etc/bind/named.conf.external
- И введите:
zone "test.example.ru." {
type slave;
file "/etc/bind/slave/test.example.ru.zone";
masters { 192.168.0.5; };
};
- Добавьте созданный файл в основной конфигурационный файл «named.conf»:
sudo nano /etc/bind/named.conf
- Пропишите такой блок:
acl "external-view" { 555.666.777.888; };
view "external-view" {
recursion no;
match-clients { external-view; };
include "/etc/bind/named.conf.external";
};
- Выполните трансфер зоны на вторичном сервере:
sudo rndc retransfer test.example.ru. IN external-view
Теперь ваш внешний DNS настроен для обработки DNS-запросов из внешней сети, а вторичный сервер получил обновления зоны.
Важно! Убедитесь в корректности настроек и серийного номера перед развертыванием внешнего DNS.
Настройка правил журналирования и отладка
При конфигурации DNS-сервера крайне важно уделить особое внимание настройке журналирования запросов.
DNS-сервер BIND предоставляет расширенные возможности по настройке правил журналирования, позволяя записывать данные в один файл, группировать разные категории в отдельные журналы и многое другое.
Для того чтобы сохранить отладочную информацию в единый файл, необходимо определить правила журналирования и интегрировать их в основной конфигурационный файл.
- Создайте файл «log.conf» для определения правил журналирования:
sudo nano /etc/bind/log.conf
- Добавьте следующие настройки в файл для записи отладочной информации в файл «/var/lib/bind/bind.log»:
logging {
channel bind.log {
file "/var/lib/bind/bind.log" versions 10 size 20m;
severity debug;
print-category yes;
print-severity yes;
print-time yes;
};
category queries { bind.log; };
category default { bind.log; };
category config { bind.log; };
};
- Добавьте подключение созданного файла «log.conf» в основной конфигурационный файл «named.conf»:
sudo nano /etc/bind/named.conf
- В конце файла пропишите:
include "/etc/bind/log.conf";
- Сохраните изменения в файлах конфигурации и перезапустите BIND:
sudo service bind9 restart
Теперь сервер будет записывать отладочную информацию в файл «/var/lib/bind/bind.log».
Заключение
Настройка DNS-сервера BIND – это важный этап для обеспечения стабильной и эффективной работы сети. С помощью приведенных инструкций вы сможете успешно развернуть и настроить сервер, учесть особенности различных типов зон и обеспечить контроль и отладку с использованием журналирования.