Установите и настройте DNS-сервер в Ubuntu 16.04 LTS.
В этом подробном руководстве описывается, как установить и настроить DNS-сервер в 64-разрядной серверной версии Ubuntu 16.04 LTS. Как вы, возможно, уже знаете, DNS — это короткая форма Dmain name system, которая используется для преобразования имен хостов в IP-адреса и наоборот. Для целей данного руководства я буду использовать три системы: одну для основного DNS-сервера, другую для вторичного DNS и третью для DNS-клиента. Все системы работают под управлением операционной системы Ubuntu 16.04. Вот IP-адрес и имя хоста каждой системы.
Основной DNS-сервер:
- Операционная система: Ubuntu 16.04 LTS, 64-разрядный сервер.
- Имя хоста: pri.ostechnix.lan
- IP-адрес: 192.168.1.200/24.
Вторичный DNS-сервер:
- Операционная система: Ubuntu 16.04 LTS, 64-разрядный сервер.
- Имя хоста: sec.ostechnix.lan
- IP-адрес: 192.168.1.201/24.
DNS-клиент:
- Операционная система: Ubuntu 16.04 LTS, 64-разрядный сервер.
- Имя хоста: client.ostechnix.lan.
- IP-адрес: 192.168.1.202/24.
Давайте начнем.
Установите и настройте DNS-сервер в Ubuntu 16.04.
Я разделю это руководство на три части для простоты и легкого понимания.
- Установите и настройте сервер имен только для кэширования,
- Установите и настройте основной DNS-сервер или главный DNS-сервер.
- Установите и настройте дополнительный DNS-сервер или подчиненный DNS-сервер.
Давайте сделаем это шаг за шагом.
Часть 1. Установите и настройте сервер имен только для кэширования.
Убедитесь, что ваш сервер Ubuntu обновлен.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Установите BIND9
После обновления системы выполните следующую команду, чтобы установить пакеты BIND9, которые используются для настройки DNS-сервера.
sudo apt-get install bind9 bind9utils bind9-doc
Настройка кэширующего сервера имен
Кэширующий сервер имен сохраняет результаты DNS-запросов локально в течение определенного периода времени. Он снижает трафик DNS-сервера за счет сохранения запросов локально, что повышает производительность и эффективность DNS-сервера.
Чтобы настроить кэширующий сервер имен, отредактируйте файл /etc/bind/named.conf.options:
sudo nano /etc/bind/named.conf.options
Раскомментируйте следующие строки. Затем добавьте IP-адреса общедоступного DNS-сервера вашего интернет-провайдера или Google.
forwarders {
8.8.8.8;
};
Сохраните и закройте файл.
А затем перезапустите службуbind9, чтобы изменения вступили в силу.
sudo systemctl restart bind9
Мы успешно установили кэширующий сервер имен.
Тестирование кэширующего сервера имен
Теперь давайте проверим, работает он или нет, используя команду:
dig -x 127.0.0.1
Если вы видите что-то подобное ниже, поздравляем! Кэширующий сервер имен работает!
; <<>> DiG 9.10.3-P4-Ubuntu <<>> -x 127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22769
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;1.0.0.127.in-addr.arpa. IN PTR
;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 604800 IN PTR localhost.
;; AUTHORITY SECTION:
127.in-addr.arpa. 604800 IN NS localhost.
;; ADDITIONAL SECTION:
localhost. 604800 IN A 127.0.0.1
localhost. 604800 IN AAAA ::1
;; Query time: 0 msec
;; SERVER: 192.168.1.200#53(192.168.1.200)
;; WHEN: Tue Aug 23 15:53:59 IST 2016
;; MSG SIZE rcvd: 132
Часть 2. Установка и настройка основного DNS-сервера.
Убедитесь, что ваш сервер Ubuntu обновлен, используя следующие команды:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Установите BIND9
Запустите следующую команду, чтобы установить пакеты BIND9.
sudo apt-get install bind9 bind9utils bind9-doc
Настройка основного DNS-сервера
Весь файл конфигурации будет доступен в каталоге /etc/bind/.
Давайте отредактируем файл конфигурацииbind9.
Отредактируйте ’/etc/bind/named.conf’ с помощью любого редактора по вашему выбору:
sudo nano /etc/bind/named.conf
В этом файле должны быть следующие строки. Если строк нет, просто добавьте их.
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Сохраните изменения и выйдите из файла.
Нам нужно определить файлы прямой и обратной зон.
Для этого отредактируйте файл named.conf.local:
sudo nano /etc/bind/named.conf.local
Определите прямой и обратный файлы, как показано ниже.
zone "ostechnix.lan" {
type master;
file "/etc/bind/for.ostechnix.lan";
allow-transfer { 192.168.1.201; };
also-notify { 192.168.1.201; };
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/rev.ostechnix.lan";
allow-transfer { 192.168.1.201; };
also-notify { 192.168.1.201; };
};
Здесь for.ostechnix.lan – это файл зоны пересылки. rev.ostechnix.lan — файлы обратной зоны. А 192.168.1.202 – это IP-адрес вторичного DNS-сервера. Мы делаем это, потому что вторичный DNS начнет получать запросы, если основной сервер не работает.
Сохраните и закройте файл.
Давайте теперь создадим файлы зон, которые мы определили на предыдущем шаге.
Сначала давайте создадим файл прямой зоны, как показано ниже.
sudo nano /etc/bind/for.ostechnix.lan
Добавьте следующие строки:
$TTL 86400
@ IN SOA pri.ostechnix.lan. root.ostechnix.lan. (
2011071001 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS pri.ostechnix.lan.
@ IN NS sec.ostechnix.lan.
@ IN A 192.168.1.200
@ IN A 192.168.1.201
@ IN A 192.168.1.202
pri IN A 192.168.1.200
sec IN A 192.168.1.201
client IN A 192.168.1.202
Аналогичным образом вы можете добавить другие записи клиентов, как определено в приведенном выше файле.
Сохраните и закройте файл. Далее создайте обратную зону.
sudo nano /etc/bind/rev.ostechnix.lan
Добавьте следующие строки:
$TTL 86400
@ IN SOA pri.ostechnix.lan. root.ostechnix.lan. (
2011071002 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
@ IN NS pri.ostechnix.lan.
@ IN NS sec.ostechnix.lan.
@ IN PTR ostechnix.lan.
pri IN A 192.168.1.200
sec IN A 192.168.1.201
client IN A 192.168.1.202
200 IN PTR pri.ostechnix.lan.
201 IN PTR sec.ostechnix.lan.
202 IN PTR client.ostechnix.lan.
Сохраните и закройте файл.
Установите правильные разрешения и владельца для каталогаbind9.
sudo chmod -R 755 /etc/bind
sudo chown -R bind:bind /etc/bind
Далее нам необходимо проверить файлы конфигурации DNS и файлы зон.
Проверьте файлы конфигурации DNS с помощью команд:
sudo named-checkconf /etc/bind/named.conf
sudo named-checkconf /etc/bind/named.conf.local
Если приведенные выше команды ничего не возвращают, это означает, что конфигурация DNS действительна.
Далее проверяем файлы зоны командами:
sudo named-checkzone ostechnix.lan /etc/bind/for.ostechnix.lan
Пример вывода:
zone ostechnix.lan/IN: loaded serial 2011071001
OK
Проверьте файл обратной зоны:
sudo named-checkzone ostechnix.lan /etc/bind/rev.ostechnix.lan
Пример вывода:
zone ostechnix.lan/IN: loaded serial 2011071002
OK
Если вы получили результаты, как показано выше, то все хорошо.
Теперь пришло время проверить, работает ли основной DNS-сервер или нет.
Отредактируйте файл /etc/network/interfaces:
sudo vi /etc/network/interfaces
Добавьте IP-адрес DNS-сервера. В нашем случае IP DNS-сервера — это тот же IP-адрес самой машины.
dns-nameservers 192.168.1.200
Сохраните и закройте файл.
Наконец, перезапустите службу Bind9.
sudo systemctl restart bind9
Тестирование основного DNS-сервера
Проверьте DNS-сервер с помощью команд dig или nslookup.
dig pri.ostechnix.lan
Пример вывода:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> pri.ostechnix.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51989
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;pri.ostechnix.lan. IN A
;; ANSWER SECTION:
pri.ostechnix.lan. 86400 IN A 192.168.1.200
;; AUTHORITY SECTION:
ostechnix.lan. 86400 IN NS sec.ostechnix.lan.
ostechnix.lan. 86400 IN NS pri.ostechnix.lan.
;; ADDITIONAL SECTION:
sec.ostechnix.lan. 86400 IN A 192.168.1.201
;; Query time: 0 msec
;; SERVER: 192.168.1.200#53(192.168.1.200)
;; WHEN: Tue Aug 23 16:56:13 IST 2016
;; MSG SIZE rcvd: 110
Или используйте команду nslookup, как показано ниже:
nslookup ostechnix.lan
Пример вывода:
Server: 192.168.1.200
Address: 192.168.1.200#53
Name: ostechnix.lan
Address: 192.168.1.200
Name: ostechnix.lan
Address: 192.168.1.201
Name: ostechnix.lan
Address: 192.168.1.202
Если вы получили результаты, подобные приведенным выше, значит, основной DNS-сервер включен и работает отлично!
Часть 2. Установка и настройка вторичного DNS-сервера
Для настройки этого сервера вам понадобится отдельная система. Нам нужен вторичный DNS-сервер, потому что в случае каких-либо проблем с первичным DNS вторичный DNS-сервер все равно будет разрешать запросы.
Сначала обновите сервер с помощью команд:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Установите BIND9
Установите необходимые пакетыbind9:
sudo apt-get install bind9 bind9utils bind9-doc
Настройка вторичного DNS-сервера
Отредактируйте файл конфигурации связывания 9:
sudo nano /etc/bind/named.conf
Добавьте следующие строки, если их там нет.
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
Сохраните и закройте файл.
Далее нам нужно определить файлы зон.
Для этого отредактируйте файл named.conf.local:
sudo nano /etc/bind/named.conf.local
Добавьте или измените следующие строки. Замените файлы IP-адреса и зоны своими значениями.
zone "ostechnix.lan" {
type slave;
file "/var/cache/bind/for.ostechnix.lan";
masters { 192.168.5.200; };
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "/var/cache/bind/rev.ostechnix.lan";
masters { 192.168.5.200; };
};
Здесь 192.168.1.200 – IP-адрес основного DNS-сервера.
Обратите внимание, что путь к файлам зоны должен быть /var/cache/bind/ . Это связано с тем, что AppArmor по умолчанию разрешает доступ только на запись внутри него.
Затем установите правильное разрешение и владельца для каталога привязки.
sudo chmod -R 755 /etc/bind
sudo chown -R bind:bind /etc/bind
Затем отредактируйте файл конфигурации сети и добавьте IP-адрес основного и вторичного DNS-сервера.
sudo nano /etc/network/interfaces
[...]
dns-nameservers 192.168.1.200
dns-nameservers 192.168.1.201
Сохраните и закройте файл.
Наконец, перезагрузите систему, чтобы все изменения вступили в силу.
Тестирование вторичного DNS-сервера
Как я уже упоминал, мы используем команды «dig» или «nslookup» для тестирования DNS-сервера.
Давайте проверим вторичный DNS-сервер с помощью команды:
dig sec.ostechnix.lan
Пример вывода:
; <<>> DiG 9.10.3-P4-Ubuntu <<>> sec.ostechnix.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49308
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sec.ostechnix.lan. IN A
;; ANSWER SECTION:
sec.ostechnix.lan. 86400 IN A 192.168.1.201
;; AUTHORITY SECTION:
ostechnix.lan. 86400 IN NS sec.ostechnix.lan.
ostechnix.lan. 86400 IN NS pri.ostechnix.lan.
;; ADDITIONAL SECTION:
pri.ostechnix.lan. 86400 IN A 192.168.1.200
;; Query time: 2 msec
;; SERVER: 192.168.1.200#53(192.168.1.200)
;; WHEN: Tue Aug 23 18:19:47 IST 2016
;; MSG SIZE rcvd: 110
Аналогичным образом вы можете проверить основной DNS-сервер с помощью команды:
dig pri.ostechnix.lan
Или просто используйте команду nslookup, как показано ниже.
nslookup ostechnix.lan
Примечание Обратите внимание, что файлы зоны будут перенесены только в том случае, если Серийный номер на основном DNS-сервере превышает серийный номер вторичного DNS-сервера.
Настройка DNS-клиента
Измените файл конфигурации сети в клиентской системе:
sudo nano /etc/network/interfaces
Добавьте IP-адреса серверов имен.
[...]
nameserver 192.168.1.200
nameserver 192.168.1.201
Сохраните и закройте файл. Затем перезагрузите систему, чтобы изменения вступили в силу.
Проверьте DNS-серверы, используя любую из следующих команд:
dig pri.ostechnix.lan
dig sec.ostechnix.lan
dig client.ostechnix.lan
nslookup ostechnix.local
На этом этапе у вас будут рабочие первичный и вторичный DNS-серверы.
Это все на данный момент. Если вы найдете это руководство полезным, поделитесь им в социальных сетях и поддержите OSTechNix.
Ваше здоровье!