Поиск по сайту:

Как настроить DNS-сервер с помощью BIND в Ubuntu 22.04


На этой странице

  1. Предпосылки
  2. Настройка FQDN (полное доменное имя)
  3. Установка пакетов BIND
  4. Настройка мастера BIND
  5. Настройка зон
  6. Настройка подчиненного устройства BIND
  7. Проверка DNS-сервера с клиентского компьютера
  8. Заключение

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 на сервер Ubuntu 22.04. В этом руководстве показано, как настроить установку DNS-сервера Master-Slave BIND с использованием двух серверов Ubuntu.

Предпосылки

Прежде чем приступить к работе с этим руководством, у вас должны быть следующие требования:

  • Два сервера Ubuntu 22.04.
  • Пользователь без полномочий root с правами root/администратора.

Настройка FQDN (полное доменное имя)

Прежде чем приступить к установке пакетов BIND, вы должны убедиться, что имя хоста и полное доменное имя ваших серверов указаны правильно. В этой демонстрации мы будем использовать два сервера Ubuntu со следующими деталями:

Hostname    IP Address      FQDN                Used As
---------------------------------------------------------
ns1         192.168.5.21    ns1.hwdomain.io     BIND Master
ns2         192.168.5.22    ns2.hwdomain.io     BIND Slave

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

Настройте полное доменное имя на сервере \ns1\.

sudo hostnamectl set-hostname ns1.hwdomain.io

Настройте полное доменное имя на сервере \ns2\.

sudo hostnamectl set-hostname ns2.hwdomain.io

Затем отредактируйте файл \/etc/hosts\, используя следующую команду.

sudo nano /etc/hosts

Добавьте следующую конфигурацию на каждый сервер.

192.168.5.21 ns1.hwdomain.io ns1
192.168.5.22 ns2.hwdomain.io ns2

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

Наконец, проверьте и подтвердите полное доменное имя на каждом сервере, используя следующую команду. На сервере \ns1\ вы получите полное доменное имя как \ns1.hwdomain.io\, а на сервере \ns2\ вы получите вывод \ns2.hwdomain.io\.

sudo hostname -f

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

Пакеты привязки доступны по умолчанию в репозитории сервера Ubuntu. Теперь вы можете легко установить Bind с помощью команды apt как на серверах ns1, так и на серверах ns2.

Запустите команду apt ниже, чтобы обновить репозитории Ubuntu.

sudo apt update

После этого установите пакеты Bind с помощью следующей команды. введите Y, чтобы подтвердить установку, и нажмите ENTER, чтобы продолжить. И начнется установка.

sudo apt install bind9 bind9utils bind9-doc dnsutils

После завершения установки Bind отредактируйте конфигурацию \/etc/default/named\ с помощью следующей команды.

sudo nano /etc/default/named

Строка \OPTIONS=\ позволяет настроить определенные параметры при работе службы BIND. В этой демонстрации вы будете запускать Bind только с IPv4, поэтому вам нужно будет указать строку \OPTIONS\, как показано ниже.

OPTIONS="-u bind -4"

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

Теперь выполните приведенную ниже команду, чтобы перезапустить службу Bind \named\. Затем проверьте и проверьте состояние службы BIND. Вы должны увидеть, что служба Bind \named\ запущена на обоих серверах.

sudo systemctl restart named
sudo systemctl status named

Настройка мастера BIND

После установки пакетов BIND на обоих серверах \ns1\ и \ns2\ вы будете настраивать DNS-сервер BIND. вы будете настраивать сервер \ns1\ в качестве Мастера DNS-сервера BIND. Вы можете запустить BIND на одном сервере, но рекомендуется использовать несколько серверов для настройки DNS-сервера высокой доступности.

Вернитесь к терминальному сеансу сервера \ns1\.

Выполните приведенную ниже команду, чтобы отредактировать файл конфигурации \/etc/bind/named.conf.options\.

sudo nano /etc/bind/named.conf.options

Добавьте следующую конфигурацию в файл вверху строки перед строкой \options {....};\.

С этой конфигурацией вы будете создавать ACL (список управления доступом) с именем «доверенный», который включает все доверенные IP-адреса и сети в вашей среде. Также не забудьте добавить IP-адрес локального сервера \ns1\ и IP-адрес вторичного DNS-сервера \ns2\.

