「IPをスプーフィングして」という表現は、「ウェブサイトに別のアドレスを見せる」という意味で軽く使われることがよくあります。フォワードプロキシは、前者を行わずに後者を行うことができます。

通常の明示的プロキシ構成では、コンピューターは実際のネットワーク経路を使ってプロキシに接続します。プロキシは宛先への別の接続を開きます。宛先は、プロキシの送信元アドレス、またはその手前のNATデバイスからその接続を受け取ります。

Your application -- connection A -- proxy -- connection B -- website

接続Aと接続Bは、アドレスのラベルを上塗りした1つのTCP接続ではありません。それぞれ独自のトランスポート状態を持っています。プロキシは同じアプリケーションのバイトを中継できますが、周囲のTCPセグメント、確認応答のタイミング、パケットの境界は異なります。

戻りのトラフィックが依然として機能する理由

ウェブサイトは接続Bで応答します。プロキシはその応答を受け取り、関連するデータを接続Aで戻します。両方の区間には、使用するアドレスでトラフィックを受信できる参加者がいます。

パケットの送信元アドレスを偽造するのは別の操作です。受信者が応答をどこへ送るかが変わります。通常のTCP接続の確立はハンドシェイク応答の受信に依存します。他人のアドレスを送信パケットに書くだけでは、そのアドレスで使えるウェブセッションは提供されません。TCP仕様がその接続確立を定義しています。

見える1つのアドレスが身元のすべてではない

ウェブサイトは依然としてアカウント資格情報、Cookie、転送情報を受け取ることがあります。プロキシは依然としてクライアントの接続を受け取ります。これらの事実は操作を送信元アドレスのスプーフィングに変えるものではありません。宛先が観測するネットワーク上の相手を変えることが、やり取り全体を匿名化するよりも狭い範囲である理由を説明しています。

トラブルシューティングでは、どの接続とどの観測者がアドレスを生成したかを尋ねてください。「IPが変わった」は、どこで観測されたかを特定した後にのみ役立ちます。

関連記事