要約

  • Mobile IPv4 の逆方向トンネルは、移動先では不適切と判定され得る帰属アドレスを内側に残し、外側のヘッダーで現在の経路に合う送信元を示した。
  • 端末が先に包んで外地エージェントへ渡す方式では、包まないパケットを逆方向トンネルへ入れてはならない。これは現地向け通信を選別するための意味を持つ。
  • 登録の受理、同一リンクから来たことの確認、帰属エージェントの対応表との一致は別々の検査である。いずれも単独では通信の到達や暗号化を保証しない。

プリンターへの近道を残す

出先のネットワークに接続した端末から、その場のプリンターへデータを送る。通信相手がすぐ近くにいるのに、端末が以前から使うアドレスの都合で、すべてのデータを遠くの帰属先へ戻す必要があるだろうか。

2001年1月の RFC 3024 は、Mobile IPv4 の逆方向トンネルを定義する一方で、このような現地資源への通信を選別できる方式を記している。端末が外地エージェント向けに包んだパケットは帰属エージェントへ転送する。包まなかったパケットは逆方向トンネルに入れず、通常の転送に任せる。

包みの有無は、単なる実装上の都合ではない。この配送方式を登録で選んだ後には、外地エージェントが守るべき区別になる。ただし、通常の転送に任せることと、プリンターまで必ず届くことは同じではない。現地の経路やアクセス方針は、引き続き通信を制約する。

なぜ帰属先へ戻る経路が必要になり、しかもそこから外す選択が重要だったのか。発端には、移動してもアドレスを変えないという設計がある。

受信の工夫だけでは済まなかった

1996年10月の RFC 2002 は、端末がサブネットを移ってもホームアドレス、すなわち帰属アドレスを維持する仕組みを説明した。帰属エージェントは、そのアドレス宛てのデータを現在の気付アドレスへトンネルで送る。アプリケーションに見える通信端点と、今いる場所を分ける発想だった。

気付アドレスには二つの形がある。外地エージェントのアドレスを複数の移動端末が共有する形と、端末自身が取得してトンネルを終端する形だ。本稿の配送方式の中心は前者であり、すべての端末が訪問先で専用の IPv4 アドレスを持つと考えてはいけない。

当初のモデルは、経路選択が主に宛先を見て行われることを前提にしていた。受信データは帰属エージェントを通っても、送信データは必ずしもそこへ戻らず、現地から通信相手へ向かえる。端末が送信元として記すのは、引き続き帰属アドレスでよいはずだった。

ところが、ネットワークの入口では送信元も調べられる。2000年5月の RFC 2827 は、下流ネットワークから受け取るパケットについて、接続元に適切な送信元プレフィックスかを確認する対策を扱った。偽装アドレスの範囲を狭めるための入口フィルタリングである。

移動端末の帰属アドレスが本物でも、そのアドレスは訪問先の接続から現れるべき範囲に入っていないかもしれない。フィルターが否定するのは、必ずしも端末の正体ではない。その場所から送られるパケットとしての整合性だ。RFC 2827 自体も Mobile IP との衝突に触れ、逆方向トンネルを挙げている。

内側の相手、外側の相手

1998年5月の RFC 2344 に現れ、後に RFC 3024 が置き換えた逆方向トンネルは、送信データをまず帰属エージェントへ運ぶ。そこから本来の相手へ転送すれば、訪問先から遠方の帰属アドレスをむき出しで送る問題を避けられる。

その仕掛けは、別のアドレスで元の通信端点を置き換えることではなく、経路に使う外側のヘッダーを加えることにある。RFC 2003 の IP 内カプセル化では、内側の送信元と宛先が元の通信を表し、外側の送信元と宛先がトンネルの区間を表す。

外地エージェントから帰属エージェントへ向かう外側の送信元は、気付アドレスになる。内側には移動端末の帰属アドレスと通信相手のアドレスが残る。フィルターが見る外側の送信元を、その経路に適したものにするのであって、端末の帰属アドレスを偽物だったことにするわけではない。

ここで「逆方向」は、元からある帰属先から移動先へのトンネルと方向を対比した言葉だ。両方向の終端やカプセル化方式が対応していても、実際のネットワークで同じ物理経路を往復するとは限らない。また、包むことは暗号化ではなく、内容を秘匿する保証にもならない。

自動で包む方式の便利さと限界

直接配送では、端末は外地エージェントをデフォルトルーターとして使い、元のパケットを包まずに渡す。外地エージェントが必要な転送処理を行い、帰属先へ向かう外側のヘッダーを付ける。端末から見れば、特別な包みを一つずつ用意しなくてもよい。

しかし、この方式には選択的な逆方向トンネルの機能がない。単播の転送を支える一方、端末が「これは現地に残す」と包み方で指示する区別を持たない。帰属先を経由するかどうかを細かく選びたい場合、別の配送方式が必要になる。

カプセル化配送では、端末が外地エージェント宛てにまず包む。その外側の送信元も、実は端末の帰属アドレスである。外地エージェントがこの包みを外し、気付アドレスを送信元とする新しい包みを付けて、帰属エージェントへ送る。

二段階の包みを一つと考えると、アドレスの説明を誤る。端末が外地エージェントの気付アドレスを自分の送信元として使っているわけではない。現地で代理へ届ける段階と、代理が帰属先へ運ぶ段階では、外側のヘッダーの役割が違う。

そして、この方式を選んだ後に包まず送るデータは、逆方向トンネルに入れてはならない。冒頭のプリンターの例は、この規則があるから成り立つ。ブロードキャストやマルチキャストを外地エージェント経由で逆方向に運ぶ場合にも、カプセル化配送が必要になる。

「使える」と「選べる」は同じではない

エージェントの広告にある T ビットは、逆方向トンネルを提供するという申し出である。登録要求の T ビットは、端末がそれを求めるという意思表示になる。能力の広告と個別の登録受理を、一つの状態として扱うべきではない。

カプセル化配送を求める場合は、種類130、長さ0の拡張を使う。拡張がなければ直接配送を求めたことになる。T が立っていない要求に、この拡張だけを付けることはできない。認証拡張との並びにも規定があり、外地エージェントが処理した後、帰属エージェントへはそのまま転送しない。

これは配送方法を選ぶための短い指定であり、すべての中継ネットワークが方式に対応しているという証書ではない。登録が通ったという事実から、通信相手までのデータ到達を導くことはできない。

実装が提供すべき範囲も変化した。RFC 2344 は逆方向トンネルを広告する外地エージェントに両方式を要求したが、RFC 3024 は直接配送を必須とし、カプセル化配送を推奨へ変更した。選んだ方式が未対応であることを示す79という拒否コードが、この違いを扱う。

現在の IANA の Mobile IP 登録表 は79の用途を明示している。RFC 3024 の途中には未割り当てとする古い注記が残るが、同じ文書の割り当て節と変更説明、そして登録表を照合すれば、その注記を現状として引用すべきでないことが分かる。

成功表示の後に残る条件

逆方向トンネルを求めた登録が拒否されても、T を外すと登録だけは成功する場合がある。だが、訪問先のフィルターを通るために逆方向トンネルが必要なら、その成功はデータ通信を回復しない。失敗の表示が消えただけで、必要な経路ができたとは限らないのだ。

登録要求には TTL を255にして送り、外地エージェントも255かを調べる規則がある。IP ルーターを経由した要求は値が減るため、遠隔から同一リンクの端末を装う攻撃を制限できる。しかし、同一リンクにいる送信者そのものの認証にはならない。距離の検査と本人確認を混同してはいけない。

帰属エージェント側にも検査がある。外側の送信元が登録された気付アドレスに対応し、内側の送信元が登録された帰属アドレスに対応し、カプセル化方式も一致するかを見る。この検査の実装は必須で、既定で有効にすることが推奨される。対応する登録がない、または方式が違うパケットは捨てるべきものになる。

これは、包みを開けられるから何でも転送してよい、という設計ではない。ただし、アドレスの対応が合っていることも、個々のデータの暗号学的な真正性までは証明しない。なお、登録状態の更新に関する RFC 3024 の一文は、返信ではなく要求を指すべきだと検証済みの技術訂正が示している。

アドレスの重複は、包みだけでは解けない

RFC 3024 の付録は、異なる帰属先で同じ私有アドレスを使う場合も扱う。ただし、外地エージェントと帰属エージェントが共通の到達可能なアドレス空間を持つなどの条件付きである。私有アドレスが重なっても無条件に区別できる、という主張ではない。

エージェントは帰属先、気付アドレス、端末の帰属アドレスなどの文脈を用いる。現地の端末へ対応させるには、登録時に確立したリンク層の関係も必要になる。安全なリンク層の識別が求められ、認証のない共有 Ethernet への適用は推奨されない。

2010年の RFC 5944 も、入口フィルタリングの問題に対して逆方向トンネルを参照している。ただし、RFC 3024 はそもそも一般的なファイアウォール通過を解決対象から外していた。包みを増やせばすべての境界を越えられる、という読み方は歴史にも設計にも合わない。

帰属アドレスを保つこと、訪問先で適切な送信元を示すこと、現地の通信を現地に残すこと。この三つを分けて扱ったところに、この仕組みの特徴がある。便利なトンネルを用意するだけでなく、入れてはいけないパケットを決めることも、通信の自由度を守る仕事だった。