Check-Host.cc

グローバルAレコード検索

A (Address) レコードは、ドメインネームシステム (DNS) における最も基本的なリソースレコードです。完全修飾ドメイン名 (FQDN) を32ビットのIPv4アドレスに直接マッピングします。ユーザーがブラウザにURLを入力すると、オペレーティングシステムのスタブリゾルバ (Stub Resolver) が再帰的DNSサーバーに問い合わせを行い、この特定のレコードを取得します。IPv4アドレスが解決されると、クライアントアプリケーションはポート80 (HTTP) または443 (HTTPS) でTCPハンドシェイクを開始し、リモートWebサーバーとの接続を確立します。

DNSキャッシュ、TTL管理、マイグレーション

各Aレコードには、秒単位で定義されるTime to Live (TTL) 値が設定されています。この整数値は、中間リゾルバ、ISPのキャッシュ、およびローカルOSに対し、最新のデータを権威ネームサーバー (Authoritative Nameserver) に再照会するまでIPアドレスをメモリに保持できる時間を指示します。標準的な本番環境では、クエリの負荷を軽減するために3600(1時間)または86400(24時間)のTTLが一般的です。ただし、サーバーのマイグレーションやゼロダウンタイムの切り替え (Cutover) を計画する場合、ネットワーク管理者は少なくとも24時間前にTTLを300秒(5分)に下げる必要があります。この手順を怠ると、新しいIPアドレスが公開された後も、地域のISPは古いサーバーにトラフィックをルーティングし続けます。

ラウンドロビン負荷分散とAnycastルーティング

DNSアーキテクチャでは、ドメインを単一のAレコードに制限していません。管理者は頻繁に同じホストに複数のAレコードを割り当て、DNSラウンドロビン (Round Robin) を有効にします。クエリを受けると、権威ネームサーバーはペイロード (Payload) で返すIPアドレスの順序をローテーションさせます。これは、HTTPリクエストを複数のWebサーバーに分散させるための初歩的なロードバランシングメカニズムとして機能しますが、サーバーのヘルスチェック機能は持ち合わせていません。ノードがオフラインになった場合でも、DNSはそこにトラフィックをルーティングし続けます。最新の高可用性アプリケーションでは、Aレコードは通常、ロードバランサーやAnycast IPネットワーク(CloudflareやAWS Global Acceleratorなど)を指し、BGPルーティングプロトコルを介して複数の地理的データセンターから同時に単一のIPアドレスを広報 (Advertise) します。

IPv4解決チェーンのデバッグ

ローカルターミナルから dig A example.com +short などのコマンドを使用してAレコードをテストすると、特定のネットワークの視点しか分かりません。デプロイに失敗し、ユーザーから接続の問題が報告された場合、ローカルキャッシュに依存するのは誤解を招く恐れがあります。グローバルな地理的検索では、さまざまなグローバルノードを介してクエリを強制的に実行し、ローカルOSのキャッシュ(Windows DNS Clientサービスなど)をバイパスして、古い伝播データを提供しているリージョンを正確に特定します。