正確なiptablesコマンドラインに問題がありますが、ポート80に向かうすべての発信パケットをsquidプロキシに再ルーティングすることにより、1台のPCにリモートの透過的なsquidプロキシを使用させようとしています。
http://tldp.org/HOWTO/TransparentProxy-6.html のmini-HOWTOには、2つの「極端な」ケースに適したリンクがいくつかあります。3つ(またはそれ以上)のマシンセットアップで、クライアント、ルーター、プロキシ、および3つすべてが同じマシン上にある単一のマシンセットアップ。
私のセットアップでは、IPが192.168.1.100のマシン(fooと呼ばれる)があります。通常、192.168.1.1のルーターを介してインターネットに接続します。ルーターはNATで、パブリックIPを持っています。この場合、fooもOpenVPNトンネルを介して接続されます(fooのトンネルアドレスは10.8.0.5/6)squidを実行するbar(リモートアドレス10.8.0.1)というマシンにiptablesを使用して、ポート80に向かうfooからポート3128のbarのsquidプロキシにすべての発信パケットをルーティングしたいと思います。
どのチェーンとどのターゲットを使用するかがわかりません。私のすべての試みは違法であるか(-tnatおよび--to-destinationのない-AOUTPUT)、またはまったくうまくいきませんでした(-A PREROUTING、OUTPUT、POSTROUTINGなどのさまざまな組み合わせ)。
編集:私が得たと思う最も近いものはこれでした:
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to 10.8.0.1:3128
現在、ポート80のトラフィックはどこにも到達していませんが、少なくとも処理されています。 -A PREROUTINGの使用は失敗します...おそらく、パケットがマシンを介してルーティングされるのではなく、ローカルで発信されるためですか?
私があなたを正しく理解していれば、あなたがやりたいことは、iptablesを設定するだけでは処理されません。 REDIRターゲットは、ローカルシステムで実行されているプロセスをターゲットにするためにのみ使用できます。 DNATターゲットを使用してリモートsquidボックスに転送しようとすると、リモートsquidボックスがリクエストを適切に処理するために必要な情報の一部が削除されると思います。
少し推測させていただければ。ホストでデフォルトゲートウェイを192.168.1.1のままにして、VPN経由でポート80トラフィックを送信しようとしていると思いますか?
リモートイカは、実際に透過プロキシとして機能できるように、いくつかの構成が必要です。 squidホストで正しいiptablesリダイレクトを設定でき、リモートホストがネットワークパスにある場合は、高度なルーティングを使用して、VPNを介してすべてのポート80リクエストを転送することができます。
P.S.あなたのニーズが正しくコメントを追加することを理解している場合は、ルーティングの設定方法に関する詳細で回答を更新できます。
Fooに移動し、これを実行します:telnet 10.8.0.1 3128
それは機能しますか?その場合、VPNは機能します!
あなたはできますか
GET / HTTP/1.1
Host: www.heise.de
ページが表示されますか?次に、squidは透過プロキシとして機能するように構成されます。
その場合、リンクの簡単なルールが機能するはずです。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.8.0.1:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d 10.8.0.1 -j SNAT --to iptables-box
(fooはあなたが取り組んでいるiptables-boxです)
これは機能しますか?
ここでは、squidとiptablesを使用した透過プロキシに関する簡単な記事を見ることができます http://www.linuxconfig.net/2009/11/14/creating-transparent-proxy-with-squid -and-iptables.html