ローカルの傍受プロキシは新しい外向き接続を開きます。包括的な OUTPUT リダイレクトがそのソケットも捕捉すると、プロキシは自分自身のリスナーへ送り返されます。

既存の IPv4 iptables NAT 構成では、専用のサービス ID によってそれらのソケットを区別できます。

-A OUTPUT -p tcp -m owner ! --uid-owner proxyuser \
  -m multiport --dports 80,443 -j REDIRECT --to-ports 8080

このルール断片は、傍受可能なリスナーがすでにポート 8080 に存在し、プロキシの外向きソケットが proxyuser に属することを前提としています。そのユーザーの接続はこのルールから除外され、他のユーザーの対象となる接続はリダイレクトされます。

ブラウザは通常、一時的な送信元ポートを選びます。送信元ポート 80 や 443 を照合することは、そのウェブサイト接続を識別したりプロキシを除外したりする確実な方法ではありません。

所有者マッチが扱うのはソケット所有権を持つローカル生成トラフィックです。他のマシンから到着するパケットに対する送信元アドレスポリシーの代わりにはなりません。

既存のルール順序とネットワークポリシーを念頭に置いてください。リダイレクトは生の SOCKS リスナーを傍受アダプターに変えるものではなく、IPv6 にも適切な設定が必要です。

関連記事