NSD це демон сервера імен, є авторитетним сервером імен DNS. Він був розроблений для роботи в середовищах, де швидкість, надійність, стабільність і безпека мають велике значення.
NSD це швидкий DNS, який може обслуговувати мільйони запитів на секунду. Це робить сервер імен ідеальним для впровадження домену верхнього рівня, кореневих серверів DNS і для тих, хто потребує швидкого й оптимізованого авторитетного сервера імен. Наразі три кореневі сервери DNS і багато реєстрів доменів верхнього рівня використовують NSD як частину своєї серверної реалізації. NSD не реалізував рекурсивне кешування.
Розглянемо приклад інсталяції та налаштування NSD4 на Centos7. Для прикладу, я замовив тестовий VDS на у провайдера Ukrnames.
У прикладі, 127.0.0.2 – це мастер, 127.0.0.1 – слейв який ми налаштоваємо
Завантажуємо та розпаковуємо NSD4:
wget https://www.nlnetlabs.nl/downloads/nsd/nsd-4.6.0.tar.gz
tar xzf nsd-4.6.0.tar.gz
cd /nsd-4.6.0
Ставимо gcc, libevent-devel, openssl-devel:
yum -y install gcc libevent-devel openssl-devel
Збираємо:
./configure
make
make install
Переходимо в директорію NSD та копіюємо файл конфігурації:
cd /etc/nsd
cp nsd.conf.sample nsd.conf
Відкриваємо файл конфігурації:
nano /etc/nsd/nsd.conf
server:
ip-address: 0.0.0.0
do-ip4: yes
do-ip6: no
port: 53
verbosity: 2
username: nsd
logfile: «/var/log/nsd.log»
pidfile: «/var/run/nsd/nsd.pid»
remote-control:
control-enable: yes
control-interface: 127.0.0.1
zone:
name: «example.com»
zonefile: «/etc/nsd/slave/db.example.com»
allow-notify: 127.0.0.2 NOKEY
allow-notify: 127.0.0.1 NOKEY
request-xfr: 127.0.0.2 NOKEY
Ствоюємо директорію для зберігання файлів зони:
mkdir -p /etc/nsd/slave
Створюємо користувача та даємо йому права:
groupadd -g 5252 nsd
useradd -M -d /etc/nsd -s /sbin/nologin -g nsd -u 5252 nsd
Даємо права на директорію для користувача nsd:
chown -R nsd:nsd /etc/nsd
Генеруємо ключі для керування nsd:
nsd-control-setup
Створюємо директорію для файла-процессу nsd та даємо права:
mkdir -p /var/run/nsd/
chown -R nsd:nsd /var/run/nsd/
chown -R nsd:nsd /var/db/nsd/
Створюємо сервіс:
nano /etc/systemd/system/nsd.service
[Unit]
Description=NSD DNS Server
After=syslog.target network.target
[Service]
Type=forking
PIDFile=/var/run/nsd/nsd.pid
ExecStartPre=/usr/bin/mkdir -p /var/run/nsd/
ExecStartPre=/usr/bin/chown -R nsd:nsd /var/run/nsd/
ExecStart=/usr/local/sbin/nsd-control -c /etc/nsd/nsd.conf start
ExecReload=/usr/local/sbin/nsd-control -c /etc/nsd/nsd.conf write
ExecReload=/usr/local/sbin/nsd-control -c /etc/nsd/nsd.conf reconfig
ExecStop=/usr/local/sbin/nsd-control -c /etc/nsd/nsd.conf write
ExecStop=/usr/local/sbin/nsd-control -c /etc/nsd/nsd.conf stop
ExecStopPost=/usr/bin/rm -rf /var/run/nsd
[Install]
WantedBy=multi-user.target
Зберігаємо.
Перевірямо стан:
systemctl status nsd
Має повернути:
nsd.service — NSD DNS Server
Loaded: loaded (/etc/systemd/system/nsd.service; disabled)
Active: inactive (dead)
Активуємо сервіс:
systemctl enable nsd
ln -s ‘/etc/systemd/system/nsd.service’ ‘/etc/systemd/system/multi-user.target.wants/nsd.service’
Перезавантажуємо сервер, щоб перевірити робору nsd після рестарту:
systemctl reboot
Основні команди nsd якими я користуюся:
nsd-control status
nsd-control stop
nsd-control start
nsd-control reload
Детальний опис команд можно прочитати тут