はじめに
DNS(Domain Name System)は、インターネット通信において欠かせない仕組みです。本記事では、DNSの仕組みを詳しく解説します。
1. DNSとは?
DNSは、ドメイン名(例: example.com)をIPアドレス(例: 192.0.2.1)に変換するシステムです。ユーザーが使いやすいドメイン名を入力するだけで、実際のサーバーと通信できるようになります。
2. DNSの階層構造
DNSは分散型の階層構造になっており、以下のように管理されています。
1.ルートDNSサーバ(.)
・全てのDNSの頂点に位置し、TLD(トップレベルドメイン)のDNSサーバを管理。
2.TLD(トップレベルドメイン)DNSサーバ
・.com, .jp, .org などのTLDごとのDNSサーバ。
3.権威DNSサーバ
・特定のドメイン(例: example.com)の情報を保持し、正しいIPアドレスを応答。
4.キャッシュDNSサーバ(リゾルバ)
・クライアントの問い合わせを代行し、キャッシュを用いて応答を高速化。
3. DNSの名前解決の流れ
DNSの名前解決には、以下の2つの方式があります。
① フルリゾルバ(再帰的問い合わせ)
キャッシュDNSサーバが問い合わせを代行し、ルートDNS → TLD DNS → 権威DNSの順に問い合わせを行います。
② スタブリゾルバ(逐次的問い合わせ)
クライアント自身がルートDNS → TLD DNS → 権威DNSに問い合わせを行います。
4.DNSの主要なレコード
レコードタイプ | 説明 |
---|---|
Aレコード | ドメイン名をIPv4アドレスに変換 |
AAAAレコード | IPv6アドレスを返す |
CNAMEレコード | 別のドメイン名にマッピング |
MXレコード | メールサーバの情報 |
NSレコード | そのゾーンを管理するDNSサーバを示す |
TXTレコード | SPF(メール送信認証)などの情報を記述 |
5. キャッシュとTTL
DNSのキャッシュは、問い合わせ結果を一定期間保存することで通信を高速化します。
・TTL(Time To Live): キャッシュの有効期限(数分〜数時間)。
・TTLが長いと変更が反映されにくいが、短すぎるとサーバー負荷が増加。
6. DNSのセキュリティと攻撃対策
DNSは攻撃の標的になりやすいため、適切な対策が必要です。
主な攻撃手法
攻撃名 | 説明 |
---|---|
DNSキャッシュポイズニング | 偽のIPアドレスをキャッシュDNSサーバに記録させる |
DNSリフレクション攻撃 | 偽装IPに大量のDNS応答を送りつける |
DDoS(分散型サービス妨害) | 大量の問い合わせを送り、DNSサーバをダウンさせる |
対策
・DNSSEC(DNS Security Extensions): デジタル署名を利用し、正当な応答を保証。
・Rate Limiting: 同じIPからの大量の問い合わせを制限。
・キャッシュ保護: 問い合わせ時にランダムなポートを使用し、DNSキャッシュポイズニングを防止。
7. 実践!DNSの調査方法
nslookupコマンド(Windows, Linux, macOS)
nslookup www.example.com
まとめ
・DNSはドメイン名をIPアドレスに変換する役割を持つ。
・ルートDNS → TLD DNS → 権威DNS という階層構造を理解する。
・再帰的問い合わせ(フルリゾルバ)と逐次的問い合わせ(スタブリゾルバ)がある。
・TTLを適切に設定することでパフォーマンスと更新性のバランスを取る。
・DNSのセキュリティ対策(DNSSEC, Rate Limiting)を把握する。