プライベートなフォワードプロキシは、ノートPCとルーターの間に物理的に置く必要はありません。同じLAN上の別のマシンで、ネットワークインターフェースを1つ使えば済みます。

ノートPCはプロキシのアドレスと待ち受けポートに接続します。プロキシのプロセスはウェブサイトやその親に向けて別の接続を開きます。同じインターフェースが両方の会話を運び、ホストのルーティングテーブルが次のホップを選びます。

client → proxy listener
proxy → existing router → destination

プロキシを明示的に選んだアプリケーションにはこれで十分です。Linuxでは、このごく普通の構成に、アプリケーションの要求を中継するためだけのIPフォワーディングの有効化は不要です。

デフォルトゲートウェイは別の問いに答える

クライアントのデフォルトゲートウェイは、そのクライアントが他のネットワークへ送るパケットを扱います。この設定を変えても、ブラウザがHTTPプロキシ要求やSOCKSネゴシエーションを出すようにはなりません。同様に、ブラウザにプロキシを入力しても、他のすべてのアプリケーションがそのマシンを経由するわけではありません。

1台のホストが両方の役割を担うことはできますが、その場合は管理すべき設定が2つになります。プロキシサービスと、ルーティングまたはファイアウォールの機能です。インターフェースを増やせばネットワークの分離は容易になりますが、それはトポロジーの選択であり、明示的HTTPプロキシが課す前提条件ではありません。

この区別は、よくある失敗した実験も説明します。プロキシサーバーの転送ルールを編集しても、別のルーターを通るクライアントの直接接続には何の影響もありません。パケットはそのサーバーを一度も通過していないからです。

要件が強制利用であれば、代替の外向きトラフィックをどこで制御できるかを定めます。1インターフェースの明示的プロキシは有効なサービスであり得ますが、ネットワークポリシーを強制するのは別のゲートウェイです。パケットが実際に通る場所に強制を置いてください。

関連記事