6 分で読了 #networking #DNS
このページの目次

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: 同一IPを複数箇所でアナウンスし、BGPが最短パスのインスタンスへルーティング AnycastインスタンスA ・ 東京 ASパス: AS1 → dns-root AnycastインスタンスB ・ フランクフルト ASパス: AS2 → AS3 → dns-root BGPがより短いパスを認識 BGPがより短いパスを認識 アジアのクライアント → 東京インスタンスへクエリ ヨーロッパのクライアント → フランクフルトインスタンスへクエリ 同じクライアントからの2つのクエリが必ずしも同じインスタンスに到達するわけではありません(同一/24が一貫してアナウンスされない限り)—— しかし、DNSにとっては理想的です。各クエリは独立して処理されます。

Anycastの動作原理: 同じクライアントからの2つのクエリが必ずしも同じインスタンスに到達するわけではありません(同一/24が一貫してアナウンスされない限り)。これはDNSにとって理想的な動作です。各クエリは独立して処理されます。

CDN DNS

CDN DNS = トラフィックの入口: クエリが最も近いエッジノードへルーティングされる クライアントクエリ www.example.com オーソライズドDNS CDNによってホストされる クエリ元IPを確認 最も近いエッジPoPを選択 エッジIPを返す クライアント → エッジ → CDNエッジ → バックエンド

主要技術

GeoDNS ソースIP → 地理データベース → 最寄りのリージョン → IPを返す レイテンシベース エッジとソースIP間のリアルタイムレイテンシ測定 → 最低レイテンシを選択 ECS(クライアントサブネット) リゾルバがサブネット /24(v4)/56(v6) を渡す → より正確なエッジ選択だが、情報が漏洩する ECSにより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ベースのロードバランシング