【入門編】 DNSにおけるEDNS0 (Extension Mechanisms for DNS) の役割 – ネットワーク基礎とWebセキュリティ実践ガイド

こんにちは!技術メディアの主筆ライターとして、日々パケットの「鼓動」を追いかけているネットワークセキュリティスペシャリストです。

これからインフラやネットワークの世界に飛び込もうとしている皆台、ようこそ!この世界は一見、無機質な数字やアルファベットの羅列に見えますが、実はその裏側では、まるで熟練の郵便配達員たちが連携し合うような、非常に人間味あふれるドラマが繰り広げられています。

今日は、インターネットの「住所録」とも言われるDNS(Domain Name System)の世界に起きた、ある「劇的な進化」についてお話ししましょう。その名も「EDNS0(Extension Mechanisms for DNS)」。

「なんだか難しそうな名前だな……」と身構えなくても大丈夫。一歩ずつ、一緒に紐解いていきましょう!

—

1. 昔のDNSは「小さなハガキ」しか送れなかった?

私たちがブラウザに google.com と打ち込むとき、裏側ではDNSという仕組みが「その住所(IPアドレス)はここだよ!」と教えてくれています。

このやり取りは、OSI参照モデルでいうところの「第7層:アプリケーション層」で行われ、基本的には「第4層:トランスポート層」のUDPというプロトコルを使って運ばれます。UDPは「確認応答を待たずにサッと送る」という、スピード重視の配送方法です。

しかし、昔のDNSには一つ、厳しいルールがありました。

  • 「一度に送れるサイズは512バイトまで」

512バイト。これは、今の時代からすると驚くほど小さなサイズです。例えるなら、「官製ハガキの裏面に書ける分だけ」という制約のようなものです。

当時はそれで十分でした。送る情報は「名前」と「短い数字の住所(IPv4)」だけだったからです。

—

2. インターネットの成長と「ハガキ」の限界

ところが、インターネットが成長するにつれて、ハガキ(512バイト)には書ききれない情報が増えてきました。

1. IPv6の登場: 住所(IPアドレス)が長くなりました。
2. DNSSEC(セキュリティ拡張): 「この情報は本物だよ!」という証明書(署名)を付けるようになりました。これがとにかく重い!

ハガキに書ききれなくなると、DNSは「ごめん、入り切らないから、もっと大きな箱で送れる『TCP』という方法でやり直して!」と返事をします。これを「切り詰め(Truncation)」と呼びます。

しかし、TCPに切り替えると、配送の手順が複雑になり、インターネットの速度が落ちてしまいます。そこで登場した救世主が、EDNS0なのです。

—

3. EDNS0は「特大封筒」へのアップグレード

EDNS0を一言で言うなら、「ハガキしか送れなかった配送システムに、『もっと大きな封筒(最大4096バイト以上)』を使えるようにするオプション」です。

仕組みを噛み砕くと

配送員(クライアント)が、問い合わせのハガキの隅っこに、こっそりこう書き添えるのです。
> 「自分は大きな封筒を受け取れる準備ができています。最大4096バイトまでなら大丈夫ですよ!」

これを受け取った相手(DNSサーバー)は、「おっ、話がわかるやつだな。じゃあ、セキュリティ証明書も全部詰め込んで送るよ!」と、大きなデータを一度に送ってくれるようになります。

これが、OSI参照モデルの枠組みを壊さずに、既存の仕組み(UDP)を拡張したEDNS0の正体です。

—

4. パケットの中を覗いてみよう(OPT擬似レコード)

「どうやって『大きな封筒が使える』と伝えているの?」と疑問に思いますよね。
EDNS0は、DNSのメッセージの中に「OPT擬似レコード」という特別な印を付け加えます。

実際に、ネットワークの診断ツール dig コマンドを使って、その様子を見てみましょう。

# google.com の情報を、EDNS0を有効にして問い合わせてみる
# +edns=0 は「EDNS0を使うよ」という指定です
dig @8.8.8.8 google.com +edns=0

# --- 実行結果のイメージ(一部抜粋) ---
# ;; OPT PSEUDOSECTION:
# ; EDNS: version: 0, flags:; udp: 4096

この実行結果にある ; udp: 4096 という部分に注目してください!
これが、「私は4096バイトまでの特大封筒を受け取れますよ」という宣言なんです。

—

5. 実務で役立つ設定と注意点

インフラエンジニアとして現場に出ると、この「封筒のサイズ」が原因でトラブルが起きることがあります。

例えば、会社のファイアウォールが「DNSは512バイトまでが常識だ!」と古すぎるルールを守っていると、EDNS0の大きなパケットを「攻撃だ!」と勘違いして捨ててしまう(ドロップする)ことがあるのです。

もしあなたがDNSサーバー(BINDなど)を構築するなら、以下のような設定を意識することになります。

// BIND (named.conf) の設定例
options {
    // サーバーが受け付ける最大UDPパケットサイズを指定します
    // 一般的な推奨値は 4096 ですが、ネットワーク環境に合わせて調整します
    edns-udp-size 4096;

    // 応答として送信する最大パケットサイズ
    max-udp-size 4096;
};

トラブルを避けるためのヒント

  • 「名前解決がたまに失敗する」という時は、大きなパケットが途中のルーターやファイアウォールでブロックされていないか疑ってみてください。
  • 最近のセキュリティ対策(DNSSEC)を導入するには、このEDNS0が正しく動いていることが絶対条件になります。

—

6. まとめ:一歩ずつ理解を深めるために

EDNS0は、一見すると地味な裏方の技術です。しかし、これがなければ現在の安全で高速なインターネットは成り立ちません。

  • 昔: 512バイトの「ハガキ」制限。
  • 今: EDNS0による「特大封筒(4096バイトなど)」の活用。
  • 恩恵: DNSSECなどの高度なセキュリティ機能がスムーズに動く。

OSI参照モデルの第7層(DNS)が、第4層(UDP)の制限を賢く乗り越えるために編み出した知恵、それがEDNS0なんですね。

最初は「パケットサイズ」や「擬似レコード」といった言葉に戸惑うかもしれませんが、「大きな情報を送るための、配送ルールのアップデートなんだ」とイメージできれば、もうあなたは初心者脱出です!

これからも、パケットが運ぶ情報の物語を楽しんで学んでいきましょう。応援しています!

コメント

タイトルとURLをコピーしました