🦔
いまさらながら djbdns から NSD に乗り換えた
djbdns というか tinydns です。
djbdns はおもに tinydns (コンテンツサーバー) と dnscache (キャッシュサーバー)で構成されてますが、うちでは tinydns のみ使ってました。弊ドメインでの使い方では tinydns で困ってはいなかったんだけど、2020 年にもなってなー、ということで NSD に乗り換えてみた。なぜ BIND ではなく NSD なのかというと、せっかくだから。
以前はウェブサーバーやメールサーバーを動かしていたけど、現在はウェブサーバーのみ。普通に使ってるだけです。
環境
NetBSD 9.1
現状確認
tinydns での DNS 設定を確認しときます。
$ dig example.jp any
; <<>> DiG 9.16.1-Ubuntu <<>> example.jp any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56353
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;example.jp. IN ANY
;; ANSWER SECTION:
example.jp. 86400 IN A xxx.xxx.xxx.xxx
example.jp. 86400 IN MX 0 host1.example.jp.
example.jp. 2560 IN SOA ns.example.jp. miwarin.example.jp. 1467441028 16384 2048 1048576 86400
example.jp. 4706 IN NS ns.example.com.
example.jp. 4706 IN NS ns.example.jp.
;; Query time: 48 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: 月 11月 09 22:44:49 JST 2020
;; MSG SIZE rcvd: 169
nsd をインストールする
pkgsrc で
% cd /usr/pkgsrc/net/nsd
% sudo make install
:
nsd-4.3.2: copying /usr/pkg/share/examples/nsd/nsd.conf to /usr/pkg/etc/nsd/nsd.conf
===========================================================================
The following files should be created for nsd-4.3.2:
/etc/rc.d/nlnsd (m=0755)
[/usr/pkg/share/examples/rc.d/nlnsd]
===========================================================================
===========================================================================
nsd の設定を書く
nsd/Makefile の configure でいろいろデフォルトが設定されているので nsd.conf は最低限だけ。汎用性を上げるなら設定は nsd.conf に明記すべきかと思いますがー。
/usr/pkg/etc/nsd/nsd.conf はこんだけ
server:
logfile: "/var/log/nsd.log"
zone:
name: example.jp
zonefile: /usr/pkg/etc/nsd/example.jp.zone
文法などをチェックします。
% nsd-checkconf -v /usr/pkg/etc/nsd/nsd.conf
# Read file /usr/pkg/etc/nsd/nsd.conf: 1 patterns, 1 fixed-zones, 0 keys.
# Config settings.
server:
debug-mode: no
ip-transparent: no
ip-freebind: no
reuseport: no
do-ip4: yes
do-ip6: yes
send-buffer-size: 0
receive-buffer-size: 0
hide-version: no
hide-identity: no
drop-updates: no
tcp-reject-overflow: no
database: "/var/nsd/nsd.db"
#identity:
#version:
#nsid:
logfile: "/var/log/nsd.log"
log-only-syslog: no
server-count: 1
tcp-count: 100
tcp-query-count: 0
tcp-timeout: 120
tcp-mss: 0
outgoing-tcp-mss: 0
ipv4-edns-size: 4096
ipv6-edns-size: 4096
pidfile: "/var/run/nsd/nsd.pid"
port: "53"
statistics: 0
#chroot:
username: "nsd"
zonesdir: "/usr/pkg/etc/nsd"
xfrdfile: "/var/nsd/nsd-xfrd.state"
zonelistfile: "/var/nsd/zone.list"
xfrdir: "/tmp"
xfrd-reload-timeout: 1
log-time-ascii: yes
round-robin: no
minimal-responses: no
confine-to-zone: no
refuse-any: no
verbosity: 0
zonefiles-check: yes
zonefiles-write: 0
#tls-service-key:
#tls-service-pem:
#tls-service-ocsp:
tls-port: "853"
remote-control:
control-enable: no
control-port: 8952
server-key-file: "/usr/pkg/etc/nsd/nsd_server.key"
server-cert-file: "/usr/pkg/etc/nsd/nsd_server.pem"
control-key-file: "/usr/pkg/etc/nsd/nsd_control.key"
control-cert-file: "/usr/pkg/etc/nsd/nsd_control.pem"
zone:
name: "example.jp"
zonefile: "/usr/pkg/etc/nsd/example.jp.zone"
zone ファイルを書きます。
/usr/pkg/etc/nsd/example.jp.zone
$TTL 3600
$ORIGIN example.jp.
@ IN SOA ns miwarin.example.jp. (
202011121048
16384
2048
1048576
86400
)
IN NS ns
IN NS ns.example.com.
IN MX host1
IN A xxx.xxx.xxx.xxx
host1 IN A xxx.xxx.xxx.xxx
www IN A xxx.xxx.xxx.xxx
mail IN A xxx.xxx.xxx.xxx
ns IN A xxx.xxx.xxx.xxx
文法チェックなどします
% nsd-checkzone example.jp. /usr/pkg/etc/nsd/example.jp.zone
zone example.jp. is ok
起動
rc ファイルをコピーしまうす。
% sudo cp /usr/pkg/share/examples/rc.d/nlnsd /etc/rc.d/
tinydns を止めて nsd を起動します。
% sudo /etc/rc.d/tinydns onestop
Stopping tinydns.
% sudo /etc/rc.d/nlnsd onestart
Starting nlnsd.
以上
Discussion