🐈
FreeBSD で nsd (ルートサーバ) を立てる
この記事では、nsd をルートサーバとして動かすまでの作業内容を残しています。nsd をルートサーバとして動かすためには、--enable-root-server
オプションをつけてソースコードからコンパイルする必要があります。FreeBSD の ports を使ってコンパイルしていきます。
ホスト(FreeBSD)に nsd を立てる
[root@vitothon /jails/bin/shell]# cd /usr/ports/dns/nsd/
[root@vitothon /usr/ports/dns/nsd]# make install
ここで、ROOT_SERVER
の項目にチェックを入れるだけです。
コンパイルは数分で完了します。
次に nsd の conf を設定します。
[root@vitothon /usr/ports/dns/nsd]# cd /usr/local/etc/nsd/
[root@vitothon /usr/local/etc/nsd]# vi nsd.conf
server:
ip-address: 192.168.56.103
remote-control:
control-enable: yes
zone:
name: "."
zonefile: "root.zone"
zone:
name: "root-servers.shuma"
zonefile: "root-servers.shuma.zone"
ルートゾーンのゾーンファイルを用意します。
root.zone
. 86400 IN SOA a.root-servers.shuma admin.shuma 2023072401 1800 900 86400 1200
. 86400 IN NS a.root-servers.shuma
a.root-servers.shuma. 86400 IN A 192.168.56.103
hoge. 86400 IN NS ns1.hoge.
ns1.hoge. 86400 IN A 10.0.1.1
root-servers.shuma.zone
root-servers.shuma. 86400 IN SOA a.root-servers.shuma. admin.shuma 2023072401 1800 900 604800 1200
root-servers.shuma. 86400 IN NS a.root-servers.shuma.
a.root-servers.shuma. 86400 IN A 192.168.56.103
nsd のセットアップをします。
[root@vitothon /usr/local/etc/nsd]# nsd-control-setup
setup in directory /usr/local/etc/nsd
Generating RSA private key, 3072 bit long modulus (2 primes)
............................................................................................++++
...................++++
e is 65537 (0x010001)
Generating RSA private key, 3072 bit long modulus (2 primes)
.........................................................++++
...........++++
e is 65537 (0x010001)
Signature ok
subject=CN = nsd-control
Getting CA Private Key
removing artifacts
Setup success. Certificates created. Enable in nsd.conf file to use
ルートゾーン nsd を起動します。
[root@vitothon /usr/local/etc/nsd]# echo 'nsd_enable="YES"' >> /etc/rc.conf
[root@vitothon /usr/local/etc/nsd]# /usr/local/etc/rc.d/nsd start
Starting nsd.
[2023-07-25 00:50:18.077] nsd[21210]: notice: nsd starting (NSD 4.4.0)
問い合わせてみます。
[root@vitothon /usr/local/etc/nsd]# dig . soa @192.168.56.103
; <<>> DiG 9.18.16 <<>> . soa @192.168.56.103
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1744
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;. IN SOA
;; ANSWER SECTION:
. 86400 IN SOA a.root-servers.shuma. admin.shuma. 2023072401 1800 900 86400 1200
;; AUTHORITY SECTION:
. 86400 IN NS a.root-servers.shuma.
;; ADDITIONAL SECTION:
a.root-servers.shuma. 86400 IN A 192.168.56.103
;; Query time: 0 msec
;; SERVER: 192.168.56.103#53(192.168.56.103) (UDP)
;; WHEN: Tue Jul 25 00:52:32 JST 2023
;; MSG SIZE rcvd: 118
よさそうですね。次回は、jail
を使って仮想ネットワークを作り、ローカル環境のみで完結する(外に問い合わせない)名前解決をしたいと思います。
Discussion