
静的 IP アドレスを持つサーバーをレンタルしましたが、このサーバーに透過プロキシを設定したいと考えています。
リスナー「http_access allow all」を使用してテスト目的で squid を設定した後、iptables を設定したいと思いました。静的 IP アドレスがマウントされたイーサネット接続は 1 つしかないことがわかりました。しかし、少なくとも、これを設定する方法を示したドキュメントは見つかりませんでした。(2 つの物理的に別々の NIC で squid を設定する方法については多く見つかりましたが、1 つの NIC での設定方法については見つかりませんでした)
出力:
root@1:~# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:49 errors:0 dropped:0 overruns:0 frame:0
TX packets:49 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3536 (3.5 KB) TX bytes:3536 (3.5 KB)
venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
inet6 addr: ::2/128 Scope:Compat
inet6 addr: 2a01:[....]external-ipv6[...]/128 Scope:Global
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:551353 errors:0 dropped:0 overruns:0 frame:0
TX packets:455717 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:351211942 (351.2 MB) TX bytes:267054641 (267.0 MB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:[...]external-ipv4[...] P-t-P:[...]external-ipv4[...] Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
iptables についてはたくさん読みましたが、ebtables についても少し読みました。そして今行き詰まっています。次に何をすべきかわかりません。
現時点では、私の iptables は完全に空です。
透過プロキシを正しく動作させるには ebtables が必要ですか? 正しい iptables があれば、ebtables なしでもこれを実現できますか? もしそうなら、設定するための文字列を教えていただけると大変助かります。
#
出典: wiki[.]ubuntuusers[.]de/Squid http://freecode.com/articles/squid と ebtables を使用してブリッジで透過プロキシ Web キャッシュを構成する http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html
#
特にこの引用文は、これを行う方法を説明しているはずですが、わかりません...
次に、すべての http リクエスト (ポート 80 に着信) を Squid サーバー ポート 3128 に転送するための次のルールを追加しました。
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
と
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j REDIRECT --to-port 3128
これは動作するはずですが、動作しません...
答え1
このシナリオでは透過プロキシは使用できません。
透過プロキシは、トラフィックのネットワーク ルート内に存在して、すべてのトラフィックを傍受して書き換え、Squid にリダイレクトできるようにする必要がありますが、サーバーがネットワーク パスの外部にあるため、これを行う方法はありません。
このサーバーをプロキシとして使用する場合は、通常のフォワード プロキシにする必要があります。