いや、ずっとサーバ管理をやってる人には常識だったんだろうけど・・・
最近の bind って(ver 9.8以降)、マスターサーバからコピーしてきたスレーブサーバの zone ファイルって raw 形式っていう、いわゆるバイナリデータになってるんだね。
いつもの調子で、
# cat chroot/var/named/slaves/exsample.com.zone
なんてやったら、画面がぐちゃぐちゃに乱れてビビったわ(笑)
named-compilezone というコマンドで、text 形式に変換して表示できるということなのでやってみた。
# named-compilezone -f raw -F text -o - exsample.com chroot/var/named/slaves/exsample.com.zonezone exsample.com/IN: loaded serial 2021091501exsample.com. 28800 IN SOA serv1.exsample.com. root.serv1.exsample.com. 2021091502 21600 3600 604800 28800<略>OK
おお、ちゃんと表示された。
ちなみに、コマンド引数の意味は、
named‐compilezone -F text -f raw -o (出力ファイル名) (ゾーン名) (ゾーンファイル名)
である。
出力ファイル名を '-' とだけしておけば、標準出力に出力される。
ゾーン名は、そのゾーンファイルに設定されているドメイン名ね。
ゾーンファイル名については、「ファイル名だけでパスは必要ない」と説明しているサイトがあるが嘘です。ちゃんとパスまで指定しないとファイルが見つからなくて、
dns_master_load: file format mismatchzone exsample.com/IN: loading from master file exsample.com.zone failed: not implementedzone exsample.com/IN: not loaded due to errors.
みたいなエラーになるぞ。「file format mismatch」って出てるけど、ちゃんとスレーブの zone ファイルが見つけられてないだけだ。「chroot/var/named/slaves/exsample.com.zone」みたいにフルパスで指定すれば問題なく実行される。
あと、named.conf の options に「masterfile‐format text;」を追加すれば、バイナリではなくテキストで出力されるらしんだけど、うちの環境ではエラーが出て bind が起動しなかった。
まあ、別にバイナリでも named-compilezone コマンドで確認できるからいいけど。
コメントする