テストのDNSサーバ(BIND9)で遊んでいたのですが、先日、ゾーンファイルを編集してrndc reload
したにも関わらず、設定が反映されないという事象が発生しました。
最初はTTLが86400(=1日)だったのでそれのせいだと思って深く追求しなかったのですが、よくよく考えたらそれでもrndc reload
した時点で設定が反映されるはずだし…?と何かがおかしいことに気付きました。
シリアルの桁が足りなくて編集前より小さな値になっているとか、色々理由を考えたのですが……結果、非常に単純な凡ミスだったことが判明。
; zone list
www.example.com IN A xxx.xxx.xxx.xxx
test.example.com IN A xxx.xxx.xxx.xxx
new.example.com IN A xxx.xxx.xxx.xxx #20170805_added
該当ゾーンファイルは上記のような書き方をしていたのですが……ええ、おかしいですね。追加したレコードの行のコメントがシャープ(#)です。普通の設定ファイルは確かにシャープがコメントですが、BIND9はセミコロン(;)なのですよね……。久々にDNSを触ったせいでうっかりシャープでコメントを入れていたのでした。そのせいで「ゾーンファイルの文法がおかしい」とみなされ、設定が反映されなかったわけですね。
試しにとnamed-checkzone
でチェックをかけたら
/var/named/example.com:xx: ignoring out-of-zone data (new.example.com)
というようなエラーを吐いたので気付いた次第。
今後の自戒の為にメモしておきます。