這句話應該要解釋我如何做到這一點,但我不明白......
接下來,我新增了以下規則,將所有 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
這應該有效,但事實並非如此。我的iptables
是空的,內容/etc/network/interface
如下:
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
broadcast 127.255.255.255
up ip route replace 127.0.0.0/8 dev lo
# Auto generated venet0 interfaces
auto venet0
iface venet0 inet static
address 127.0.0.1
netmask 255.255.255.255
broadcast 0.0.0.0
up route add default dev venet0
iface venet0 inet6 static
address ::2
netmask 128
up ip -6 r a default dev venet0
up ip addr add {...externalIPv6...} dev venet0
auto venet0:0
iface venet0:0 inet static
address {...externalIP...}
netmask 255.255.255.255
答案1
我將以此作為答案,儘管它還不是(但希望如此)。我這樣做的原因是我相信這個問題需要多次迭代才能解決。
你的 iptables 規則對我來說看起來沒問題,但我認為你的 /etc/network/interfaces 檔案有幾個問題。您是從其他地方複製的,還是根據您的需求進行了修改?
我看到的問題:
- 為什麼要指定環回介面?通常,該節的前兩行就可以。
- 您正在將兩個位址指派給同一介面 venet0。
- 第一個 venet0 節的網路遮罩限制太多,與廣播位址不一致。
- venet0 的第二節分配有兩個位址:您的外部 IPv6 位址和 ::2。
- 在 venet0 的節中,網路遮罩限制太多。
- 同一個介面 venet0/venet0:0 同時分配了環回位址和外部位址,有什麼意義?
如果你告訴我們你想用 VMWare 做什麼,那將會很有幫助,現在我很茫然。