権威DNSに特化したサーバアプリケーションであり、オランダ企業とRIPE NCCの共同開発が行われている。
RFCに準拠した最低限の機能のみ実装している為、脆弱性が少なく堅牢で応答速度も早いのが特徴となる。
最低限の機能しか無い為、DNSクエリを取得出来ない欠点がある。
また、NSDをslaveとして構築した際にserialの比較を行わないケースがある。
DNSルートサーバでも採用されており、グローバルの稼働実績も多い。
BINDとNSDのハイブリッド構成を取って脆弱性対策をするケースも多い上、
BIND脱却としてオールNSD構成を取る日本企業も増えてきた。
OSはCentOSを利用。普通は出来ないDNSクエリ取得を実現すべくパッチを適用する為、
ソースコードからビルドを実施している。
OS : CentOS 8.2.2004 x86_64 NSD : NSD v4.3.3 user : nsd group : nsd chroot: /var/nsd/chroot
| 変更部分 |
# dnf install libevent-devel
# ./configure --prefix=/usr/local/nsd-4.3.3 --enable-pie \
--enable-relro-now --enable-ratelimit-default-is-off \
--disable-nsec3 --disable-radix-tree
# make
# make install
# vi /usr/lib/systemd/system/nsd.service
---
[Unit]
Description=Name Server Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/nsd
ExecStartPre=/usr/local/nsd/sbin/nsd-checkconf /etc/nsd/nsd.conf
ExecStart=/usr/local/nsd/sbin/nsd -d -c /etc/nsd/nsd.conf -t /var/nsd/chroot
ExecReload=/usr/local/nsd/sbin/nsd-control -c /etc/nsd/nsd.conf reload
ExecStop=/usr/local/nsd/sbin/nsd-control -c /etc/nsd/nsd.conf stop
Restart=on-abort
LimitNOFILE=1048576
LimitNPROC=1048576
[Install]
WantedBy=multi-user.target
# mkdir /var/nsd/chroot
# mkdir /var/nsd/chroot/tmp
# mkdir /var/nsd/chroot/etc/nsd
# mkdir /var/nsd/chroot/var/log
# mkdir /var/nsd/chroot/var/run
# mkdir /var/nsd/chroot/var/db/nsd
# ln -s /usr/local/nsd-4.3.3 /usr/local/nsd
# ln -s /var/nsd/chroot/etc/nsd /etc/nsd
# ln -s /var/nsd/chroot/var/log /var/log/nsd
# groupadd nsd
# useradd -g nsd -d /var/nsd -s /sbin/nologin nsd
# chown -R nsd.nsd /var/nsd/chroot/tmp
# chown -R nsd.nsd /var/nsd/chroot/var/run
# chown -R nsd.nsd /var/nsd/chroot/var/log
# /usr/local/nsd/sbin/nsd-control-setup
# cp -a /usr/local/nsd/etc/nsd/* /var/nsd/chroot/etc/nsd/
# vi /etc/logrotate.d/nsd
---
/var/log/nsd/*.log {
create 0644 nsd nsd
missingok
sharedscripts
postrotate
systemctl restart nsd > /dev/null 2>/dev/null || true
endscript
}
# vi /etc/nsd/nsd.conf
---
##
## Copyright (C) 2001-2020, NLnet Labs. All rights reserved.
##
## See LICENSE for the license.
##
server:
server-count: 1
ip-address: 192.168.0.1
ip-address: 203.0.113.1
ip-address: 2001:db8::203:0:113:1
port: 53
username: nsd
chroot: "/var/nsd/chroot"
zonesdir: "/var/nsd/chroot/etc/nsd"
zonelistfile: "/var/nsd/chroot/var/db/nsd/zone.list"
database: "/var/nsd/chroot/var/db/nsd/nsd.db"
logfile: "/var/nsd/chroot/var/log/nsd.log"
pidfile: "/var/nsd/chroot/var/run/nsd.pid"
xfrdfile: "/var/nsd/chroot/var/db/nsd/xfrd.state"
xfrdir: "/var/nsd/chroot/tmp"
version: "unknown"
identity: "unknown"
hide-version: yes
hide-identity: yes
remote-control:
control-enable: yes
control-interface: 127.0.0.1
control-port: 8952
server-key-file: "/var/nsd/chroot/etc/nsd/nsd_server.key"
server-cert-file: "/var/nsd/chroot/etc/nsd/nsd_server.pem"
control-key-file: "/var/nsd/chroot/etc/nsd/nsd_control.key"
control-cert-file: "/var/nsd/chroot/etc/nsd/nsd_control.pem"
zone:
name: "example.com"
zonefile: "master/example.com"
# notify: 192.168.0.3@53 NOKEY
# notify-retry: 5
# provide-xfr: 53 NOKEY
zone:
name: "example.net"
zonefile: "slave/example.net"
allow-notify: 192.168.0.2 NOKEY
request-xfr: 192.168.0.2@53 NOKEY
allow-axfr-fallback: yes
# outgoing-interface: 192.168.0.1
# systemctl enable nsd # systemctl start nsd # cat /var/log/nsd.log --- [2020-10-XX 13:48:52.753] nsd[100080]: notice: nsd starting (NSD 4.3.3) [2020-10-XX 13:48:52.813] nsd[100081]: notice: nsd started (NSD 4.3.3), pid 100080 [2020-10-XX 13:49:51.041] nsd[100083]: info: client 192.168.0.1: query example.com. IN A +E