権威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