1. DNS(ドメインネームシステム)とは何か?
DNS (Domain Name System) は、人間が覚えやすいドメイン名(例:curious-techie.com)を、ネットワークルーティングに必要な数値形式のIPアドレス(例:104.21.45.12 や 2606:4700:3037::6815:2d0c)へ相互変換する分散型データベース基盤です。
1987年に RFC 1034 および RFC 1035 として策定され、徹底したキャッシュ戦略と多重化された権威サーバー群により、単一障害点を作ることなく地球規模のトラフィックを処理しています。
2. 4段階の階層的名前解決シーケンス
ブラウザで新しいドメインにアクセスした際、ローカルキャッシュにIPが存在しない場合は以下の4ステップで階層解決が行われます:
1. スタブリゾルバ(端末) → ローカルのリカーシブDNS(1.1.1.1 や 8.8.8.8 等)へ問い合わせ
2. リカーシブリゾルバ(キャッシュサーバー) → ルートネームサーバー(.)へTLDサーバーの所在を照会
3. TLDネームサーバー(.com) → 該当ドメインの権威ネームサーバー(ns1.cloudflare.com 等)のIPを返答
4. 権威DNSサーバー → 最終的な A / AAAA レコード(IPアドレス + TTL)をリゾルバへ返答
3. 主要なDNSレコード種別の詳細
| レコード種別 | 用途・機能 | 設定値サンプル |
|---|---|---|
| A | ホスト名を32ビットIPv4アドレスへ紐付け | 93.184.216.34 |
| AAAA | ホスト名を128ビットIPv6アドレスへ紐付け | 2606:2800:220:1:248:1893:25c8:1946 |
| MX | 優先度付きメール受信サーバーの指定 | 10 mail.example.com |
| TXT | SPF、DKIM、ドメイン所有権確認用テキスト | v=spf1 include:_spf.google.com ~all |
| CNAME | 正規ホスト名に対する別名(エイリアス) | docs.example.com → cdn.vendor.io |
| CAA | 証明書発行を許可する認証局(CA)の制限 | 0 issue "letsencrypt.org" |
4. DNSセキュリティ: DNSSEC、DoH & DoT
従来のDNSはポート53の暗号化されないUDPで動作していたため、ISPによる閲覧履歴の監視やキャッシュポイズニング攻撃に晒されていました。現代の技術はこれを解決しています:
- DNSSEC (DNS Security Extensions): 公開鍵暗号を用いてDNSレコードに電子署名を施し、応答の改ざんやスプーフィングを防止。
- DNS-over-HTTPS (DoH, RFC 8484): HTTPS(ポート443)のHTTP/2やHTTP/3セッション内でDNS問い合わせを暗号化し、通常のWeb通信と見分けがつかない状態で保護。
- DNS-over-TLS (DoT, RFC 7858): 専用ポート853を用いてTLSセッション内でDNS通信を生パケット単位で暗号化。
5. レコード浸透遅延とTTL設定のベストプラクティス
DNSレコードを変更する際、TTL (Time-to-Live) は世界中のリカーシブリゾルバがキャッシュを破棄して再問い合わせを行うまでの秒数を指定します。
サーバー移行を予定している場合、作業の24〜48時間前にTTLを 300秒(5分) などの短い値に下げておくことで、DNS伝播待ち時間を最小限に抑えダウンタイムゼロの移行が可能になります。