DNS сервер · 12 min read · Sep 08, 2025
Как установить DNS-сервер с BIND на Rocky Linux 9

BIND или Berkeley Internet Name Domain — это бесплатное и открытое программное обеспечение DNS-сервера. Это одно из самых популярных программных обеспечений DNS-сервера, используемое более чем 70% DNS в Интернете. BIND существует с 1980-х годов и известен своей гибкостью, производительностью и функциональностью. BIND может использоваться как авторитетный DNS, так и кэшируемый DNS, и поддерживает балансировку нагрузки, динамическое обновление, разделенный DNS, DNSSEC, IPv6 и многое другое.
Программное обеспечение BIND DNS является одним из самых надежных DNS-серверов для операционных систем, подобных Unix. Оно доступно на большинстве дистрибутивов Linux и предоставляет дополнительные инструменты для диагностики и тестирования DNS-сервера.
Этот учебник покажет вам, как настроить DNS-сервер с BIND на сервере Rocky Linux 9. BIND — это одно из самых популярных программных обеспечений DNS-сервера, которое предоставляет различные функции, такие как авторитетный DNS, только кэшируемый DNS, базовая балансировка нагрузки DNS, разделенный DNS, DNSSEC, IPv6 и многое другое.
Предварительные условия
С помощью этого учебника вы настроите и реализуете DNS-сервер BIND с архитектурой Master-Slave. Поэтому вам понадобятся два сервера Rocky Linux. Также вам потребуются права root/администратора на каждом сервере.
Чтобы настроить публичный DNS-сервер, который может обрабатывать ваш домен (авторитетный DNS-сервер), вы также должны зарегистрировать имя домена и настроить ‘Glue Records’.
Кроме того, в этом руководстве мы предполагаем, что SELinux работает в режиме ‘permissive’.
Подготовка системы
Для начала этого руководства вы настроите правильное FQDN (полное доменное имя) на каждом из ваших серверов Rocky Linux. Это можно сделать с помощью утилиты команды ‘hostnamectl‘ и файла ‘/etc/hosts‘.
Ниже приведены данные серверов, которые будут использоваться в качестве примера для этого руководства:
Hostname IP Address FQDN Used as
---------------------------------------------------------------
ns1 192.168.5.100 ns1.howtoforge.local Master
ns2 192.168.5.120 ns2.howtoforge.local SlaveНа основном сервере выполните следующую утилиту команды hostnamectl, чтобы установить fqdn на ‘ns1.howtoforge.local‘.
sudo hostnamectl set-hostname ns1.howtoforge.localНиже вам также нужно выполнить команду hostnamectl на сервере Slave, чтобы установить fqdn на ‘ns2.howtoforge.local‘.
sudo hostnamectl set-hostname ns2.howtoforge.localДалее откройте файл ‘/etc/hosts’ на обоих серверах Master и Slave, используя следующую команду редактора nano.
sudo nano /etc/hostsДобавьте следующую строку в файл.
192.168.5.100 ns1.howtoforge.local ns1
192.168.5.120 ns2.howtoforge.local ns2Сохраните файл и выйдите из редактора, когда закончите.
Наконец, выполните следующую команду ‘hostname’, чтобы проверить fqdn на каждом сервере. Вы должны увидеть, что на основном сервере fqdn равен ‘ns1.howtoforge.local‘, а на сервере Slave fqdn равен ‘ns2.howtoforge.local‘.
sudo hostname -fНиже приведен вывод с основного сервера.

А ниже приведен вывод с сервера Slave.

