DNS ゾーン

プロトコル & 標準
特定の組織または管理者によって管理される DNS 名前空間の一部。
← 用語集に戻る

DNSゾーンとは?

DNSゾーンはDNS名前空間の明確な部分で、特定の組織または管理者によって管理されます。ゾーンには1つ以上のドメインのDNSレコードが含まれ、権威nameserverによって提供されます。ドメインがDNS木内の名前であるのに対し、ゾーンはどのnameserverが応答の責任を負うかを定義する管理上の境界です。

ドメイン vs ゾーン

区別を理解することは重要です:

ドメイン

DNS階層内の名前:

example.com(ドメイン)

└── www.example.com(サブドメイン)

└── blog.example.com(サブドメイン)

└── api.example.com(サブドメイン)

ゾーン

レコード上の管理制御:

ドメインとサブドメイン用の単一ゾーン:
example.com ゾーンに含まれる:

- example.com

- www.example.com

- blog.example.com

- api.example.com

管理: ns1.example.com、ns2.example.com

委譲されたサブドメインゾーン:
example.com ゾーンに含まれる:

- example.com

- www.example.com

- 委譲: api.example.com → 異なるnameservers

api.example.com ゾーン(個別)に含まれる:

- api.example.com

- v1.api.example.com

- v2.api.example.com

管理: ns1.apihost.com、ns2.apihost.com

ゾーン構成要素

ゾーンファイル

ゾーン内のすべてのDNSレコードを含むテキストファイル:

; example.com ゾーンファイル

$TTL 3600

@ IN SOA ns1.example.com. admin.example.com. (

2024010101 ; シリアル

7200 ; リフレッシュ

3600 ; リトライ

1209600 ; 有効期限

3600 ; 最小TTL

)

; nameserverレコード

@ IN NS ns1.example.com.

@ IN NS ns2.example.com.

; Aレコード

@ IN A 203.0.113.50

www IN A 203.0.113.50

blog IN A 203.0.113.51

; MXレコード

@ IN MX 10 mail.example.com.

mail IN A 203.0.113.52

; CNAMEレコード

ftp IN CNAME www.example.com.

; TXTレコード

@ IN TXT "v=spf1 include:_spf.google.com ~all"

SOAレコード(Authority Start)

各ゾーンは正確に1つのSOAレコードを持つ必要があります:

example.com.  IN  SOA  ns1.example.com. admin.example.com. (

2024010101 ; シリアル

7200 ; リフレッシュ

3600 ; リトライ

1209600 ; 有効期限

3600 ; 最小TTL

)

SOAフィールド:
フィールド目的
一次NSマスターnameserverns1.example.com
管理者メール連絡先(@ → .)admin.example.com(admin@example.com)
シリアルゾーンバージョン番号2024010101
リフレッシュセカンダリNSチェック間隔7200秒(2時間)
リトライリフレッシュに失敗した場合のリトライ間隔3600秒(1時間)
有効期限セカンダリNSが放棄するまで1209600秒(14日)
最小TTL負のキャッシング期間3600秒(1時間)

NSレコード(nameservers)

ゾーションの権威サーバーを指定:

example.com.  IN  NS  ns1.example.com.

example.com. IN NS ns2.example.com.

世界中に、このゾーン内のレコードに関するクエリをどこに送信するかを伝えます。

ゾーンタイプ

プライマリゾーン(マスター)

ゾーンレコードが編集される権威ソース:

ns1.example.com(プライマリ)

→ ゾーンファイルがここで編集される

→ 変更は直接行われる

→ セカンダリに更新を通知

セカンダリゾーン(スレーブ)

プライマリから複製される読み取り専用コピー:

ns2.example.com(セカンダリ)

→ プライマリからゾーンデータを取得

→ 直接編集することはできない

→ SOAリフレッシュ間隔に基づいて自動同期

ゾーン転送(AXFR):
1. セカンダリがSOAシリアル番号をチェック

2. プライマリシリアルが高い場合 → 完全なゾーン転送をリクエスト

3. プライマリが全ゾーンを送信

4. セカンダリがコピーを更新

増分転送(IXFR):
1. セカンダリが最後のシリアル以降の変更のみをリクエスト

2. プライマリが差分を送信

3. 大規模ゾーンで小さな変更の場合、より効率的

フォワードゾーン

ドメイン名をIPアドレスにマップ(最も一般的):

example.com → 203.0.113.50

www.example.com → 203.0.113.50

リバースゾーン

IPアドレスをドメイン名にマップ(PTRレコード):

50.113.0.203.in-addr.arpa → example.com

用途:

ゾーン委譲

委譲はサブドメイン用に個別のゾーンを作成します:

親ゾーン(example.com)

; example.com ゾーン

@ IN A 203.0.113.50

www IN A 203.0.113.50

; api.example.comを異なるnameserversに委譲

api IN NS ns1.apihost.com.

api IN NS ns2.apihost.com.

; グルーレコード(必要な場合)

ns1.api IN A 198.51.100.1

ns2.api IN A 198.51.100.2

委譲されたゾーン(api.example.com)

別のnameservers上の完全に個別のゾーンファイル:

; api.example.com ゾーン(ns1.apihost.comで)

@ IN A 198.51.100.10

v1 IN A 198.51.100.11

v2 IN A 198.51.100.12

なぜ委譲するのか?

ゾーン管理

シリアル番号管理