acl "trusted" {
        192.168.5.21;    # ns1 - or you can use localhost for ns1
        192.168.5.22;    # ns2
        192.168.5.0/24;  # trusted networks
};

Теперь внесите изменения в раздел \options {..};\, как показано ниже.

В следующем примере мы отключили поддержку IPv6, закомментировав параметр \listen-on-v6\, включив и разрешив рекурсию из \доверенного\ ACL и запустив службу BIND. на определенном \ns1\ IP-адресе \192.168.5.21\. Кроме того, мы отключаем передачу зоны по умолчанию и определяем определенные переадресаторы для DNS-сервера BIND в Google Public DNS \8.8.8.8\ и \8.8.4.4. \.

options {

        directory "/var/cache/bind";

        //listen-on-v6 { any; };        # disable bind on IPv6

        recursion yes;                 # enables resursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" - referred to ACL
        listen-on { 192.168.5.21; };   # ns1 IP address
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                1.1.1.1;
        };
};

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

Наконец, выполните следующую команду, чтобы проверить файл конфигурации \/etc/bind/named.conf.options\. Если выходного сообщения нет, то ваша конфигурация верна.

sudo named-checkconf /etc/bind/named.conf.options

Настройка зон

После настройки базовой конфигурации мастера BIND теперь вы будете настраивать зоны для своего доменного имени. В следующем примере мы будем использовать доменное имя \hwdomain.io\ с сервером имен \ns1.hwdomain.io\ и \ns2.hwdomain.io\.

Отредактируйте файл конфигурации \/etc/bind/named.local\, используя следующую команду.

sudo nano /etc/bind/named.conf.local

В этой конфигурации вы будете определять два файла зоны, прямую и обратную зону для вашего доменного имени. Зона Forward будет содержать конфигурацию того, где ваши доменные имена будут преобразованы в IP-адрес, а обратная зона будет преобразовывать IP-адрес в какое доменное имя.

В следующем примере мы определим прямую зону \/etc/bind/zones/db.hwdomain.io\ для домена \hwdomain.io\ и обратную зону \/etc/bind/zones/db.192.168.5\.

zone "hwdomain.io" {
    type master;
    file "/etc/bind/zones/db.hwdomain.io"; # zone file path
    allow-transfer { 192.168.5.22; };           # ns2 IP address - secondary DNS
};


zone "5.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192.168.5";  # subnet 192.168.5.0/24
    allow-transfer { 192.168.5.22; };  # ns2 private IP address - secondary DNS
};

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

Затем выполните следующую команду, чтобы создать новый каталог \/etc/bind/zones\, который будет использоваться для хранения файлов конфигурации зоны.

sudo mkdir -p /etc/bind/zones/

После этого скопируйте конфигурацию зоны переадресации по умолчанию \/etc/bind/zones/db.hwdomain.io\ и отредактируйте файл с помощью следующей команды.

sudo cp /etc/bind/db.local /etc/bind/zones/db.hwdomain.io
sudo nano /etc/bind/zones/db.hwdomain.io

Измените запись SOA по умолчанию на ваше доменное имя. Кроме того, вам нужно будет изменить «Серийный номер» в записях SOA каждый раз, когда вы вносите изменения в файл, и это должен быть тот же «Серийный номер» на вторичном/ведомом DNS-сервере.

Затем вы можете определить записи NS и записи A для вашего DNS-сервера. В этом примере сервер имен будет \ns1.hwdomain.io\ с записью A IP-адреса \192.168.5.21\ и \ns2.hwdomain.io\ с записью A вторичного DNS-сервера. IP-адрес \192.168.5.22\.

Наконец, вы можете определить другие доменные имена. В этом примере мы определим запись MX (обработчик почты) для домена \hwdomain.io\, который будет обрабатываться почтовым сервером \mail.hwdomain.io. Также мы определим имя домена\ hwdomain.io\, который будет разрешен на сервер с IP-адресом \192.168.5.100\ и поддомен для почтового сервера \mail.hwdomain.io\ на IP-адрес сервера \192.168.5.120 \.

;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; NS records for name servers
    IN      NS      ns1.hwdomain.io.
    IN      NS      ns2.hwdomain.io.

; A records for name servers
ns1.hwdomain.io.          IN      A       192.168.5.21
ns2.hwdomain.io.          IN      A       192.168.5.22

; Mail handler or MX record for the domain hwdomain.io
hwdomain.io.    IN     MX   10   mail.hwdomain.io.

