NSD Authoritative DNS
Альтернативою BIND, NSD (Name Server Daemon) є сучасний авторитетний сервер DNS, який підтримується NLnet Labs.
Передумови та припущення¶
- Сервер під керуванням Rocky Linux
- Можливість використання
firewalld
для створення правил брандмауера - Доменне ім’я або внутрішній рекурсивний DNS-сервер вказує на ваш авторитетний DNS-сервер
Вступ¶
Зовнішні або загальнодоступні DNS-сервери відображають імена хостів на IP-адреси, а у випадку записів PTR (відомих як «вказівник» або «зворотний»), відображають IP-адреси в імені хоста. Це важлива частина Інтернету. Завдяки цьому ваш поштовий сервер, веб-сервер, FTP-сервер або багато інших серверів і служб працюють належним чином, незалежно від того, де ви знаходитесь.
Встановлення та включення NSD¶
Спочатку встановіть EPEL:
dnf install epel-release
Далі встановіть NSD:
dnf install nsd
Налаштування NSD¶
Перш ніж вносити зміни до будь-якого конфігураційного файлу, скопіюйте оригінальний встановлений робочий файл nsd.conf
:
cp /etc/nsd/nsd.conf /etc/nsd/nsd.conf.orig
Це допоможе в майбутньому, якщо станеться введення помилок у файл конфігурації. Завжди варто зробити резервну копію перед внесенням змін.
Відредагуйте файл nsd.conf. Автор використовує vi, але ви можете замінити свій улюблений редактор командного рядка:
vi /etc/nsd/nsd.conf
Перейдіть униз і вставте наступне:
zone:
name: example.com
zonefile: /etc/nsd/example.com.zone
Замініть example.com
ім'ям домену, для якого ви запускаєте сервер імен.
Далі створіть файли зони:
vi /etc/nsd/example.com.zone
Файли зони DNS сумісні з BIND. У файл вставте:
$TTL 86400 ; How long should records last?
; $TTL used for all RRs without explicit TTL value
$ORIGIN example.com. ; Define our domain name
@ 1D IN SOA ns1.example.com. hostmaster.example.com. (
2024061301 ; serial
3h ; refresh duration
15 ; retry duration
1w ; expiry duration
3h ; nxdomain error ttl
)
IN NS ns1.example.com. ; in the domain
IN MX 10 mail.another.com. ; external mail provider
IN A 172.20.0.100 ; default A record
; server host definitions
ns1 IN A 172.20.0.100 ; name server definition
www IN A 172.20.0.101 ; web server definition
mail IN A 172.20.0.102 ; mail server definition
Якщо вам потрібна допомога з налаштуванням файлів зон у стилі BIND, Oracle має хороший вступ до файлів зон.
Збережіть зміни.
Включення NSD¶
Далі дозвольте порти DNS у firewalld
і ввімкніть NSD:
firewall-cmd --add-service=dns --zone=public
firewall-cmd --runtime-to-permanent
systemctl enable --now nsd
Перевірте дозвіл DNS за допомогою команди host
:
% host example.com 172.20.0.100
Using domain server:
Name: 172.20.0.100
Address: 172.20.0.100#53
Aliases:
example.com has address 172.20.0.100
example.com mail is handled by 10 mail.another.com.
%
Вторинний сервер DNS¶
Запуск одного або кількох вторинних авторитетних DNS-серверів зазвичай є нормою, якщо основний сервер вийде з ладу. Це особливо корисно, коли основний сервер не працює. NSD має функцію, що дозволяє синхронізувати DNS-записи з основного сервера на один або декілька резервних серверів.
Щоб увімкнути резервний сервер, згенеруйте ключі підпису в основній зоні:
nsd-control-setup
Вам потрібно буде скопіювати наступні файли на сервер резервного копіювання в каталог /etc/nsd/
:
nsd_control.key
nsd_control.pem
nsd_server.key
nsd_server.pem
На всіх DNS-серверах додайте наступне перед директивою zone:
:
remote-control:
control-enable: yes
control-interface: 0.0.0.0
control-port: 8952
server-key-file: "/etc/nsd/nsd_server.key"
server-cert-file: "/etc/nsd/nsd_server.pem"
control-key-file: "/etc/nsd/nsd_control.key"
control-cert-file: "/etc/nsd/nsd_control.pem"
Також увімкніть записи брандмауера:
firewall-cmd --zone=public --add-port=8952/tcp
firewall-cmd --runtime-to-permanent
На основному сервері змініть зону так, щоб вона відповідала наступному:
zone:
name: example.com
zonefile: /etc/nsd/example.com.zone
allow-notify: NS2_IP NOKEY
provide-xfr: NS2_IP NOKEY
outgoing-interface: NS1_IP
Замініть NS1_IP1
і NS2_IP2
загальнодоступними IP-адресами основного та додаткового серверів імен.
На вторинному сервері додайте зону:
zone:
name: fourplex.net
notify: NS1_IP NOKEY
request-xfr: NS1_IP NOKEY
outgoing-interface: NS2_IP
Замініть NS1_IP1
і NS2_IP2
загальнодоступними IP-адресами основного та додаткового серверів імен.
Перезапустіть NSD на обох серверах імен:
NS1# systemctl restart --now nsd
Щоб завантажити файл зони на вторинний сервер імен з основного:
nsd-control notify -s NS2_IP
Замініть NS2_IP2
загальнодоступними IP-адресами вторинного сервера імен.
Висновок¶
Більшість людей використовують сторонні служби для DNS. Однак є сценарії, коли бажано самостійно розміщувати DNS. Наприклад, телекомунікаційні, хостингові та соціальні медіа компанії розміщують багато записів DNS, де розміщені послуги є небажаними.
NSD є одним із багатьох інструментів з відкритим кодом, які роблять можливим розміщення DNS.
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova