DNS とは
DNS(Domain Name System)は、ドメイン名(例:example.com)を IP アドレス(例:93.184.216.34)に変換するシステムです。「インターネットの電話帳」とも呼ばれます。
人間は google.com のような名前を覚えやすいですが、コンピュータ間の通信には IP アドレスが必要です。DNS がその橋渡しをします。
DNS の階層構造
DNS はツリー状の階層構造を持ちます。
.(ルートドメイン)
├── com
│ ├── google(google.com)
│ └── example(example.com)
├── jp
│ ├── co
│ │ └── yahoo(yahoo.co.jp)
│ └── ac
│ └── kyoto-u(kyoto-u.ac.jp)
└── net
└── ...
名前解決の仕組み(再帰的クエリ)
www.example.com にアクセスする際の流れを追います。
① ブラウザがキャッシュを確認
└ キャッシュなし
② OSのスタブリゾルバが フルサービスリゾルバ(キャッシュDNS)に問い合わせ
③ フルサービスリゾルバがルートDNSサーバに問い合わせ
└ 「.com を管理するサーバを教えて」→ TLD DNSサーバのアドレスを返す
④ TLD DNS(.com)に問い合わせ
└ 「example.com を管理するサーバを教えて」→ 権威DNSサーバのアドレスを返す
⑤ 権威DNSサーバ(example.com)に問い合わせ
└ 「www.example.com は 93.184.216.34」→ A レコードを返す
⑥ ブラウザが 93.184.216.34 に接続
DNS レコードの種類
| レコード | 意味 | 例 |
|---|---|---|
| A | ドメイン → IPv4 アドレス | example.com → 93.184.216.34 |
| AAAA | ドメイン → IPv6 アドレス | example.com → 2606:2800:... |
| CNAME | ドメイン → 別のドメイン(エイリアス) | www.example.com → example.com |
| MX | メールサーバのアドレス | mail.example.com |
| TXT | テキスト情報(SPF, DKIM など) | "v=spf1 include:..." |
| NS | 権威 DNS サーバのアドレス | ns1.example.com |
TTL(Time To Live)
DNS レコードにはキャッシュの有効期限 TTL(秒単位)が設定されています。
www.example.com 300 IN A 93.184.216.34
^^^
TTL: 300秒(5分間キャッシュ有効)
TTL が短いと変更が素早く反映される代わりに DNS サーバへの問い合わせが増えます。
コマンドで確認する
# Aレコードを確認
dig example.com A
# 逆引き(IPアドレス → ドメイン名)
dig -x 93.184.216.34
# 特定のDNSサーバに問い合わせ(8.8.8.8 = Google DNS)
dig @8.8.8.8 example.com
# Windowsの場合
nslookup example.com
DNS とセキュリティ
DNSキャッシュポイズニング
偽の DNS 応答をキャッシュに書き込み、ユーザを偽サイトに誘導する攻撃。DNSSEC による署名検証で対策します。
DNS over HTTPS(DoH)
DNS クエリを HTTPS で暗号化し、通信経路での盗聴・改ざんを防ぐ技術。モダンなブラウザで標準採用が進んでいます。
まとめ
- DNS は名前(ドメイン)→ IP アドレスの変換システム
- ルート → TLD → 権威 DNS のツリー構造で管理
- A/CNAME/MX/TXT などのレコードタイプを把握しておく
- TTL を意識してインフラ変更計画を立てる(低 TTL → 変更 → 元に戻す)