Как настроить Частные DNS – сервера с BIND на Ubuntu 16.04. BIND (Berkeley Internet Name Domain) является наиболее широко используемым программным обеспечением DNS через Интернет. Пакет BIND доступен для всех дистрибутивов Linux, что делает установку легко и просто. В сегодняшней статье мы покажем вам, как установить, настроить и управлять BIND 9 в качестве частного сервера DNS на Ubuntu 16.04 VPS, в несколько шагов.
Начните с обновления пакетов на обоих серверах:
# sudo apt-get update
# sudo apt-get install bind9 bind9utils
Установка 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.
Отредактируйте файл 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; };
Затем мы добавим несколько параметров конфигурации для включения рекурсивных запросов на нашем 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 для каждой подсети.
Теперь мы создадим каталог, где мы будем хранить наши файлы зоны:
# 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
Зададим записи 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
Используйте следующую команду, чтобы проверить синтаксис конфигурации всех файлов 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
Настройка вторичного сервера 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.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-сервера, просто выполните следующие действия:
На сервере ns1 имен выполните следующие действия:
На сервере ns2 имен выполните следующие действия:
На хост-компьютере выполните следующие действия:
Если вы хотите удалить узел из ваших DNS-серверов, просто отмените шаги, описанные выше.