PPxPでのオンデマンド接続の実現方法は仮アドレスを使ったパケット検知です。 この方法はカーネルの特別な機能を用いないので、OSへの依存度が低いという 利点を持っています。しかし、1つだけ小さな問題があります。接続前に生成 されたパケットは仮アドレスを使っています。プロバイダなどへのダイアルアッ プ接続の場合、実アドレスは毎回同じとは限りません。接続後に実アドレスが 仮アドレスと異なってしまうと、接続前に生成されたパケットは本来の目的を 果たさなくなるのです。結果として、数個のパケットが消失します。これは小 さな問題ですが、時としてオンデマンド接続の存在価値をなくすような大きな 欠点にもなります。これがダイナミックアドレス問題です。
Linuxカーネルではこの問題の対策としてIPマスカレードを応用しています。 仮アドレスから実アドレスになった時点でIPマスカレードの変換テーブルを書 き換えてしまうという方法です。確実かつ安全な方法ですが、その通信がIPマ スカレードの対象になっていなければなりませんし、なによりもLinux以外で は使えない機能です。PPxPでは開発当初からダイナミックアドレス問題を重要 課題の1つとして扱って来ました。その対策はパケット再構築という地味で力 ずくなものですが、OSに依存せず、単一ホストからの接続にも有効です。
オンデマンド接続をする場合は接続後もそのホストにとって有効であり続ける ような仮アドレスを選択する必要があります。
PPxPはLinuxカーネルでおなじみのIPマスカレード機能も持っています。アプ リケーションレベルでの実装と言うことで、BSDのpacket aliasingライブラリ の方が近いかも知れません。PPxPのIPマスカレード機能はパケット再構築機能 の副産物として実装されました。ですから、あまり完成度の高いものではあり ません。
IPマスカレード機能を使うには、マッパーフィルタを使います。たとえば、次 のようにマッパーフィルタを登録すると、192.168.1.0というプライベートネッ トワークからそのまま通信することができるようになります:
ppxp> filter ip +mO -S 192.168.1.0/24
なお、PPxPのIPマスカレード機能を使う場合はIPのヘッダ圧縮機能(IP.VJ)を 使わないようにしてください。通信データが壊れるおそれがあります。