这句话应该可以解释我如何做到这一点,但我不明白......
接下来,我添加了以下规则,将所有 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 做什么,那将会很有帮助,现在我很茫然。