Raspberry Pi に bind9 を導入
ラズパイ自宅サーバに自宅からもホスト名でアクセスできるように bind9 を導入した。
インストール
$ sudo apt-get install bind9
設定
内向き DNS であることを意識しながら named.conf.options と named.conf.local をいじる。
named.conf.options
$ sudo nano /etc/bind/named.conf.options $ cat /etc/bind/named.conf.options acl localnet { 127.0.0.1; 192.168.1.0/24; }; options { directory "/var/cache/bind"; allow-query { localnet; }; allow-transfer { none; }; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 192.168.1.1; }; forward only; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-enable no; dnssec-validation no; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
はじめ dnssec 周りの設定はデフォルトの
dnssec-validation auto;
にしていたが syslog に
error (broken trust chain) resolving 'www.google.co.jp/A/IN'
みたいなログが大量に吐かれて logwatch が大変なことになるので dnssec は無効にした。
named.conf.local
$ sudo nano /etc/bind/named.conf.local $ cat /etc/bind/named.conf.local // // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "hoge.fuga" { type master; file "hoge.fuga.zone"; }; zone "1.168.192.in-addr.arpa" { type master; file "hoge.fuga.rev"; };
ゾーンファイル
正引き用
$ sudo nano /var/cache/bind/hoge.fuga.zone $ cat /var/cache/bind/hoge.fuga.zone $TTL 86400 @ IN SOA ns.hoge.fuga. root.hoge.fuga. ( 2016071805; 3600; 900; 604800; 86400; ) IN NS hoge.fuga.; @ IN A 192.168.1.3; * IN A 192.168.1.3;
逆引き用
$ sudo nano /var/cache/bind/hoge.fuga.rev $ cat /var/cache/bind/hoge.fuga.rev $TTL 86400 @ IN SOA ns.hoge.fuga. root.hoge.fuga. ( 2016071805; 3600; 900; 604800; 86400; ) IN NS hoge.fuga.; 3 IN PTR hoge.fuga.;
文法チェック
$ named-checkconf /etc/bind/named.conf
何も出なければ OK らしい。
$ named-checkzone hoge.fuga /etc/bind/hoge.fuga.zone zone hoge.fuga/IN: loaded serial 2016071805 OK $ named-checkzone 3.1.168.192.in-addr-arpa /etc/bind/hoge.fuga.zone zone 3.1.168.192.in-addr.arpa/IN: loaded serial 2016071805 OK
OK と言われたので OK 。
ufw
私は ufw の設定を忘れて時間を溶かした。
$ sudo ufw status $ sudo ufw allow 53/tcp $ sudo ufw allow 53/udp
反映
$ sudo service bind9 restart
あと、ルーターなりパソコンなりの設定をいじってラズパイサーバに DNS を聞きに行くよう設定する必要がある。
確認
dig で確認する。
正引き
$ dig hoge.fuga ; <<>> DiG 9.9.5-9+deb8u6-Raspbian <<>> hoge.fuga ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16249 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;hoge.fuga. IN A ;; ANSWER SECTION: hoge.fuga. 86400 IN A 192.168.1.3 ;; AUTHORITY SECTION: hoge.fuga. 86400 IN NS hoge.fuga. ;; Query time: 2 msec ;; SERVER: 192.168.1.3#53(192.168.1.3) ;; WHEN: Tue Jul 19 02:48:48 JST 2016 ;; MSG SIZE rcvd: 72
逆引き
$ dig -x 192.168.1.3 ; <<>> DiG 9.9.5-9+deb8u6-Raspbian <<>> -x 192.168.1.3 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16036 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;3.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 3.1.168.192.in-addr.arpa. 86400 IN PTR hoge.fuga. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS hoge.fuga. ;; ADDITIONAL SECTION: hoge.fuga. 86400 IN A 192.168.1.3 ;; Query time: 2 msec ;; SERVER: 192.168.1.3#53(192.168.1.3) ;; WHEN: Tue Jul 19 02:49:27 JST 2016 ;; MSG SIZE rcvd: 111
ちゃんと引けている。
ところで
ラズパイのブート直後、 bind9 は起動しているのだが1回 service を restart するまでちゃんと引けない。 心当たりのある人は教えてください。