12

2つのインターフェースを備えたゲートウェイシステムとして機能するUbuntuLinuxシステムがあります。1つのインターフェイスはローカルネットワーク用で、もう1つのインターフェイスはインターネット用です。私はそれを介してトラフィックをまったく問題なくルーティングすることができます。iptables内部インターフェイスからのアウトバウンドトラフィックを転送するために2つのルールを使用します。

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT

iptables次に、インターフェイスを介してネットワークを離れるすべてのtcpポート80および443トラフィックをフィルタリングしてリダイレクトし、eth1tcpポート9090のループバックインターフェイスにあるプロキシサーバーに送信するルールを作成する必要があります。

私はSO全体を検索してきましたが、うまくいく例を見つけることができませんでした。これを行うための効率的な方法はありますか?

4

2 に答える 2

16
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 9090

HTTPSは透過プロキシでは使用できません。いくつかのハックがありますが、それは意味がなく、役に立たないです。

于 2012-05-23T21:09:57.187 に答える
2
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT

どこ:

  • squid-box:あなたのイカサーバー
  • ローカルネットワーク:あなたのネットワーク(私の場合は192.168.0.0/24です)
  • iptables-box:iptablesソフトウェアが存在する場所(通常はゲートウェイ、私の場合は192.168.1.1)

1つ目は、iptables-boxからsquid-boxにパケットを送信します。2つ目は、応答がクライアントに直接送信されるのではなく、iptables-boxを介して返送されるようにします(これは非常に重要です!)。最後の1つは、iptables-boxが適切なパケットをsquid-boxに転送することを確認します。必要ないかもしれません。YMMV。'-ieth0'を指定してから'-oeth0'を指定したことに注意してください。これは、入力インターフェイスeth0と出力インターフェイスeth0を表します。パケットが異なるインターフェイスで出入りする場合は、それに応じてコマンドを調整する必要があります。

これらのコマンドを/etc/rc.d/の下の適切な起動スクリプトに追加します

FROM:http ://www.tldp.org/HOWTO/TransparentProxy-6.html

于 2014-04-07T16:45:08.863 に答える