すべてのトラフィックをソックス5プロキシポートに転送

すべてのトラフィックをソックス5プロキシポートに転送

私は次の答えに従いました。ローカル以外のすべてのトラフィックをソックスプロキシにリダイレクトする

root@xxx:~# cat /proc/sys/net/ipv4/ip_forward
1

root@xxx:~# netstat -tapln | grep :4545 | grep LISTEN
tcp        0      0 127.0.0.1:4545          0.0.0.0:*

カールを介してソックス5を接続すると、ポートは正しく機能します。

root@xxx:~# curl -x socks5h://127.0.0.1:4545 ifconfig.co
1.2.3.4

iptablesアクティベーションルールを実行すると、マイコンピュータのIPが表示されます。

iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-ports 4545

root@xxx:~# curl ifconfig.co
9.8.7.6

ただし、ポート4545はソックス5プロキシです。動作する必要があります。

私はそこに何が問題なのか理解していません。

FoxyProxyを使ってみました。良い結果。しかし、すべてのトラフィックをソックス5プロキシを介してリダイレクトしたいと思います。どうすればいいですか?

PS:私のiptablesにはDROP / REJECTルールはありません。私にはちょうどこの3つの規則がある。

ベストアンサー1

まず、SOCKSプロキシはある種の透過モードでも機能できるはずです(つまり、SOCKSプロトコルを使用して要求を受信しませんが、以下を使用する必要があります)。付加情報iptables'アクション)からREDIRECT。これリンクに関するQ&A同じように言う:

この規則によると、要求が到着するポートは次のとおりです。正しく機能するには、「モノ」をうまく設定する必要があります。

したがって、このソリューションが要求した以上の作業を行うことを期待しないでください。すべてをSOCKSプロキシにリダイレクトします。

欠落しているのは、実行中のホストでテストしていることです。iptables REDIRECT。つまり、ローカルに発信されるトラフィックのルータではないため、PREROUTINGチェーンは呼び出されません。

使用する必要がある(または追加的には)nat/OUTPUTチェーンです(ただし、後述の追加の問題を参照)。

iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-ports 4545

これを単独で試してみると、ループが発生します。 SOCKSプロキシ(実際に透過的に動作すると仮定、上記を参照)は現在、それ自体でリダイレクトされ、何も起こりません。これを防ぐ最も簡単な方法は、例外処理のために専用のユーザーまたはグループでエージェントを実行することです。したがって、エージェントがユーザー...として実行されているとし、proxy上記の内容を次のように置き換えます。

iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner proxy -j REDIRECT --to-ports 4545

および/またはrootユーザーをリダイレクトしないように選択することもできます。たとえば、この例外を追加することもできます。今後(-Iここで) 前の行は次のようになります。

iptables -t nat -I OUTPUT -p tcp -m owner --uid-owner root -j RETURN

最後の注意:以下のためREDIRECTに廃止されました。TPROXY、しかし使い方は少しトリッキーです。そして、まだ透明なプロキシに対する(他の)サポートが必要です。

おすすめ記事