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

Ниже приведен вывод с основного сервера.

fqdn master server

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

fqdn slave server

С настроенным 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

install bind named

После установки пакетов 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

start enable named

Теперь проверьте службу ‘named’, чтобы убедиться, что служба работает и включена, с помощью следующей команды.

sudo systemctl is-enabled named  
sudo systemctl status named

Вы получите аналогичный вывод, как показано ниже — служба BIND ‘named’ включена и в настоящее время работает.

verify 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

Вывод:

setup firewalld

На данный момент вы завершили настройку 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;  
        };

Сохраните файл и выйдите из редактора, когда закончите.

named.conf file

С этой конфигурацией вы настроите 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‘.

zones list

Далее создайте новую конфигурацию 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’.

zones nameserver

Далее вы начнете настраивать обратный 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 записи такие же, как описано выше.

zones reverse dns

На данный момент вы создали две конфигурации зон для домена ‘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-checkconf
sudo 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, вы получите вывод, похожий на следующий скриншот.

setup master bind dns server

Наконец, выполните следующую утилиту команды systemctl, чтобы перезапустить службу BIND ‘named’ и применить изменения. Затем проверьте статус службы BIND, чтобы убедиться, что служба работает.

sudo systemctl restart named  
sudo systemctl status named

Вы получите вывод, похожий на следующий — служба BIND ‘named‘ работает, и вы завершили конфигурацию Master BIND.

restart verify master

На следующем этапе вы настроите сервер 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 slave dns bind

Теперь добавьте следующую строку в конец файла ‘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.

zones settings

Далее выполните следующую утилиту команды ‘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.

check named

На данный момент вы завершили установку BIND DNS с архитектурой Master-Slave. Теперь вы готовы начать тестирование с клиентской машины.

Тестирование с клиента

В этом примере используется система Debian в качестве клиентской машины, поэтому установите некоторые пакеты ниже через APT перед началом.

sudo apt install dnsutils bind9-utils

Введите y, когда вас попросят подтвердить, и нажмите ENTER, чтобы продолжить.

install dnsutils

Далее выполните следующую команду, чтобы удалить файл ссылки по умолчанию “/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.local
dig mail.howtoforge.local +short  
dig mail.howtoforge.local

Проверка доменного имени howtoforge.local.

verify domain

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

verify domain name

Далее выполните команду dig ниже, чтобы проверить обработчик почты для доменного имени “howtoforge.local“. И вы должны получить вывод, что “mail.howtoforge.local“ обрабатывает почту для основного домена “howtoforge.local“.

dig howtoforge.local MX +short  
dig howtoforge.local MX

verify mx records

Вы можете проверить конфигурацию обратной зоны для вашего доменного имени с помощью команды 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

verify nslookup

На данный момент вы завершили установку DNS-сервера BIND с архитектурой Master-Slave на Rocky Linux. Вы также узнали, как тестировать DNS-сервер с помощью различных утилит команд, таких как dig и nslookup.

Заключение

Поздравляем! На протяжении этого учебника вы узнали об установке и конфигурации DNS-сервера BIND на серверах Rocky Linux 9. Вы успешно настроили сервер BIND DNS Master-Slave, используя два разных сервера Rocky Linux. Также вы узнали основные команды Dig и Nslookup для проверки и подтверждения записей и конфигурации DNS.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.