
Как настроить Частные DNS — сервера с BIND на Ubuntu 16.04. BIND (Berkeley Internet Name Domain) является наиболее широко используемым программным обеспечением DNS через Интернет. Пакет BIND доступен для всех дистрибутивов Linux, что делает установку легко и просто. В сегодняшней статье мы покажем вам, как установить, настроить и управлять BIND 9 в качестве частного сервера DNS на Ubuntu 16.04 VPS, в несколько шагов.
Требования:
- Два сервера (NS1 и NS2), подключенный к частной сети
- В этой статье мы будем использовать подсети 10.35.0.0/16
- DNS-клиенты, которые будут подключаться к вашим DNS-серверам
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.1557. Создание файла обратной зоны
Зададим записи 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.1558. Проверьте файлы конфигурации
Используйте следующую команду, чтобы проверить синтаксис конфигурации всех файлов 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 имен выполните следующие действия:
- Создание записи A в файле передней зоны для хоста и увеличение значения последовательных переменных.
- Создание записи PTR в обратном файле зоны для хоста и увеличение значения последовательных переменных.
- Добавить частного IP-адреса хоста в доверенном ACL в named.conf.options.
- Обновить BIND с помощью следующей команды: sudo service bind9 reload
На сервере ns2 имен выполните следующие действия:
- Добавить частный IP-адрес хоста в доверенном ACL в named.conf.options.
- Обновить BIND с помощью следующей команды: sudo service bind9 reload
На хост-компьютере выполните следующие действия:
- Отредактируйте /etc/resolv.conf и измените сервер имен для вашего DNS-серверов.
- Используйте nslookup, чтобы проверить, что хост запрашивает DNS-серверы.
Удаление существующего хоста из ваших DNS-серверов
Если вы хотите удалить узел из ваших DNS-серверов, просто отмените шаги, описанные выше.
[gn_box title=»Примечание:» box_color=»#91b5ff»]Пожалуйста, замените имя и IP-адрес, используемые в данном руководстве на имена и IP-адреа хостов в вашей собственной частной сети.[/gn_box]Редактор: AndreyEx
Поделиться в соц. сетях: