我正在尝试通过另一个 Xen VM 透明地路由一个 Xen VM 的流量,如下所示:
------- 192.168.250.4 192.168.250.3 ---------
| VM1 | <-----------------bridged----------------> | VM2 | <-----> Internet
------- | with |
| squid |
| proxy |
---------
不要问为什么,只是用 iptables 做实验。我能够通过 VM2 的 Squid 代理(透明模式)成功路由 HTTP 流量
iptables -t nat -A PREROUTING -p tcp --dport 80 –s ! 192.168.250.3 -j REDIRECT --to-port 3128
但我怎样才能简单地通过所有其他流量?已经尝试过此配置,但在尝试从 VM1 ( 192.168.250.4
) 访问 Internet 时出现“连接被拒绝”错误:
vm2:~# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
# route outgoing udp traffic
DNAT udp -- !192.168.250.3 0.0.0.0/0 udp dpt:!80 to:192.168.250.3
# route outgoing tcp traffic
DNAT tcp -- !192.168.250.3 0.0.0.0/0 tcp dpt:!80 to:192.168.250.3
# this is the working squid rule
REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 3128
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
# route incoming traffic
SNAT all -- 0.0.0.0/0 192.168.250.3 to:192.168.250.4
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这里有什么问题?我已经阅读了很多教程,但大多数都不能正常工作......(顺便说一句:/proc/sys/net/ipv4/ip_forward
是 1)