DNS(Domain Name System)

ドメイン名とIPアドレスの名前解決

DNSとは

DNSは、ドメイン名をIPアドレスに変換する分散データベースシステムです。 階層的な構造を持ち、世界中のDNSサーバーが協調して名前解決を行います。 インターネットの「電話帳」とも呼ばれます。

名前解決の流れ

  1. 1
    ブラウザ/OSキャッシュ確認

    ローカルにキャッシュがあれば即返答

  2. 2
    リゾルバ(フルサービスリゾルバ)へ問い合わせ

    ISPやGoogle(8.8.8.8)等の再帰リゾルバ

  3. 3
    ルートDNSサーバーへ問い合わせ

    .comなどTLDのDNSサーバーを返答

  4. 4
    TLD DNSサーバーへ問い合わせ

    example.comの権威DNSサーバーを返答

  5. 5
    権威DNSサーバーへ問い合わせ

    最終的なIPアドレスを返答

主なDNSレコードタイプ

タイプ説明
AIPv4アドレスexample.com → 93.184.216.34
AAAAIPv6アドレスexample.com → 2606:2800:220:1::...
CNAME別名(エイリアス)www.example.com → example.com
MXメールサーバーexample.com → mail.example.com (優先度10)
TXTテキスト情報SPF, DKIM, ドメイン検証用
NS権威DNSサーバーexample.com → ns1.example.com
SOAゾーン情報プライマリNS、管理者、シリアル
PTR逆引き(IP→ドメイン)34.216.184.93.in-addr.arpa → ...
SRVサービス位置_sip._tcp.example.com → ...

TTL(Time To Live)

TTLは、DNSレコードをキャッシュできる秒数です。 適切なTTL設定は、パフォーマンスと変更反映速度のバランスが重要です。

短いTTL(60-300秒)

変更が素早く反映。DNS負荷増。

中程度(3600秒=1時間)

一般的なバランス。

長いTTL(86400秒=1日)

安定したレコード向け。変更反映遅い。

主要なDNSサービス

パブリックDNS

  • Google: 8.8.8.8, 8.8.4.4
  • Cloudflare: 1.1.1.1, 1.0.0.1
  • Quad9: 9.9.9.9

マネージドDNS

  • AWS Route 53: 高可用性、ヘルスチェック
  • Cloudflare DNS: CDN連携、DDoS対策
  • Google Cloud DNS: グローバル分散

DNSトラブルシューティング

1# 基本的な名前解決
2dig example.com
3dig example.com A +short # IPのみ
4dig example.com AAAA # IPv6
5dig example.com MX # メールサーバー
6
7# 特定のDNSサーバーを使用
8dig @8.8.8.8 example.com
9
10# 詳細な解決過程
11dig +trace example.com
12
13# 逆引き
14dig -x 93.184.216.34
15
16# nslookup(従来のツール)
17nslookup example.com
18nslookup -type=MX example.com
19
20# DNSキャッシュクリア
21# macOS
22sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
23# Linux (systemd-resolved)
24sudo systemd-resolve --flush-caches
25
26# ローカルDNS設定確認
27cat /etc/resolv.conf

SRE/インフラ観点

監視項目

  • DNS応答時間: 遅延は全体に影響
  • NXDOMAIN率: 存在しないドメインへのクエリ
  • SERVFAIL: サーバーエラー

ベストプラクティス

  • • DNSフェイルオーバー(Route 53ヘルスチェック等)
  • • 切り替え前にTTLを短くしておく
  • • DNSSEC有効化でセキュリティ強化

よくある問題

  • DNSキャッシュ汚染: 古いレコードが残る
  • DNS Amplification: DDoS攻撃
  • 設定ミス: NSレコード、CNAME制約