6.12 Встановлення DNS-сервера на прикладі BIND9

TheHost DNS Banner

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

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

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

У цьому посібнику ми розглянемо процес встановлення та базового налаштування BIND9 на чистому сервері Ubuntu 22.04. Також актуальна для Ubuntu 16.04, Ubuntu 18.04, Ubuntu 20.04 та Ubuntu 24.04. Для встановлення потрібно root.

Оновлення системи та встановлення сервісу

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

sudo apt update && sudo apt upgrade -y

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

sudo apt install bind9 bind9utils bind9-doc -y

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

sudo systemctl status bind9

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

sudo systemctl start bind9

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

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

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

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

Перезапуск сервісу

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

sudo systemctl restart bind9

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

sudo systemctl status bind9

Налаштування DNS-конфігурації домену

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

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

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

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

Пояснення:

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

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

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-записами за допомогою інструкції.

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

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

sudo named-checkconf

Перевірте файл конфігурації:

sudo named-checkzone example.com /etc/bind/zones/db.example.com

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

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

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

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

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

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

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

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. на необхідні Вам значення.

Перевірити файл конфігурації можна наступним чином:

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

Кінцевий тест

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

dig @127.0.0.1 example.com

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

dig @127.0.0.1 -x 127.0.0.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 працює успішно, Вам все ще необхідно виконати алгоритм прив’язки, описаний у наступній статті.

Після виконання алгоритму дій, описаного в статті, панель управління віртуальним сервером зможе синхронізувати актуальні записи доменів зроблені локально на Вашому VPS та транслювати їх на наші NS. У самій панелі успішно припаркований домен буде виглядати так:

Прив'язка до NS, VM-CLOUD