ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как настроить Частные DNS-сервера с BIND на Ubuntu 16.04

Как настроить Частные DNS – сервера с BIND на Ubuntu 16.04. BIND (Berkeley Internet Name Domain) является наиболее широко используемым программным обеспечением DNS через Интернет. Пакет BIND доступен для всех дистрибутивов Linux, что делает установку легко и просто. В сегодняшней статье мы покажем вам, как установить, настроить и управлять BIND 9 в качестве частного сервера DNS на Ubuntu 16.04 VPS, в несколько шагов.

Требования:

1. Обновите оба сервера

Начните с обновления пакетов на обоих серверах:

# sudo apt-get update

2. Установите BIND на обоих серверах

# sudo apt-get install bind9 bind9utils

3. Установите BIND в режим IPv4

Установка BIND в режиме IPv4, мы сделаем это путем редактирования файла “/etc/default/bind9” и добавление «-4» к переменной OPTIONS:

# sudo nano /etc/default/bind9

 

Отредактированный файл должен выглядеть следующим образом:

# run resolvconf?
RESOLVCONF=no

# startup options for the server
OPTIONS="-4 -u bind"

 

Теперь давайте настроим ns1, как наш основной сервер DNS.

4. Настройка первичного сервера DNS

Отредактируйте файл named.conf.options:

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

 

В верхней части блока параметров добавьте новый блок с именем trust. Этот список позволит клиентам, указанным в нем, отправлять рекурсивные DNS-запросы на наш основной сервер:

acl "trusted" {
        10.35.30.13;  
        10.35.30.14;
        10.35.55.154;
        10.35.55.155;
};

5. Включить рекурсивные запросы на нашем ns1 сервере, и прослушайте сервер в нашей частной сети

Затем мы добавим несколько параметров конфигурации для включения рекурсивных запросов на нашем ns1 сервере и возможность сервера прослушивать нашу частную сеть, добавьте параметры конфигурации в каталоге “/var/cache/bind”, как в примере ниже:

options {
        directory "/var/cache/bind";

        recursion yes;
        allow-recursion { trusted; };
        listen-on { 10.35.30.13; };
        allow-transfer { none; };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
};

 

Если директива “listen-on-v6” присутствует в файле named.conf.options, удалите ее, так как мы хотим BIND слушать только на IPv4.
Теперь на ns1 откройте файл named.conf.local для редактирования:

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

 

Здесь мы собираемся добавить zone:

zone "test.example.ru" {
    type master;
    file "/etc/bind/zones/db.test.example.ru";
    allow-transfer { 10.35.30.14; };
};

 

Наша частная подсеть 10.35.0.0/16, поэтому мы добавим обратную zone со следующими строками:

zone "20.10.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.10.35";
    allow-transfer { 10.35.30.14; };
};

 

Если серверы находятся в нескольких частных подсетей на том же физическом месте, необходимо указать зону и создать отдельный файл zone для каждой подсети.

6. Создание файла обратной зоны

Теперь мы создадим каталог, где мы будем хранить наши файлы зоны:

# sudo mkdir /etc/bind/zones

 

Мы будем использовать пример файла db.local, чтобы сделать наш прямой файл zone, давайте скопируем файл первым:

# cd /etc/bind/zones
# sudo cp ../db.local ./db.test.example.ru

 

Теперь отредактируйте файл зоны, мы просто скопировали:

# sudo nano /etc/bind/zones/db.test.example.ru

 

Это должно выглядеть как на примере ниже:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.      ; delete this
@       IN      A       127.0.0.1       ; delete this
@       IN      AAAA    ::1             ; delete this

 

Теперь давайте отредактируем запись SOA. Заменим Localhost на доменное имя вашего Ns1 сервера, а затем заменим «root.localhost» на «admin.test.example.ru». Каждый раз, когда вы редактируете файл zone, увеличьте серийное значение перед перезапуском имени иначе привязка не будет применять изменение к zone, мы увеличим значение до “3”, это должно выглядеть примерно так:

@       IN      SOA     ns1.test.example.ru. admin.test.example.ru. (
                              3         ; Serial

 

Затем удалите последние три записи, помеченные как «delete this» после записи SOA.

Добавьте записи серверов имен в конце файла:

; name servers - NS records
    IN      NS      ns1.test.example.ru.
    IN      NS      ns2.test.example.ru.

 

После этого добавить записи для хостов, которые должны находиться в этой зоне. Это означает, что любой сервер, имя которого мы хотим закончить на «.test.example.ru»:

; name servers - A records
ns1.test.example.ru.          IN      A       10.35.30.13
ns2.test.example.ru.          IN      A       10.35.30.14

; 10.35.0.0/16 - A records
host1.test.example.ru.        IN      A      10.35.55.154
host2.test.example.ru.        IN      A      10.35.55.155

 

Файл db.test.example.ru должен выглядеть следующим образом:

$TTL    604800
@       IN      SOA     ns1.test.example.ru. admin.test.example.ru. (
                  3       ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
     IN      NS      ns1.test.example.ru.
     IN      NS      ns2.test.example.ru.

; name servers - A records
ns1.test.example.ru.          IN      A       10.35.30.13
ns2.test.example.ru.          IN      A       10.35.30.14

; 10.35.0.0/16 - A records
host1.test.example.ru.        IN      A      10.35.55.154
host2.test.example.ru.        IN      A      10.35.55.155

7. Создание файла обратной зоны

Зададим записи PTR для обратных DNS-запросов в файлах обратных зон. Когда сервер DNS получает запрос подстановок PTR для примера для IP: «10.35.55.154», он будет проверять обратный файл зоны для извлечения полного доменного имени IP-адреса, в нашем случае это будет «host1.test.example.ru».

Мы создадим обратную файл zone для каждой обратной зоны, указанной в файле named.conf.local, который мы создали для ns1. Мы будем использовать файл зоны db.127 как образец для того чтобы создать наш обратный файл zone:

# cd /etc/bind/zones
# sudo cp ../db.127 ./db.10.35

 

Отредактируйте файл обратной зоны, чтобы он соответствовал обратной зоне, определенной в named.conf.local:

# sudo nano /etc/bind/zones/db.10.35

 

Исходный файл должен выглядеть следующим образом:

$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.      ; delete this
1.0.0   IN      PTR     localhost.      ; delete this

 

Вы должны изменить запись SOA и увеличивать серийное значение. Это должно выглядеть примерно так:

@       IN      SOA     ns1.test.example.ru. admin.test.example.ru. (
                              3         ; Serial

 

Затем удалите последние три записи, помеченные «delete this» после записи SOA.

Добавьте записи серверов имен в конце файла:

; name servers - NS records
      IN      NS      ns1.test.example.ru.
      IN      NS      ns2.test.example.ru.

 

Теперь добавить ptr-записи для всех узлов, которые находятся в одной подсети в файл зоны, который вы создали. Он состоит из наших хостов, которые находятся в подсети 10.20.0.0/16. В первой колонке мы изменим порядок последние два октета IP-адреса узла, которые мы хотим добавить:

; PTR Records
13.30  IN      PTR     ns1.test.example.ru.    ; 10.35.30.13
14.30  IN      PTR     ns2.test.example.ru.    ; 10.35.30.14
154.55 IN      PTR     host1.test.example.ru.  ; 10.35.55.154
155.55 IN      PTR     host2.test.example.ru.  ; 10.35.55.155

 

Сохранить и выйти из обратного файла зоны.

Файл обратной zone «/etc/bind/zones/db.10.35» должен выглядеть следующим образом:

$TTL    604800
@       IN      SOA     test.example.ru. admin.test.example.ru. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; name servers
      IN      NS      ns1.test.example.ru.
      IN      NS      ns2.test.example.ru.

; PTR Records
13.30  IN      PTR     ns1.test.example.ru.    ; 10.35.30.13
14.30  IN      PTR     ns2.test.example.ru.    ; 10.35.30.14
154.55 IN      PTR     host1.test.example.ru.  ; 10.35.55.154
155.55 IN      PTR     host2.test.example.ru.  ; 10.35.55.155

8. Проверьте файлы конфигурации

Используйте следующую команду, чтобы проверить синтаксис конфигурации всех файлов named.conf, которые мы сконфигурировали:

# sudo named-checkconf

 

Если файлы конфигурации не имеют каких-либо проблем синтаксиса, вывод не будет содержать каких-либо сообщений об ошибках. Однако, если у вас есть проблемы с файлами конфигурации, сравните параметры в раздела  «Настройка основного DNS-сервера» с файлами, если у вас есть ошибки, сделайте правильные корректировки, и вы можете попробовать еще раз, выполнив команду named-checkconf.

named-checkconf может быть использован для проверки правильности конфигурации ваших файлов зон. Вы можете использовать следующую команду, чтобы проверить зону напрямую «test.example.ru»:

# sudo named-checkzone test.example.ru db.test.example.ru

 

И если вы хотите проверить конфигурацию обратной zone, выполните следующую команду:

# sudo named-checkzone 20.10.in-addr.arpa /etc/bind/zones/db.10.35

 

После того, как вы правильно настроили файлы конфигурации и zone, перезапустите службу BIND:

# sudo service bind9 restart

9. Настройка вторичного DNS-сервера

Настройка вторичного сервера DNS всегда хорошая идея, так как он будет служить в качестве перехода на другой ресурс и будет отвечать на запросы, если первичный сервер не отвечает на запросы.

На ns2, отредактировать файл named.conf.options:

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

 

В верхней части файла, добавьте ACL с частными IP-адресами для всех ваших доверенных серверов:

acl "trusted" {
        10.35.30.13;
        10.35.30.14;
        10.128.100.101;
        10.128.200.102;
};

 

Так же, как в файле named.conf.options для ns2, добавьте следующие строки в директиве каталог “/var/cache/bind”:

        recursion yes;
        allow-recursion { trusted; };
        listen-on { 10.35.30.13; };
        allow-transfer { none; };

        forwarders {
                8.8.8.8;
                8.8.4.4;
        };

 

Сохраните и закройте файл.

Теперь откройте файл named.conf.local для редактирования:

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

 

Теперь мы должны указать ведомые зону, соответствующие мастер-зоне на сервере DNS ns1. Директива мастера должна быть установлена на частный IP-адрес DNS Ns1 сервер:

zone "test.example.ru" {
    type slave;
    file "slaves/db.test.example.ru";
    masters { 10.35.30.13; };
};

zone "20.10.in-addr.arpa" {
    type slave;
    file "slaves/db.10.35";
    masters { 10.35.30.13; };
};

 

Теперь сохраните и закройте файл.

Используйте следующую команду, чтобы проверить синтаксис конфигурационных файлов:

# sudo named-checkconf

 

Затем перезапустить службу BIND:

# sudo service bind9 restart

10. Конфигурирование DNS-клиентов

Теперь настроим хосты в нашей 10.35.0.0/16 подсети использовать NS1 и NS2 сервера в качестве основных и вторичных серверов DNS. Это в значительной степени зависит от операционной системы, но для большинства дистрибутивов Linux настройки, которые должны быть изменены постоянно находиться в файле /etc/resolv.conf.

Как правило, на распределениях Ubuntu, Debian и CentOS просто отредактируйте файл /etc/resolv.conf, выполните следующую команду как root:

# nano /etc/resolv.conf

 

Затем замените существующие сервера имен на:

nameserver 10.35.30.13 #ns1
nameserver 10.35.30.14 #ns2

 

Теперь сохраните и закройте файл и клиент должен быть настроен на использование сервера имен NS1 и NS2.

Затем проверьте, как ваши клиенты могут отправлять запросы к DNS-серверам, которые вы только что настроили:

# nslookup host1.test.example.ru

 

Вывод этой команды должен быть следующим:

Output:
Server:     10.35.30.13
Address:    10.35.30.13#53

Name:   host1.test.example.ru
Address: 10.35.55.154

 

Вы также можете проверить обратный поиск, запрашивая DNS-сервер с IP-адресом хоста:

# nslookup 10.35.55.154

 

Вывод должен выглядеть следующим образом:

Output:
Server:     10.35.30.13
Address:    10.35.30.13#53

154.55.20.10.in-addr.arpa   name = host1.test.example.ru.

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

Добавление нового хоста в DNS-сервера

Если вам нужно добавить хост в DNS-сервера, просто выполните следующие действия:

На сервере ns1 имен выполните следующие действия:

На сервере ns2 имен выполните следующие действия:

На хост-компьютере выполните следующие действия:

Удаление существующего хоста из ваших DNS-серверов

Если вы хотите удалить узел из ваших DNS-серверов, просто отмените шаги, описанные выше.

Exit mobile version