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

最近更新/作成されたページ