このページの目次
DNSインフラストラクチャ
ルートサーバーは13台の物理マシンではなく、13のAnycastネットワークです。ルートからTLD、オーソライズドサーバーまで、各レイヤーは分散型です——このインフラストラクチャのアーキテクチャを理解して初めて、「DNSレコードを1つ変更する」という行為の裏側で何が起きているのかを知ることができます。
概要
DNSは単なるプロトコルではありません。それは13のルートサーバー(Anycastを介して1000以上の物理インスタンスが展開)と数百のTLDレジストリで構成される、グローバルに分散されたデータベースです。CDNプロバイダ(Cloudflare/AWS/Azure)は、DNSをトラフィックの入口として活用しています。これは、クエリ元のIPに基づいて、最も近いデータセンターのアドレスを返す仕組みです。Split DNSは、企業や家庭のネットワークにおいて、内部と外部のビューを分離します。DNSインフラストラクチャを理解することは、インターネットの可用性と障害復旧の仕組みを理解する上で不可欠です。
ルートサーバーシステム
13の論理的なルートサーバー識別子(a.root-servers.net ~ m.root-servers.net)があり、1000以上の物理インスタンスがAnycastを介して世界中に分散配置されています。
ルートゾーンサイズ: 約10KB(TLD委譲レコードのみ)。ルートサーバーは再帰クエリ(RD=0のみ)には応答せず、リファラル(参照先指示)のみを行います。
ルートヒントファイル(/usr/share/dns/root.hints または再帰リゾルバに内蔵)が、初期ブートストラップを提供します。
Anycast
同じIPプレフィックスが、複数の物理的な場所で同時にアナウンスされます。BGPが自動的に、トラフィックを最も近い(ASパスの観点から)ノードにルーティングします。
Anycastの動作原理: 同じクライアントからの2つのクエリが必ずしも同じインスタンスに到達するわけではありません(同一/24が一貫してアナウンスされない限り)。これはDNSにとって理想的な動作です。各クエリは独立して処理されます。
CDN DNS
Split DNS
内部ネットワークは異なるDNSビューを使用します:
内部(家庭/企業ネットワーク):
grafana.liz6.com → 192.168.31.8(内部IP、パブリックネットワークを経由しない)
パブリックネットワーク:
grafana.liz6.com → VPS IP(ratholeトンネル経由)
実装:
- BIND: views { match-clients { internal_net; }; ... }
- Unbound: access-control-view
- dnsmasq: address=/grafana.liz6.com/192.168.31.8
DNSベースのロードバランシング
加重ラウンドロビン:
www.example.com A 1.1.1.1
www.example.com A 2.2.2.2
→ リゾルバがランダムに選択(通常はクライアントが最初のIPを選ぶが、リゾルバによって動作が異なる)
レイテンシベース(Route 53):
latency alias + ヘルスチェック → 自動的に最低レイテンシの正常なエンドポイントを選択
地理的プロキシミティ(Traffic Manager):
地理的ルーティング + エンドポイントモニタリング
参考
- RSSAC: root-servers.org
- CDN: Cloudflare Anycast, AWS Route 53, Azure Traffic Manager
キーワード: ルートサーバー, anycast, CDN DNS, GeoDNS, split DNS, ECS, DNSベースのロードバランシング