; A records for domain names
hwdomain.io.            IN      A      192.168.5.100
mail.hwdomain.io.       IN      A      192.168.5.120

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

Затем скопируйте файл конфигурации обратной зоны по умолчанию в \/etc/bind/zones/db.192.168.5\ и отредактируйте новый файл с помощью следующей команды.

sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168.5
sudo nano /etc/bind/zones/db.192.168.5

Измените запись SOA по умолчанию, используя ваше доменное имя. Кроме того, не забудьте изменить «Серийный номер» внутри записи SOA.

Определите записи NS для ваших DNS-серверов. Это те же серверы имен, которые вы использовали в зоне переадресации.

Наконец, определите записи PTR для ваших доменных имен. Номер в записях PTR — это последний номер IP-адреса. В этом примере сервер имен \ns1.hwdomain.io\ преобразуется в IP-адрес \192.168.5.21\, так что теперь запись PTR будет \21\ и так далее для других доменных имен.

;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     ns1.hwdomain.io. admin.hwdomain.io. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;

; name servers - NS records
      IN      NS      ns1.hwdomain.io.
      IN      NS      ns2.hwdomain.io.

; PTR Records
21   IN      PTR     ns1.hwdomain.io.    ; 192.168.5.21
22   IN      PTR     ns2.hwdomain.io.    ; 192.168.5.22
100  IN      PTR     hwdomain.io.  ; 192.168.5.100
120  IN      PTR     mail.hwdomain.io.  ; 192.168.5.120

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

Теперь выполните следующую команду, чтобы проверить конфигурации BIND и убедиться, что вы не получили никаких сообщений об ошибках.

sudo named-checkconf

Затем выполните следующую команду, чтобы проверить и подтвердить каждый файл зоны, который вы только что создали, файл конфигурации прямой зоны и обратной зоны. Если в ваших файлах зон нет ошибок, вы должны увидеть выходное сообщение, такое как \OK\. Если ошибки нет, команда покажет вам, какая строка файла вызвала ошибку.

sudo named-checkzone hwdomain.io /etc/bind/zones/db.hwdomain.io
sudo named-checkzone 5.168.192.in-addr.arpa /etc/bind/zones/db.192.168.5

Чтобы завершить настройку BIND Master, выполните приведенную ниже команду, чтобы перезапустить службу BIND и применить новые изменения к внесенным вами конфигурациям.

sudo systemctl restart named

Настройка подчиненного устройства BIND

Теперь вы закончили настройку главного DNS-сервера BIND. Пришло время настроить сервер \ns2\ в качестве вторичного или вспомогательного DNS-сервера BIND.

Главный сервер хранит файлы зон, которые содержат конфигурацию DNS вашего домена и обрабатывают рекурсивные или повторяющиеся запросы. Вторичный/ведомый DNS-сервер временно хранит записи DNS в течение определенного периода времени, и эти записи DNS автоматически передаются с главного сервера BIND.

Теперь перейдите к сеансу терминала ns2 и начните настройку сервера ns2 в качестве вторичного/невольничьего сервера DNS BIND.

Выполните следующую команду, чтобы изменить файл конфигурации \/etc/bind/named.conf.options\

sudo nano /etc/bind/named.conf.options

В верхней части строки добавьте следующую конфигурацию. Это создаст тот же ACL (список управления доступом), что и на главном сервере.

acl "trusted" {
        192.168.5.21;    # ns1
        192.168.5.22;    # ns2 - or you can use localhost for ns2
        192.168.5.0/24;  # trusted networks
};

Внутри строки \options {...};\ вы можете изменить конфигурацию, как показано ниже. Эта конфигурация такая же, как и на главном DNS-сервере BIND, и единственное отличие здесь заключается в опции \listen-on\, которая указывается для IP-адреса сервера \ns2\.

options {

        directory "/var/cache/bind";

        //listen-on-v6 { any; };        # disable bind on IPv6

        recursion yes;                 # enables resursive queries
        allow-recursion { trusted; };  # allows recursive queries from "trusted" - referred to ACL
        listen-on { 192.168.5.22; };   # ns2 IP address
        allow-transfer { none; };      # disable zone transfers by default

        forwarders {
                8.8.8.8;
                1.1.1.1;
        };
};

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

Затем отредактируйте файл конфигурации \/etc/bind/named.conf.local\, используя следующую команду, чтобы настроить сервер \ns2\ в качестве вторичного/подчиненного DNS-сервера.

