web-dev-qa-db-ja.com

ローカル透過プロキシ

プロキシをサポートしていないアプリケーションがありますが、そのトラフィックをローカルプロキシに送信する必要があります。 IPTABLESを設定して、トラフィックを特定のIPおよびポート(80)に透過的にリダイレクトし、インターセプトしてローカルプロキシにリダイレクトするようにします。残念ながら、私が見つけたすべての例では、trasnsparentプロキシがNATTINGを実行するGWに設定されていると想定しています。 NATを実行しなくても、トラフィックを透過プロキシ(SQUID)にリダイレクトできますか?例をいただければ幸いです

4
Jofre

はい、可能です。 Linuxマシンでポリシールーティングを使用して、 このページ に示すように、トラフィックをSquidプロキシにリダイレクトできます。

手順を要約すると:

  1. リダイレクトされるトラフィックをマークするためにiptablesでマングルルールをセットアップします。
  2. Squidマシンへのデフォルトルートで別のルーティングテーブルをセットアップします。
  3. マングルルールで使用される値に従ってパケットがマークされたときに、新しく定義されたルーティングテーブルを使用するようにIPルールをセットアップします。
  4. IptablesがクライアントIPからSquidマシンへのトラフィックを許可することを確認してください。
3
Khaled

いいえ、それは不可能です。トラフィックをリダイレクトする場合は、natを使用する必要があります。

 # iptables -A OUTPUT -t nat -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128
2
Ipor Sircer

次のコマンドを実行して、(ローカルプロセスから)ポート80に向かうすべてのトラフィックをリダイレクトします。

Sudo iptables -t nat -A OUTPUT -p tcp \
  -m owner ! --uid-owner root --dport 80 \
  -j REDIRECT --to-port 8080

次に、ローカルプロキシプロセスがrootとして実行されていることを確認します。これは、プロキシが自身にトラフィックをリダイレクトしないようにするためです。 rootとしてプロキシを実行したくない場合は、別のユーザーとして実行し、iptablesコマンドを編集してrootを新しいユーザー名に変更します。

このコマンドは、プロキシがポート8080でリッスンしていることを前提としています。

また、この質問は別の質問と似ています 私が回答しました

0
Tom Saleeba