我租用了一台具有靜態IP位址的伺服器上的空間,我想在這台伺服器上設定透明代理。
在配置 Squid 以使用偵聽器進行測試後http_access allow all
,我想設定 iptables 資訊。我只有一個乙太網路連接並安裝了靜態 IP 位址。我查找了一些有關如何使用單一網卡執行此操作的文檔,但找不到任何文檔。 (有許多可供兩個或更多的網卡使用,但不適用於單一網卡。)
目前它給了我這個輸出:
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 的情況下完成此任務?如果是這樣,您可以給我一個簡單的命令來設定它們嗎?
資料來源:
- http://wiki.ubuntuusers.de/Squid
- http://freecode.com/articles/configuring-a-transparent-proxywebcache-in-a-bridge-using-squid-and-ebtables
- 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
這應該有效,但事實並非如此...