我有一个Debian Squeeze服务器(作为虚拟服务器的路由器和主机)与两个网卡 – eth0的互联网,eth1的本地networking。 我安装了KVM,所以我创build了br0(eth0,vnet0)和br1(eth1,vnet1)。 现在我需要在这个服务器上设置本地networking访问,但它不工作:(我该怎么做才能从本地networking访问互联网(br1上的stream量)?除了局域网上的互联网访问,一切正常。
iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward
如果我不使用网桥,这种configuration工作(与eth0不是br0)。
MASQUERADE目标有点“神奇”,因为它使用在输出接口上设置的IP来源stream量。
您可以在参数中使用带有公共IP地址的SNAT目标:
iptables -t nat -A POSTROUTING -o br0 --to-source WXYZ -j SNAT
我想要使用MASQUERADE目标(例如,如果您的公共IP更改),则应该将该规则放置在公用地址设置的接口eth0上:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
嗯,我在iptables中设置了日志logging,并且有从br1到br0的stream量。 然后我检查br0上的tcpdump,本地networking上的所有数据包都带有本地IP地址。 我再次检查iptables,添加了相同的iptables命令:
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
现在它正在工作…也许我之前做了一些其他的错误…