シリアル番号がゾーンバージョンを追跡(通常YYYYMMDDnn形式):

2024010101  ; 2024年1月1日、バージョン01

2024010102 ; 2024年1月1日、バージョン02

2024010201 ; 2024年1月2日、バージョン01

重要なルール: シリアルは各変更で増加する必要があり、そうでないとセカンダリが更新されません。

ゾーン転送セキュリティ

問題: ゾーン転送は全DNSレコードを公開 解決策: 権限のあるセカンダリへのゾーン転送を制限 BIND設定:
zone "example.com" {

type master;

file "/var/named/example.com.zone";

allow-transfer { 203.0.113.52; 203.0.113.53; }; // セカンダリIPのみ

notify yes;

};

TSIG(トランザクション署名): 共有鍵でゾーン転送を認証:
key "transfer-key" {

algorithm hmac-sha256;

secret "base64-encoded-key";

};

allow-transfer { key transfer-key; };

ゾーン構成のチェック

SOAレコードをクエリ

dig example.com SOA

; 応答セクション:

example.com. 3600 IN SOA ns1.example.com. admin.example.com. (

2024010101 7200 3600 1209600 3600 )

NSレコードをクエリ

dig example.com NS

; 応答セクション:

example.com. 86400 IN NS ns1.example.com.

example.com. 86400 IN NS ns2.example.com.

ゾーン転送をリクエスト(AXFR)

dig @ns1.example.com example.com AXFR

# 許可されている場合は全ゾーンを返す

# 拒否された場合は転送失敗を返す

ほとんどのパブリックnameserverは情報開示を防ぐためAXFRを拒否します。

一般的なゾーン構成

シンプルなWebサイト

example.com ゾーン:

@ A 203.0.113.50

www A 203.0.113.50

@ MX 10 mail.example.com

mail A 203.0.113.51

@ TXT "v=spf1 mx -all"

マルチサービスゾーン

example.com ゾーン:

@ A 203.0.113.50

www A 203.0.113.50

blog CNAME hosting.wordpress.com.

shop CNAME shops.myshopify.com.

cdn CNAME d111111abcdef8.cloudfront.net.

@ MX 10 aspmx.l.google.com.

委譲されたサブドメイン

example.com ゾーン:

@ A 203.0.113.50

www A 203.0.113.50

; APIをAWS Route 53に委譲

api NS ns-123.awsdns-01.com.

api NS ns-456.awsdns-02.net.

; CDNをCloudflareに委譲

cdn NS ns1.cloudflare.com.

cdn NS ns2.cloudflare.com.

ゾーンファイルのベストプラクティス

1. 常にシリアルをインクリメント: 各変更後、またはセカンダリが更新されない

2. 日付ベースのシリアルを使用: YYYYMMDDnn形式で明確

3. ゾーン転送を制限: 許可されたセカンダリのみ

4. 複数のnameserverを使用: 少なくとも2つ、できれば異なるネットワーク上の3つ以上

5. 適切なTTLを設定: キャッシングの利点と更新速度のバランス

6. 適用前にテスト: ゾーンファイル構文をロード前に検証

7. ゾーン転送を監視: セカンダリが同期していることを確認

8. 委譲を文書化: どのゾーンが委譲されており、どこにあるかを記録

9. ゾーンファイルをバックアップ: データ損失を防ぐ

10. バージョン管理を使用: ゾーンファイルの変更を時系列で追跡

高度なゾーン機能

DNSSEC(ゾーン署名)

ゾーンレコードに暗号化で署名:

example.com.  IN  A       203.0.113.50

example.com. IN RRSIG A 8 2 3600 (

署名データ )

キャッシュポイズニングと改ざんから保護します。

Dynamic DNS(DDNS)

プログラムによるゾーン更新を許可:

# Aレコードを動的に更新

nsupdate -k Kupdate.key <<EOF

server ns1.example.com

update delete www.example.com A

update add www.example.com 300 A 203.0.113.51

send

EOF

用途:

  • ホームIPアドレスの更新
  • 自動スケーリングインフラ
  • サービスディスカバリー

ゾーンビュー(スプリットホライズンDNS)

クライアントIPに基づいて異なるゾーンデータを提供:

内部クライアント: example.com → 10.0.0.50(内部)

外部クライアント: example.com → 203.0.113.50(パブリック)

ユースケース:
  • 内部vs外部Webサイトバージョン
  • プライベートネットワークリソース
  • 地理ベースの応答

ゾーン問題のトラブルシューティング

ゾーン転送エラー

症状: セカンダリが古い チェック:
# プライマリが転送を許可するかをチェック

dig @ns1.example.com example.com AXFR

# セカンダリログでエラーをチェック

tail -f /var/log/named.log

解決策:
  • allow-transfer設定を確認
  • サーバー間のネットワーク接続を確認
  • シリアル番号が増加していることを確認

シリアル番号が増加していない

症状: セカンダリへの変更が伝播していない 解決策: ゾーン編集時にシリアルを常に増加

委譲が機能していない

症状: サブドメインが解決しない チェック:
# 委譲を確認

dig example.com NS

dig api.example.com NS

# 委譲されたサブドメインに異なるnameserverが表示されるはず

解決策**:

DNSゾーンは分散DNS管理の基盤です。ゾーン構造、委譲、管理を理解することで、あらゆるサイズの組織向けにDNSを効果的に設計できます。

この知識を実践する

DomScan の API を使用してドメインの可用性、状態などを確認します。