静的 IP アドレスを持つサーバーのスペースをレンタルし、このサーバーに透過プロキシを設定したいと考えています。
リスナーを使用してテスト目的で Squid を設定した後http_access allow all
、iptables 情報を設定したいと思いました。静的 IP アドレスがマウントされた Ethernet 接続は 1 つしかありません。単一の NIC でこれを行う方法に関するドキュメントを探しましたが、見つかりませんでした。(2 つ以上の NIC に関するドキュメントはたくさんありますが、単一の 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 が必要ですか、それとも ebtables なしでも正しい iptables があれば十分でしょうか。もしそうなら、設定するための簡単なコマンドはありますか。
出典:
- http://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
これは動作するはずですが、動作しません...