6.11 Установка DNS-сервера на примере BIND9

TheHost DNS BIND Banner

BIND9 – це потужне та широко використовуване програмне забезпечення для DNS-серверів. Воно дозволяє керувати доменними іменами та їх дозволом до IP-адрес, що є ключовим елементом роботи інтернету.

Встановлення та налаштування DNS-сервера також є обов’язковою частиною для виконання прив’язки Вашого віртуального сервера до наших NS, щоб керувати записами домену безпосередньо на сервері все ще використовуючи наші NS навіть без панелі керування. Детальніше про сам процес в інструкції, про вимоги до налаштування у другому параграфі цієї статті.

Покрокова інструкція на прикладі Ubuntu 22

У цьому посібнику ми розглянемо процес встановлення та базового налаштування BIND9 на чистому сервері Ubuntu 22. Для встановлення потрібно root.

1. Оновіть систему:

sudo apt update && sudo apt upgrade -y

2. Встановіть BIND9 та необхідні утиліти:

sudo apt install bind9 bind9utils bind9-doc -y

Після цього переконайтеся, що служба BIND9 запущена:

sudo systemctl status bind9

Якщо служба не активна, запустіть її:

sudo systemctl start bind9

Налаштування конфігурації зони

3. Відкрийте основний файл конфігурації:

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

Додайте блок зони, вказавши Ваш домен та шлях до файлу зони:

zone "example.com" {
 type master;
 файл "/etc/bind/zones/db.example.com";
};

Пояснення:

  • example.com – ім’я Вашого домену.
  • type master вказує, що сервер є основним для цієї зони.
  • file вказує шлях до файлу, де зберігається інформація про зону.

4. Створіть папку для файлів зон (якщо її немає):

sudo mkdir -p /etc/bind/zones

Створіть файл зони:

sudo nano /etc/bind/zones/db.example.com

І заповніть його наступним чином:

$TTL 604800
@ IN SOA ns1.thehost.ua. admin.example.com. (
 2024101001; Serial
 604800; Refresh
 86400; Retry
 2419200; Expire
 604800); Negative Cache TTL

; Name servers
@ IN NS ns1.thehost.ua.
@ IN NS ns2.thehost.net.
@ IN NS ns3.thehost.biz.
@ IN NS ns4.thehost.pro.

; A records
example.com. IN A 192.0.2.1
www IN A 192.0.2.2

Замініть example.com., 192.0.2.1, та 192.0.2.2 на Ваш домен, та IP-адреси. Якщо Ви не використовуєте на сервері наші NS, також змініть їхній список і ns1.thehost.ua. у SOA-записі.

Порада: за потреби, можете відразу заповнити файл зони та іншими DNS-записами за допомогою інструкції.

Налаштування зворотної зони (PTR-запису)

Увага: розділ про налаштування PTR не є актуальним для будь-яких наших послуг і носить освітній характер. Якщо Ваша послуга розміщена у нас, керування PTR виконується за інструкцією.

Зворотна зона використовується для перетворення IP-адрес на імена доменів (PTR-записи). Це корисно для роботи з системами, яким необхідно переконатись у зворотній відповідності (наприклад, поштовими серверами).

5. У файлі /etc/bind/named.conf.local додайте блок:

zone "2.0.192.in-addr.arpa" {
 type master;
 файл "/etc/bind/zones/db.192.0.2";
};

6. Створіть файл зворотної зони:

sudo nano /etc/bind/zones/db.192.0.2

Заповніть його:

$TTL 604800
@ IN SOA ns1.example.com. admin.example.com. (
 2024101001; Serial
 604800; Refresh
 86400; Retry
 2419200; Expire
 604800); Negative Cache TTL

; Name servers
@ IN NS ns1.example.com.

; PTR records
0 IN PTR ns1.example.com.
1 IN PTR www.example.com.

Замініть www.example.com. та ns1.example.com. на необхідні Вам значення.

Перевірка конфігурації

7. Перевірте синтаксис конфігурації:

sudo named-checkconf

Перевірте зони:

sudo named-checkzone example.com /etc/bind/zones/db.example.com
sudo named-checkzone 2.0.192.in-addr.arpa /etc/bind/zones/db.192.0.2

Система сповістить Вас у разі наявності помилок у конфігурації.

Налаштування брандмауера

8. Відкрийте порт 53 для DNS-запитів:

Приклад для UFW
sudo ufw allow 53/tcp
sudo ufw allow 53/udp
Приклад для Iptables
iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT
iptables -I INPUT -p udp -m tcp --dport 53 -j ACCEPT

Врахуйте: процес відкриття портів може відрізнятися залежно від використовуваного брандмауера. Порти можуть бути закриті з боку провайдера послуг (у нас вони відкриті).

Перезапуск служби

9. Перезапустіть BIND9:

sudo systemctl restart bind9

Переконайтеся, що служба працює коректно за допомогою перевірки статусу:

sudo systemctl status bind9

Тестування

10. Перевірте дозвіл доменного імені:

dig @192.0.2.1 example.com

Перевірте запис PTR:

dig @192.0.2.1 -x 192.0.2.1

Прив’язка до наших NS на VPS

Наявність працюючого DNS-сервера на Вашому віртуальному сервері дозволяє прив’язати та синхронізувати його роботу з нашими NS.

Для виконання прив’язки від DNS-сервера потрібно дотриматися таких умов:

  • Наші неймсервера. Для виконання прив’язки у домену повинні бути вказані наші неймсервера у відповідних файлах конфігурації.
  • Директива allow-transfer. Директива allow-transfer у файлах конфігурації у файлі /etc/bind/named.conf.options (і у файлах зон) має бути НЕ вказана. Або, у крайньому випадку, зазначено так:
allow-transfer {
 91.223.180.14;
 46.4.57.177;
 176.111.63.45;
 94.130.133.155;
 2a0c:f00::1:14;
 2a01:4f8:140:14c8::7;
 2a01:4f8:13b:365b::155;
};

Що не рекомендується через малоймовірну, але можливу зміну списку IP-адрес наших NS.

  • Прив’язка в панелі VM-Cloud. Якщо вищезазначені умови дотримані та сервіс BIND працює успішно, Вам все ще необхідно виконати алгоритм прив’язки, описаний у наступній статті.