С настроенным fqdn вы готовы установить BIND на серверах Rocky Linux.
Установка пакетов BIND
По умолчанию репозиторий Rocky Linux AppStream предоставляет последнюю стабильную версию пакета BIND. На момент написания текущая стабильная версия BIND — v9.16.
На этом этапе вы установите пакеты BIND на обоих серверах Master и Slave. Затем настройте BIND для работы только на IPv4 и настройте firewalld для разрешения порта DNS.
Выполните следующую команду dnf для установки пакетов BIND на оба сервера Master и Slave. Когда вас попросят подтвердить, введите y для подтверждения и нажмите ENTER, чтобы продолжить.
sudo dnf install bind bind-utils
После установки пакетов BIND откройте конфигурацию ‘/etc/sysconfig/named‘ с помощью следующей команды редактора nano.
sudo nano /etc/sysconfig/namedДобавьте параметр по умолчанию ‘OPTIONS=..‘ со следующей строкой. Этот параметр команды для ‘bind’ или ‘named’ будет запускать BIND только на IPv4.
OPTIONS="-4"Сохраните файл и выйдите из редактора, когда закончите.
Далее выполните следующую утилиту команды systemctl, чтобы запустить и включить службу BIND ‘named‘. Служба ‘named’ теперь должна работать и быть включенной, что автоматически запустится при загрузке.
sudo systemctl start named
sudo systemctl enable named
Теперь проверьте службу ‘named’, чтобы убедиться, что служба работает и включена, с помощью следующей команды.
sudo systemctl is-enabled named
sudo systemctl status namedВы получите аналогичный вывод, как показано ниже — служба BIND ‘named’ включена и в настоящее время работает.

С работающей службой BIND ‘named’ вам нужно добавить порт DNS в firewalld, который включен и работает по умолчанию на Rocky Linux.
Выполните следующую утилиту команды firewall-cmd, чтобы добавить службу DNS в firewalld. Затем перезагрузите firewalld, чтобы применить изменения.
sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reloadЕсли вы проверите список включенных служб в firewalld, вы должны увидеть, что служба DNS включена. Выполните следующую команду firewall-cmd, чтобы проверить список служб.
sudo firewall-cmd --list-servicesВывод:

