マスター(プライマリ)とスレーブ(セカンダリ)の同期は
どのように取るのですか

白井 出 (JPRS)
2003/12/17

 ネームサーバとしてどのソフトウェアを使用するかによって異なりますが、おおむね以下の3種類に大別されます。

  1. ゾーン更新通知(NOTIFY)とゾーン転送要求(AXFR,IXFR)を利用する
    DNSプロトコルで規定されている(RFC 1035/1995/1996)方法で、BINDでは通常この手法を使用しています。

  2. ファイル転送をする
    djbdnsではこれが主流です。BINDでネームサーバを運用していてもゾーンファイルが極めて巨大であるなど、ゾーン転送が難しい場合はこの手法を利用することがあります。
    ファイルの転送方法としては、scp、ftpや、SANによるストレージ共有などが使用されます。

  3. PostgreSQL、 OracleなどのRDBを使用する
    フリーの実装であればPowerDNSが、商用製品であればUltraDNSがこの手法を使用しています。BINDなど、ほかのネームサーバでも実装はあるようです。

 これらのうち、ここではaの手法について説明します。

図1 ゾーン更新通知(NOTIFY)とゾーン転送要求(AXFR,IXFR)を利用する仕組み

 おのおののサーバでは、持っているゾーンデータにシリアルナンバーが付いています。マスターネームサーバの持っているシリアルナンバーよりも小さい数ならばそれは古いデータということになります。

  1. マスターネームサーバは、データの更新が起こった場合や、ネームサーバを再起動した場合などに、変更通知(NOTIFY)をスレーブネームサーバへ向けて送信します。

  2. 変更通知(NOTIFY)を受け取ったスレーブネームサーバは、マスターネームサーバにシリアルナンバーを問い合わせ、自分の持っているシリアルナンバーが最新のものかどうかを調べ、もし古ければ、ゾーン転送要求(AXFR,IXFR)をマスターネームサーバへ送ります。

    ここでAXFRとIXFRは、それぞれ、「全ゾーンデータ、差分ゾーンデータを要求します」という意味となっています。

  3. スレーブネームサーバからの要求を受け取ったマスターネームサーバは、要求(AXFR,IXFR)に応じて、全ゾーンデータ、あるいは差分ゾーンデータを送ります。

 以上のような手順を踏んで最新ゾーンデータへの同期が行われます。また、スレーブネームサーバは、一定期間ごとにマスターネームサーバのシリアルナンバーとの比較を行いますので、変更通知(NOTIFY)を受け取らなくとも、23の手順を踏んで更新が行われます。

 なお、データが最新かどうかはシリアルナンバーによってのみ判断されています。このため、いわゆる「シリアル更新忘れ」というミスでスレーブネームサーバの同期がうまくいかないということがよくありますので、注意しましょう。

関連記事 セカンダリの役割って何ですか?


DNS Tips Index

「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間