DNSゾーン転送(AXFR・IXFR)の仕組みとは?プライマリDNSとセカンダリーDNSの同期方法を理解する

DNSゾーン転送

DNSゾーン転送(AXFR・IXFR)の仕組み

DNSサーバを冗長化する際に欠かせない仕組みがゾーン転送(Zone Transfer)です。

セカンダリーDNSサーバはプライマリDNSサーバが管理するゾーン情報を取得し、同じ内容で応答できる必要があります。

その際に利用されるのがAXFRとIXFRです。

DNSの学習では「セカンダリーDNSはゾーン情報を自動取得する」と説明されることが多いですが、実際にどのように同期しているのか理解している人は意外と多くありません。

本記事ではゾーン転送の仕組みやAXFRとIXFRの違い、実際の動作について解説します。

ゾーン転送とは

ゾーン転送とは、プライマリDNSサーバからセカンダリーDNSサーバへゾーン情報をコピーする仕組みです。

例えば次のような構成です。

Primary DNS
192.168.60.10

Secondary DNS
192.168.60.11

セカンダリーDNSはプライマリDNSからゾーン情報を取得します。

これにより両方のDNSサーバが同じ情報を保持できます。

なぜゾーン転送が必要なのか

セカンダリーDNSは権威DNSサーバとして動作します。

しかしゾーン情報の原本は持っていません。

プライマリDNSから取得する必要があります。

Primary DNS
↓
ゾーン転送
↓
Secondary DNS

これがゾーン転送の役割です。

ゾーン転送が無い場合

もしゾーン転送が無ければ、管理者がすべてのDNSサーバを手作業で更新しなければなりません。


DNS1 修正
DNS2 修正
DNS3 修正
DNS4 修正

管理ミスの原因になります。

ゾーン転送によって自動同期が可能になります。

AXFRとは

AXFR(Full Zone Transfer)はゾーン全体を転送する方式です。


AXFR
↓
ゾーン全体コピー

最初の同期時に利用されることが多い方式です。

AXFRの動作例

プライマリDNSに次のレコードがあるとします。

www     IN A 192.168.60.20
mail    IN A 192.168.60.30
ftp     IN A 192.168.60.40

AXFRではこれらすべてを転送します。

SOA
NS
A
MX
TXT
PTR
...
すべて転送

シンプルですが通信量は多くなります。

IXFRとは

IXFR(Incremental Zone Transfer)は差分転送方式です。


IXFR
↓
変更部分のみ転送

大規模環境でよく利用されます。

IXFRの動作例

既存ゾーンです。

www IN A 192.168.60.20
mail IN A 192.168.60.30

新たに追加します。

ftp IN A 192.168.60.40

IXFRでは追加分のみ転送します。

ftp IN A 192.168.60.40

通信量を大幅に削減できます。

AXFRとIXFRの違い

項目AXFRIXFR
転送方式全体転送差分転送
通信量多い少ない
初回同期利用不可
更新時利用可能主流

SOAレコードとの関係

ゾーン転送ではSOAレコードが重要です。

特にシリアル番号を利用します。

@ IN SOA ns1.example.com. root.example.com. (
    2026060801
)

セカンダリーDNSはこの番号を監視しています。

シリアル番号の比較

現在の状態です。


Primary DNS
2026060802

Secondary DNS
2026060801

番号が異なるため更新が必要と判断します。

その後ゾーン転送を開始します。

Refresh値の役割

SOAレコード内にはRefresh値があります。


28800

セカンダリーDNSはこの間隔でプライマリDNSへ問い合わせます。

更新があるか確認するためです。

Retry値の役割

プライマリDNSへ接続できなかった場合です。


14400

Retry値経過後に再試行します。

Expire値の役割

長期間プライマリDNSと通信できない場合です。


3600000

Expireを超えるとゾーン情報を無効と判断します。

ゾーン転送で利用するポート

DNS問い合わせは通常UDP53番ポートを利用します。

しかしゾーン転送はTCP53番ポートです。


通常問い合わせ
UDP 53

ゾーン転送
TCP 53

非常によく試験で出るポイントです。

BINDのallow-transfer設定

ゾーン転送先を制限します。

zone "example.com" {
    type master;

    allow-transfer {
        192.168.60.11;
    };
};

実運用では必須設定です。

allow-transferが重要な理由

誰でもゾーン転送できる状態は危険です。

攻撃者が内部情報を取得できる可能性があります。


www
mail
vpn
db
backup

すべてのホスト名が漏洩する恐れがあります。

digによるAXFR確認

ゾーン転送確認は次のように行います。


dig @192.168.60.10 example.com AXFR

許可されていればゾーン全体が表示されます。

失敗例

allow-transferで拒否されている場合です。


Transfer failed.

正常な動作です。

ログで確認する

ゾーン転送状況はログで確認できます。


# journalctl -u named

成功例です。


transfer of 'example.com/IN'
Transfer completed

実務での運用

大規模環境では複数のセカンダリーDNSを運用します。


Primary DNS
↓
Secondary DNS 1
Secondary DNS 2
Secondary DNS 3

すべてゾーン転送によって同期されます。

よくあるトラブル

シリアル番号未更新

変更しても転送が開始されません。

allow-transfer未設定

セカンダリーDNSが取得できません。

TCP53遮断

ファイアウォールでブロックされる場合があります。

masters設定ミス

プライマリDNSへ接続できません。

実務で覚えておきたいポイント

  • ゾーン転送はDNS冗長化の基盤技術
  • AXFRは全体転送
  • IXFRは差分転送
  • SOAシリアル番号が重要
  • TCP53番ポートを利用する
  • allow-transferで転送先を制限する

まとめ

ゾーン転送はプライマリDNSとセカンダリーDNSを同期するための重要な仕組みです。

AXFRはゾーン全体を転送し、IXFRは変更部分のみを転送します。

また、SOAレコードのシリアル番号によって変更を検知し、TCP53番ポートを利用して同期が行われます。

DNS冗長化を実現するためには欠かせない技術であり、BIND運用では必ず理解しておくべき知識です。