На данный момент вы завершили настройку fqdn, установили пакеты BIND и также настроили firewalld. Учитывая это, вы теперь можете начать настраивать BIND Master на основном сервере.
Настройка Master BIND DNS-сервера
На этом этапе вы настроите сервер BIND Master, используя Rocky Linux ‘ns1.howtoforge.local‘, а IP-адрес сервера — ‘192.168.5.100‘. Убедитесь, что вы выполняете следующие команды на основном сервере.
Вы настроите сервер BIND Master с помощью следующих шагов:
- Базовая конфигурация будет включать конфигурацию ACL (списки управления доступом), настройку IP-адреса для запуска службы BIND, настройку форвардеров и многое другое.
- Настройка зон — это то место, где вы создаете конфигурации для вашего домена. Это включает основную конфигурацию домена и конфигурацию обратного DNS.
Базовая конфигурация
По умолчанию конфигурация BIND на дистрибутиве на основе RHEL доступна в ‘/etc/named.conf‘.
Теперь откройте файл ‘/etc/named.conf‘ с помощью следующей команды редактора nano.
sudo nano /etc/named.confИзмените конфигурацию по умолчанию на следующие строки.
acl "trusted" {
192.168.5.100; # ns1 - или вы можете использовать localhost для ns1
192.168.5.120; # ns2
192.168.5.0/24; # доверенные сети
};
options {
listen-on port 53 { 192.168.5.100; };
// listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; trusted; };
recursion yes;
allow-recursion { trusted; };
allow-transfer { localhost; 192.168.5.120; };
forwarders {
8.8.8.8;
1.1.1.1;
};Сохраните файл и выйдите из редактора, когда закончите.

С этой конфигурацией вы настроите BIND со следующими конфигурациями:
- Настройте ACL ‘trusted‘, который разрешает любой запрос из локальных сетей.
- Запустите службу BIND на ‘192.168.5.100‘ с портом по умолчанию ‘53‘.
- Включите рекурсию и разрешите рекурсию из сетей ACL ‘trusted‘.
- Разрешите передачу зон на сервер Slave с IP-адресом ‘192.168.5.120‘.
- Настройте форвардеры с публичным DNS-сервером 1.1.1.1 от Cloudflare и 8.8.8.8 от Google.
Далее выполните следующую команду, чтобы проверить конфигурацию BIND ‘/etc/named.conf‘.
sudo named-checkconf /etc/named.confНаконец, выполните следующую утилиту команды systemctl, чтобы перезапустить службу BIND ‘named’ и применить изменения.
sudo systemctl restart namedТеперь вы завершили базовую конфигурацию DNS-сервера BIND.
Настройка зон
Теперь вы настроите зоны с DNS-сервером BIND. Вы создадите новый DNS-сервер с адресом ‘ns1.howtoforge.local’ и ‘ns2.howtoforge.local’.
Для начала откройте конфигурацию BIND ‘/etc/named.conf‘ с помощью команды редактора nano ниже.
sudo nano /etc/named.confДобавьте следующую конфигурацию в конец строки.
include "/etc/named/zones.conf.local";Сохраните файл и выйдите из редактора, когда закончите.
Далее создайте новую конфигурацию ‘/etc/named/zones.conf.local‘ с помощью следующей команды редактора nano.
sudo nano /etc/named/zones.conf.localДобавьте следующие строки в файл.
zone "howtoforge.local" {
type master;
file "db.howtoforge.local"; # путь к файлу зоны
allow-transfer { 192.168.5.120; }; # IP-адрес ns2 - вторичный DNS
};
zone "5.168.192.in-addr.arpa" {
type master;
file "db.192.168.5"; # подсеть 192.168.5.0/24
allow-transfer { 192.168.5.120; }; # частный IP-адрес ns2 - вторичный DNS
};Сохраните и закройте файл, когда закончите.
С этой конфигурацией вы определите следующие конфигурации:
- Создайте две зоны для домена ‘howtoforge.local‘ и обратного DNS ‘5.168.192.in-addr.arpa‘.
- Обе зоны типа ‘master‘.
- Разрешите передачу зон на сервер Slave DNS, который будет работать на IP-адресе сервера ‘192.168.5.120‘.

Далее создайте новую конфигурацию DNS-зоны, ‘/var/named/db.howtoforge.local’, с помощью следующей команды редактора nano.
sudo nano /var/named/db.howtoforge.localДобавьте следующие строки в файл.
;
; Файл данных BIND для локального интерфейса обратной связи
;
$TTL 604800
@ IN SOA ns1.howtoforge.local. admin.howtoforge.local. (
3 ; Серийный номер
604800 ; Обновление
86400 ; Повтор
2419200 ; Истечение
604800 ) ; Отрицательный кэш TTL
;
; NS записи для серверов имен
IN NS ns1.howtoforge.local.
IN NS ns2.howtoforge.local.
; A записи для серверов имен
ns1.howtoforge.local. IN A 192.168.5.100
ns2.howtoforge.local. IN A 192.168.5.120
; Обработчик почты или MX-запись для домена howtoforge.local
howtoforge.local. IN MX 10 mail.howtoforge.local.
; A записи для доменных имен
howtoforge.local. IN A 192.168.5.50
mail.howtoforge.local. IN A 192.168.5.15Сохраните и закройте файл, когда закончите.
В этом примере вы настроите зоны со следующими конфигурациями:
- Определите записи серверов имен ‘ns1.howtoforge.local‘ с IP-адресом ‘192.168.5.100‘ и ‘ns2.howtoforge.local‘ с IP-адресом ‘192.168.5.120‘.
- Определите два дополнительных домена, ‘howtoforge.local‘, которые будут разрешены на IP-адрес сервера ‘192.168.5.50‘, и домен ‘mail.howtoforge.local‘ на IP-адрес ‘192.168.5.15‘.
- Вы также создадите MX-запись для домена ‘howtoforge.local‘, которую будет обрабатывать почтовый сервер ‘mail.howtoforge.local’.

Далее вы начнете настраивать обратный DNS для домена howtoforge.local.
Создайте новую конфигурацию обратного DNS ‘/var/named/db.192.168.5‘ с помощью следующей команды редактора nano.
sudo nano /var/named/db.192.168.5Добавьте следующие строки в файл.
;
; Обратный файл данных BIND для локального интерфейса обратной связи
;
$TTL 604800
@ IN SOA ns1.howtoforge.local. admin.howtoforge.local. (
3 ; Серийный номер
604800 ; Обновление
86400 ; Повтор
2419200 ; Истечение
604800 ) ; Отрицательный кэш TTL
;
; серверы имен - NS записи
IN NS ns1.howtoforge.local.
IN NS ns2.howtoforge.local.
; PTR записи
100 IN PTR ns1.howtoforge.local. ; 192.168.5.100
120 IN PTR ns2.howtoforge.local. ; 192.168.5.120
50 IN PTR howtoforge.local. ; 192.168.5.50
15 IN PTR mail.howtoforge.local. ; 192.168.5.15Сохраните и закройте файл, когда закончите.
С этой конфигурацией вы настроите обратный DNS или PTR записи следующим образом.
- В конфигурации обратного DNS вы также определите сервер имен ns1.howtoforge.local и ns2.howtoforge.local.
- Каждая конфигурация обратного DNS использует последнее число IP-адреса, которое разрешается в каждый домен. В этом примере сервер имен ns1.howtoforge.local с IP-адресом ‘192.168.5.100’, и PTR запись должна быть ‘100‘.
- Остальные PTR записи такие же, как описано выше.

На данный момент вы создали две конфигурации зон для домена ‘howtoforge.local‘ и создали сервер имен ‘ns1.howtoforge.local‘ и ‘ns2.howtoforge.local‘.
Теперь выполните следующую команду chmod, чтобы изменить владельца обеих конфигураций зон.
sudo chown -R named: /var/named/{db.howtoforge.local,db.192.168.5}Затем проверьте файлы конфигурации зон с помощью утилиты команды ‘named-checkconf‘ ниже.
sudo named-checkconfsudo named-checkzone howtoforge.local /var/named/db.howtoforge.local
sudo named-checkzone 5.168.192.in-addr.arpa /var/named/db.192.168.5Если у вас правильные конфигурации BIND, вы получите вывод, похожий на следующий скриншот.

Наконец, выполните следующую утилиту команды systemctl, чтобы перезапустить службу BIND ‘named’ и применить изменения. Затем проверьте статус службы BIND, чтобы убедиться, что служба работает.
sudo systemctl restart named
sudo systemctl status namedВы получите вывод, похожий на следующий — служба BIND ‘named‘ работает, и вы завершили конфигурацию Master BIND.

На следующем этапе вы настроите сервер BIND Slave.
Настройка Slave BIND DNS-сервера
После настройки DNS Master-сервера вы начнете настраивать сервер BIND Slave на сервере ‘ns2.howtoforge.local’ с IP-адресом ‘192.168.5.120’.
Базовая конфигурация для ‘named.conf’ аналогична BIND Master, а для файлов зон вы можете определить имя файла, не создавая фактический файл на сервере BIND Slave.
Перед тем как начать, убедитесь, что вы выполняете следующие команды на сервере BIND Slave.
Теперь откройте конфигурацию BIND ‘/etc/named.conf‘ на сервере Slave с помощью команды редактора nano ниже.
sudo nano /etc/named.confИзмените конфигурацию по умолчанию на следующие строки.
acl "trusted" {
192.168.5.100; # ns1 - или вы можете использовать localhost для ns1
192.168.5.120; # ns2
192.168.5.0/24; # доверенные сети
};
options {
listen-on port 53 { 192.168.5.120; };
//listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; };
recursion yes;
allow-recursion { trusted; };
allow-transfer { none; };
forwarders {
8.8.8.8;
1.1.1.1;
};
};Настройки аналогичны серверу BIND Master, и ниже приведены некоторые отличия в конфигурациях.
- Служба BIND будет работать на IP-адресе ‘192.168.5.120‘ на сервере Slave.
- Рекурсия включена, но ‘allow-transfer’ настроен на ‘none‘.

Теперь добавьте следующую строку в конец файла ‘named.conf’ для определения зон.
include "/etc/named/zones.conf.local";Сохраните файл и выйдите из редактора, когда закончите.
Далее создайте новую конфигурацию ‘/etc/named/zones.conf.local’ с помощью следующей команды редактора nano.
sudo nano /etc/named/zones.conf.localДобавьте следующие строки в файл.
zone "howtoforge.local" {
type slave;
file "slaves/db.howtoforge.local";
masters { 192.168.5.100; }; # IP-адрес ns1 - мастер DNS
};
zone "5.168.192.in-addr.arpa" {
type slave;
file "slaves/db.192.168.5";
masters { 192.168.5.100; }; # IP-адрес ns1 - мастер DNS
};Сохраните и закройте файл, когда закончите.
С этим вы определите некоторые конфигурации ниже на сервере BIND Slave:
- Определите две зоны для домена ‘howtoforge.local‘ и его обратного DNS.
- Обе зоны типа ‘slave‘.
- Файл зоны для каждой будет взят из директории ‘/var/named/slaves‘, который будет передан с сервера BIND Master.

Далее выполните следующую утилиту команды ‘named-checkconf’, чтобы проверить конфигурации BIND. Затем перезапустите службу BIND ‘named’ на сервере Slave с помощью команды systemctl, как показано ниже.
sudo named-checkconf
sudo systemctl restart namedУ вас не будет никаких сообщений об ошибках, если у вас правильная конфигурация BIND.
Наконец, выполните следующую утилиту команды systemctl, чтобы проверить службу BIND ‘named‘ на сервере Slave, чтобы убедиться, что служба работает.
sudo systemctl status namedТеперь вы получите вывод, похожий на следующий — служба BIND ‘named’ работает на сервере BIND Slave.

На данный момент вы завершили установку BIND DNS с архитектурой Master-Slave. Теперь вы готовы начать тестирование с клиентской машины.
Тестирование с клиента
В этом примере используется система Debian в качестве клиентской машины, поэтому установите некоторые пакеты ниже через APT перед началом.
sudo apt install dnsutils bind9-utilsВведите y, когда вас попросят подтвердить, и нажмите ENTER, чтобы продолжить.

Далее выполните следующую команду, чтобы удалить файл ссылки по умолчанию “/etc/resolv.conf“ и создать новый файл с помощью редактора nano.
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.confДобавьте следующую конфигурацию в файл. В следующей конфигурации мы определяем три разных резолвера: BIND DNS Master, вторичный DNS-сервер BIND и публичный резолвер DNS Cloudflare. Когда клиентская машина запрашивает информацию о доменном имени, информация будет получена от DNS-резолвера, сверху вниз.
nameserver 192.168.5.100
nameserver 192.168.5.120
nameserver 1.1.1.1
search howtoforge.localСохраните и закройте файл, когда закончите.
Теперь вы готовы проверить свой DNS-сервер с клиентской машины.
Выполните команду dig ниже, чтобы проверить доменное имя “howtoforge.local” и “mail.howtoforge.local”. И вы должны увидеть, что “howtoforge.local“ разрешается на IP-адрес сервера “192.168.5.50“, в то время как поддомен “mail.howtoforge.local“ обрабатывается IP-адресом сервера “192.168.5.15“.
dig howtoforge.local +short
dig howtoforge.localdig mail.howtoforge.local +short
dig mail.howtoforge.localПроверка доменного имени howtoforge.local.

Проверка поддомена mail.howtoforge.local.

Далее выполните команду dig ниже, чтобы проверить обработчик почты для доменного имени “howtoforge.local“. И вы должны получить вывод, что “mail.howtoforge.local“ обрабатывает почту для основного домена “howtoforge.local“.
dig howtoforge.local MX +short
dig howtoforge.local MX
Вы можете проверить конфигурацию обратной зоны для вашего доменного имени с помощью команды nslookup.
Выполните команду nslookup ниже, чтобы проверить и подтвердить обратный DNS для некоторых IP-адресов.
Теперь вы должны увидеть, что IP-адрес “192.168.5.100“ обратен к серверу имен “ns1.howtoforge.local“, IP-адрес “192.168.5.120“ обратен к серверу имен “ns2.howtoforge.local“, а IP-адрес “192.168.5.50“ обратен к основному доменному имени “howtoforge.local“, и, наконец, IP-адрес “192.168.5.15“ обратен к поддомену “mail.howtoforge.local“.
slookup 192.168.5.100
slookup 192.168.5.120
slookup 192.168.5.50
slookup 192.168.5.15
На данный момент вы завершили установку DNS-сервера BIND с архитектурой Master-Slave на Rocky Linux. Вы также узнали, как тестировать DNS-сервер с помощью различных утилит команд, таких как dig и nslookup.
Заключение
Поздравляем! На протяжении этого учебника вы узнали об установке и конфигурации DNS-сервера BIND на серверах Rocky Linux 9. Вы успешно настроили сервер BIND DNS Master-Slave, используя два разных сервера Rocky Linux. Также вы узнали основные команды Dig и Nslookup для проверки и подтверждения записей и конфигурации DNS.
Get new posts in your inbox
No spam. Unsubscribe anytime.