DNS の仕組みとキャッシュ・再帰・権威サーバ関係

  • URLをコピーしました!

DNS(Domain Name System)は、インターネット通信の基盤となる「名前解決システム」です。人が覚えやすいドメイン名(例:example.com)を、コンピュータが通信に使うIPアドレス(例:93.184.216.34)に変換します。
この記事では、DNSの基本的な仕組み、キャッシュや再帰的問い合わせの動作、そして「権威サーバ」との関係を、初学者にもわかりやすく解説します。

■ DNSの基本構造

DNSは「階層的(ツリー構造)」に構成されており、上から順に次のような層に分かれています。

階層説明
ルート(Root).DNS階層の最上位。世界に13系統のルートサーバが存在。
TLD(Top Level Domain).com, .jp, .net国や種別ごとのトップレベルドメイン。
セカンドレベルexample.com企業や組織ごとのドメイン。
ホスト名www.example.com個別のサーバ名。

この階層構造を順番にたどりながら、名前解決が行われます。

■ DNSの名前解決の流れ

DNSの名前解決には大きく分けて2種類の問い合わせがあります。

  • 再帰的問い合わせ(Recursive Query):クライアント(PCやスマホ)がDNSサーバに「最終的な答えを教えて」と依頼する方式。
  • 反復的問い合わせ(Iterative Query):DNSサーバ同士で段階的に問い合わせを行いながら、最終的な答えを導き出す方式。

例:「www.example.com」を解決する場合

  1. クライアント → DNSキャッシュを確認(あれば即返答)
  2. なければ → DNSリゾルバ(再帰DNSサーバ)へ問い合わせ
  3. リゾルバ → ルートDNSサーバへ問い合わせ
  4. ルートサーバ → 「.com」を管理するTLDサーバの場所を返す
  5. リゾルバ → TLDサーバへ問い合わせ
  6. TLDサーバ → 「example.com」の権威DNSサーバ情報を返す
  7. リゾルバ → 権威サーバへ問い合わせ
  8. 権威サーバ → IPアドレス(例:93.184.216.34)を返す
  9. リゾルバ → クライアントに最終結果を返す

この流れが「名前解決」と呼ばれるプロセスです。

■ 権威DNSサーバと再帰DNSサーバの違い

種類役割
再帰DNSサーバ(リゾルバ)クライアントからの問い合わせを代行して、最終的な答えを返す。ISPのDNS、Google DNS(8.8.8.8)、Cloudflare(1.1.1.1)
権威DNSサーバ自身のゾーン情報(ドメインの正式なIP情報)を保持している。example.com の A レコードなどを管理

■ DNSキャッシュの仕組み

DNSは効率化のために結果をキャッシュ(一時保存)します。キャッシュには有効期限(TTL:Time To Live)があり、これを超えると再問い合わせが行われます。

キャッシュの確認と削除例:

# Windows
ipconfig /displaydns
ipconfig /flushdns

# Linux
systemd-resolve --statistics
sudo systemd-resolve --flush-caches

# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

キャッシュが古いと、既に変更されたドメイン情報を取得できないことがあります。特にWebサーバのIPを変更した直後などに注意が必要です。

■ DNSレコードの種類

レコード種別説明
Aホスト名とIPv4アドレスの対応www → 192.168.1.10
AAAAホスト名とIPv6アドレスの対応www → 2001:db8::1
CNAME別名(エイリアス)設定www → web.example.com
MXメールサーバ設定@ → mail.example.com
NSドメインを管理する権威サーバ指定example.com → ns1.example.com

■ DNSトラブルの主な原因と対処

症状原因対処法
名前解決できない(host not found)権威サーバ登録ミス、ゾーンファイルエラーゾーン設定(A/NSレコード)を再確認し、再起動
古いIPアドレスに接続されるDNSキャッシュが残っているipconfig /flushdns でキャッシュクリア
別のドメインに誤って誘導されるDNSハイジャック・hostsファイル書き換え/etc/hosts または C:\Windows\System32\drivers\etc\hosts を確認
社内ネットワークだけ解決できない内部DNS設定ミスやフォワーダ不備フォワーダ設定(forwarders { 8.8.8.8; }; )を確認

■ digコマンドによる確認例

DNSの状態を確認するには dig コマンドが便利です。

# Aレコードを確認
dig www.example.com

# 権威サーバまでの問い合わせを追跡
dig +trace www.example.com

# DNSキャッシュ(ローカルリゾルバ)の確認
dig @8.8.8.8 example.com

digを使うことで、どのDNSサーバが応答しているか、どの段階で失敗しているかを特定できます。

■ まとめ

  • DNSは階層構造を持つ名前解決システムで、再帰・反復問い合わせを組み合わせて動作する
  • キャッシュ(TTL)によって効率化されるが、古い情報が残ることもある
  • 「権威サーバ」と「再帰サーバ」の役割を区別して理解することが重要
  • トラブル時は dignslookupipconfig /flushdns などを活用して原因を特定

DNSは一見単純に見えますが、キャッシュ・再帰・権威の関係を正しく理解することで、ネットワーク障害のトラブルシューティング力が大きく向上します。

目次