sudo nano /etc/bind/named.conf.local

Добавьте следующую конфигурацию в файл. Как вы можете видеть, были определены прямые и обратные зоны, но с «типом ведомого» и определением DNS-мастер-сервера «192.168.5.21». Вам не нужно создавать файл зоны, поскольку записи и данные DNS будут автоматически передаваться с главного сервера DNS и временно храниться в течение определенного периода времени на вторичном/подчиненном сервере DNS.

zone "hwdomain.io" {
    type slave;
    file "/etc/bind/zones/db.hwdomain.io";
    masters { 192.168.5.21; };           # ns1 IP address - master DNS
};


zone "5.168.192.in-addr.arpa" {
    type slave;
    file "/etc/bind/zones/db.192.168.5";
    masters { 192.168.5.21; };  # ns1 IP address - master DNS
};

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

Теперь выполните следующую команду, чтобы проверить конфигурацию BIND и убедиться, что все конфигурации верны. Затем вы можете перезапустить службу BIND «named» на сервере «ns2», чтобы применить новые изменения. И теперь вы закончили настройку сервера \ns2\ в качестве вторичного/ведомого DNS-сервера BIND.

sudo named-checkconf
sudo systemctl restart named

Наконец, выполните следующую команду, чтобы проверить службу BIND \named\ на сервере \ns2\. Убедитесь, что служба \named\ запущена.

sudo systemctl status named

Проверка DNS-сервера с клиентской машины

На клиентском компьютере существует несколько способов настройки преобразователя DNS. Вы можете настроить преобразователь DNS из NetworkManager или из конфигурации netplan. Но проще всего настроить резолвер DNS вручную через файл \/etc/resolv.conf\. Это позволяет настроить статический преобразователь DNS для клиентских машин.

Выполните следующую команду, чтобы удалить файл ссылки по умолчанию \/etc/resolv.conf\ и создать новый файл с помощью редактора nano.

sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.conf

Добавьте следующую конфигурацию в файл. В следующей конфигурации мы определяем три разных резолвера: главный DNS-сервер BIND, вторичный DNS-сервер BIND и общедоступный резолвер Google DNS. Когда клиентский компьютер запрашивает информацию о доменном имени, информация будет браться от преобразователя DNS сверху вниз.

nameserver 192.168.5.21
nameserver 192.168.5.22
nameserver 8.8.8.8
search hwdomain.io

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

Затем выполните приведенную ниже команду, чтобы установить какую-либо утилиту DNS на клиентский компьютер. В этом примере клиентский компьютер представляет собой систему Ubuntu, поэтому мы устанавливаем утилиту DNS с помощью команды apt, как показано ниже.

sudo apt install dnsutils bind9-utils

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

Запустите команду dig ниже, чтобы проверить доменное имя \hwdomain.io\ и \mail.hwdomain.io\. И вы должны увидеть, что \hwdomain.io\ разрешается в IP-адрес сервера \192.168.5.100\, а поддомен \mail.hwdomain.io\ обрабатывается IP-адресом сервера\192.168.5.120\.

dig hwdomain.io +short
dig hwdomain.io
dig mail.hwdomain.io +short
dig mail.hwdomain.io

Затем запустите команду dig, как показано ниже, чтобы проверить почтовый обработчик доменного имени \hwdomain.io\. И вы должны получить вывод, что mail.hwdomain.io обрабатывает почту для основного домена hwdomain.io.

dig hwdomain.io MX +short
dig hwdomain.io MX

Теперь вы также можете проверить конфигурацию обратной зоны для вашего доменного имени с помощью команды nslookup.

Запустите приведенную ниже команду nslookup, чтобы проверить обратный DNS для некоторых IP-адресов.

Теперь вы должны увидеть, что IP-адрес «192.168.5.21» обращен к серверу имен «ns1.hwdomain.io», IP-адрес «192.168.5.22» обращен к серверу имен «ns2». .hwdomain.io\, а IP-адрес \192.168.5.100\ заменяется на основное доменное имя \hwdomain.io\, и, наконец, IP-адрес \192.168.5.120\ заменяется на подчиненное -домен \mail.hwdomain.io.

nslookup 192.168.5.21
nslookup 192.168.5.22
nslookup 192.168.5.100
nslookup 192.168.5.120

Заключение

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