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」を解決する場合
- クライアント → DNSキャッシュを確認(あれば即返答)
- なければ → DNSリゾルバ(再帰DNSサーバ)へ問い合わせ
- リゾルバ → ルートDNSサーバへ問い合わせ
- ルートサーバ → 「.com」を管理するTLDサーバの場所を返す
- リゾルバ → TLDサーバへ問い合わせ
- TLDサーバ → 「example.com」の権威DNSサーバ情報を返す
- リゾルバ → 権威サーバへ問い合わせ
- 権威サーバ → IPアドレス(例:93.184.216.34)を返す
- リゾルバ → クライアントに最終結果を返す
この流れが「名前解決」と呼ばれるプロセスです。
■ 権威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)によって効率化されるが、古い情報が残ることもある
- 「権威サーバ」と「再帰サーバ」の役割を区別して理解することが重要
- トラブル時は
dig、nslookup、ipconfig /flushdnsなどを活用して原因を特定
DNSは一見単純に見えますが、キャッシュ・再帰・権威の関係を正しく理解することで、ネットワーク障害のトラブルシューティング力が大きく向上します。
あわせて読みたい


DNSフォワーダとゾーン転送の仕組み
DNS(Domain Name System)は、ドメイン名とIPアドレスを対応付ける仕組みですが、実際の運用では「フォワーダ(Forwarder)」と「ゾーン転送(Zone Transfer)」という…
