3.

DNS 完全ガイド — ドメイン名解決の仕組みとレコード

編集
この記事の要点
  • DNS (Domain Name System) はドメイン名 (example.com) を IP アドレス (93.184.216.34) に変換する仕組み。インターネットの電話帳
  • 主要レコード種別: A (IPv4) / AAAA (IPv6) / CNAME (別名) / MX (メール) / TXT (任意文字列) / NS (権威 DNS 指定) / SOA (ゾーン情報) / PTR (逆引き)
  • TTL (Time To Live): キャッシュ寿命。短いと変更反映早いが負荷高、長いと逆
  • 主要 DNS サービス: Cloudflare DNS (高速・無償)・AWS Route 53Google Cloud DNS
  • 診断コマンド: dig example.com / nslookup example.com / host example.com

DNS とは

DNS (Domain Name System) は、人間が覚えやすいドメイン名www.google.com)を、コンピュータが通信に使うIP アドレス142.250.207.36)に変換するシステムです。1983 年に Paul Mockapetris が設計した RFC 1034 / 1035 が原型で、インターネットの根幹インフラとして 40 年以上機能し続けています。

名前解決の流れ

ブラウザで https://example.com を開いたとき、内部では以下のステップが走ります:

  1. ブラウザキャッシュ: 直近の解決結果があれば使う
  2. OS のキャッシュ: hosts ファイル → DNS リゾルバキャッシュ
  3. スタブリゾルバ: ISP の DNS サーバー (8.8.8.8 など) に問い合わせ
  4. キャッシュ DNS サーバー: キャッシュにあれば即返却、なければ次へ
  5. ルート DNS (.): 「com は誰が管理?」を尋ねる → TLD サーバーを返す
  6. TLD DNS (.com): 「example.com の権威は?」 → 権威サーバーを返す
  7. 権威 DNS: 「example.com の IP は 93.184.216.34」 を返す
  8. 結果は各層でキャッシュされ、ブラウザに届く

レコード種別一覧

種別用途
AIPv4 アドレスexample.com → 93.184.216.34
AAAAIPv6 アドレスexample.com → 2606:2800:220:1::1
CNAME別名 (Canonical Name)www.example.com → example.com
MXメールサーバー指定example.com → 10 mail.example.com
TXT任意の文字列(SPF / DKIM / 所有権確認)"v=spf1 include:_spf.google.com ~all"
NS権威 DNS サーバー指定example.com → ns1.example.com
SOAゾーン管理情報シリアル番号・更新間隔等
PTR逆引き (IP → 名前)1.0.168.192.in-addr.arpa → host.example.com
SRVサービス位置SIP / XMPP / Microsoft AD
CAASSL 証明書発行許可 CA0 issue "letsencrypt.org"
DNSKEY / DS / RRSIGDNSSEC(署名検証)偽造防止

TTL (Time To Live)

各レコードには TTL(秒)が設定され、キャッシュサーバーはこの時間だけキャッシュを保持します:

TTL用途トレードオフ
60〜300 秒サーバー移行直前・フェイルオーバー反映早い・問合せ負荷大
3600 秒 (1 時間)通常運用バランス
86400 秒 (1 日)変更が少ない反映に時間・負荷小

移行作業の1 週間前から TTL を 300 秒へ下げるのが定石。完了後 86400 に戻す。

再帰問合せ vs 反復問合せ

  • 再帰問合せ (recursive): 「最終答えをくれ」と頼む。クライアント → キャッシュ DNS への問合せ
  • 反復問合せ (iterative): 「次に尋ねるべきサーバーを教えて」。キャッシュ DNS → ルート/TLD/権威 への問合せ

診断コマンド

# dig: 最も詳細
dig example.com
dig example.com A
dig example.com MX
dig example.com NS
dig example.com TXT
dig +trace example.com    # ルートから順に追跡
dig @8.8.8.8 example.com  # Google DNS に直接問い合わせ
dig +short example.com    # 結果だけ簡潔に

# 結果例(A レコード):
# ;; ANSWER SECTION:
# example.com.    300 IN A 93.184.216.34

# nslookup: Windows でも標準
nslookup example.com
nslookup -type=mx example.com
nslookup example.com 8.8.8.8

# host: 簡潔
host example.com
host -t mx example.com

# DNS キャッシュ確認・クリア
# Windows
ipconfig /displaydns
ipconfig /flushdns

# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Linux (systemd-resolved)
sudo resolvectl flush-caches

主要 DNS サービス

サービスIP特徴
Cloudflare DNS1.1.1.1 / 1.0.0.1高速・プライバシー重視・DoH/DoT 対応
Google Public DNS8.8.8.8 / 8.8.4.4世界中で安定動作
Quad99.9.9.9マルウェアブロック
OpenDNS (Cisco)208.67.222.222フィルタリング・企業向け
AWS Route 53権威 DNS サービス、ヘルスチェック
Google Cloud DNS権威 DNS、GCP 連携

DNS と CDN の関係

CDN(CloudFront / Cloudflare / Akamai)は、DNS 応答を使ってユーザーに最も近いエッジサーバーを返します:

  1. ユーザーが cdn.example.com を解決
  2. 権威 DNS が「東京のユーザーには Tokyo エッジの IP」「ロンドンユーザーには London エッジ」と動的に返す
  3. ユーザーは最寄りエッジに接続 → 低レイテンシ

DoH / DoT — DNS の暗号化

  • DoH (DNS over HTTPS): HTTPS で DNS クエリを送る。ポート 443。Firefox / Chrome に内蔵
  • DoT (DNS over TLS): TLS で DNS クエリ。ポート 853
  • 従来の DNS は平文 (UDP/53) で盗聴・改竄可能。DoH/DoT で対策

DNSSEC(DNS Security Extensions)

DNS 応答に公開鍵署名を付け、キャッシュ DNS が検証することで、応答の改竄や DNS スプーフィングを防ぐ仕組み。RRSIG / DNSKEY / DS レコードを使う。

典型的なトラブルと対処

症状原因対処
ドメインを変えたのに古い IP に繋がるキャッシュ残存TTL 待ち or キャッシュフラッシュ
メールが届かないMX / SPF / DKIM / DMARC 設定漏れTXT レコード見直し
NXDOMAIN エラーレコード未設定 / ドメイン期限切れ権威 DNS で確認
SSL 証明書発行できないCAA レコード設定漏れCAA に letsencrypt.org を追加
SERVFAILDNSSEC 検証失敗・権威サーバー応答なし権威 DNS の状態確認

FAQ

Q: ドメインを取得したらまず何をする?
A: レジストラで権威 NS を確認 → A / AAAA / MX / TXT を設定 → dig で反映確認。

Q: CNAME と A の使い分けは?
A: ルートドメイン (example.com) は CNAME 不可(RFC 制約) → A or ALIAS(Route 53 等の独自機能)。サブドメインは CNAME OK。

Q: hosts ファイルって何?
A: DNS より優先される手動マッピング (/etc/hosts、Windows は C:\Windows\System32\drivers\etc\hosts)。開発時のステージング切替に便利。

編集
Post Share
子ページ
  1. 設定方法
同階層のページ
  1. HTTP
  2. HTTPS
  3. DNS
  4. FTP
  5. TFTP
  6. DHCP
  7. SMTP
  8. SNMP
  9. POP3
  10. Telnet
  11. NTP
  12. SSH