NAT和两座桥梁

我有一个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 

现在它正在工作…也许我之前做了一些其他的错误…