(コンテンツ)DNSサーバー間のゾーン転送について、ちょっとした問題発生。
マスターDNSサーバーで、ゾーン情報を更新した場合、スレーブサーバーへ即時反映されるようにnotifyを設定している。
しかし、ゾーンをしてもすぐにゾーン情報が転送されない…。
何が問題なのか、いろいろ調べた。
サーバー側のルーティングやらFW機能やら。
named.confやら(also-notify、allow-tranfer、お互いにキャッシュ利用許可状態になっていないかなど)。
ネットワーク環境の確認やら、通信をキャプチャして解析やら。
で、原因を突き止めて、問題はとりあえず解決。
named.confの設定が、ネットワーク構成を考慮した設定になっていなかった。
原因を調べる過程で、
マスターDNSサーバーとスレーブDNSサーバー間で、ゾーン情報を転送する際の通信を追っかけた。
せっかく追っかけたので、その通信のやり取りを載せておこう。
※実際のネットワーク環境では、マスターとスレーブは別ネットワークに存在。
中間にFW(NAT)やルータが介在している。が、それらは無視。
OSはRedHat。DNSはBIND9.7。
tcpdumpでパケットをキャプチャし、Wiresharkで解析。
通信の流れは以下の通り(下図)
1) マスターでゾーンファイル更新。namedプロセス再起動。
2) マスターからスレーブへnotify通知
3) スレーブからマスターへゾーン転送を要求
4) スレーブからTCPコネクションを張る
5) コネクション確立後、ゾーン転送を実施。ポート53/TCPで通信。
6) ゾーン転送後、スレーブからTCPコネクションを切る。
以上。