要約

  • RFC 3442はDHCPv4のオプション121で、プレフィックス長を明示した経路を配布できるようにし、従来の静的経路オプションが前提としていたアドレスクラスの考え方を補った。
  • 対応クライアントはその経路をインストールし、Routerオプションやオプション33と同時に届いた場合には121を優先する。RFCは、誤った次ホップがトラフィックを誤誘導し得るとも警告した。

アドレスリースは割り当てのように聞こえる。ネットワークがホストに、使えるアドレスとその期限を伝える。しかしホストには、ローカルリンク外の宛先へパケットを送るための次の行き先も必要だ。RFC 3442は、この二つ目の判断をDHCPの設定経路に持ち込んだ。クラスレス静的経路オプションは、宛先プレフィックスと、そこへ到達するためのルーターアドレスを渡せる。

背景には仕様と実態のずれがあった。RFC 2132のDHCPオプション33は、宛先ごとのマスクを持たない静的経路を記述した。ネットワーク境界をアドレスクラスから推測できるという前提である。クラスレスルーティングではその前提が成り立たない。10.0.0.0/8と10.0.0.0/24は先頭が似ていても別の宛先だ。どのビットが経路を定義するのかをクライアントが知るには、プレフィックス長が要る。

オプション121はその範囲をコンパクトに符号化した。宛先記述子はプレフィックス長から始まり、有意なアドレスオクテットだけを含む。その後に4オクテットのルーターアドレスが続く。クライアントは宛先を再構成し、マスク外のビットをゼロにしてから経路をインストールする。RFC 3442はDHCPをルーティングプロトコルに変えたわけではなく、インターネット全体の経路表を配布したわけでもない。ホスト設定に使われているDHCPサーバーから、選択された静的経路をクライアントへ届けられるようにした。

その結果、重要な選択が管理境界を越える。経路表はホスト側に残り、クライアントは引き続き独自の処理規則を適用する。それでも経路の起点は、各端末でのローカル編集からDHCPサーバーの設定へ移り得る。オプション121に対応するクライアントは、ローカルサブネットの例外を除き、受信した経路をインストールしなければならない。121と従来のRouterオプションまたは33が同時にあれば、クライアントは後者を無視する。要求リストの順序も重要で、121はRouterと33より前に置く必要がある。

互換性は設計の一部だった。121を実装していないクライアントは、このオプションを無視しなければならない。そのためRFC 3442は、古いクライアントにも既定ルーターを伝えられるよう、管理者がRouterオプションも送ることを推奨した。これは移行策であり、対応機器の割合や普及速度を示す証拠ではない。標準は優先規則を定められても、すべてのクライアントに実装を強制できない。

この境界にはセキュリティ上の帰結もある。RFC 3442は、誤ったルーターアドレスがサービス拒否を招いたり、トラフィックを盗聴者へ向けたりし得ると明記した。危険は121固有ではなく、従来のRouterや静的経路オプションも誤った次ホップを指せる。オプション自体は、その経路が認可され、正しく、安全であることを証明しない。DHCPメッセージ認証を使う場合も、それは別の仕組みであり、送信者を確認するだけで経路判断の妥当性まで保証するものではない。

パケットサイズも設定の受け渡しに影響する。長い経路一覧は従来のDHCPメッセージサイズを超えることがあるため、RFC 3442はより大きなメッセージの交渉に触れ、長いオプションの連結機能を必須とした。複数のIPサブネットがある共有リンクでは、次ホップ0.0.0.0を使って直接到達可能なローカルサブネットを示す特別な方法も定めた。必要なスタック機能がないクライアントは、その経路を無視しなければならない。

RFC 3442の歴史的な変更は控えめだが、制御面の変化を示している。ルーティングがクラスレスになれば、アドレス設定も経路の範囲を表せなければならない。リースはローカルな転送ポリシーを運ぶ手段になり得た。インストール地点はクライアントのままでも、DHCP管理者が経路を選ぶ主体となり、次ホップの判断はアドレス割り当て以上の意味を持つ。

出典