eth0上的多个IP,桥接到虚拟机和路由

现在的情况:

我有一台运行3个虚拟机的主机。 一个IP为eth0(xxx.xxx.xxx.239),一个为eth0:1(yyy.yyy.yyy.35)。 这对我来说很好…

Host (eth0) (xxx.xxx.xxx.239) | | <- (virbr0) -> |-- VM1 (10.0.0.21) |-- VM2 (10.0.0.22) |-- VM3 (10.0.0.23) 

…但我想要的是通过一个接口上外部IP(yyy.yyy.yyy.35)和第二个(10.0.0.23)接口访问我的第三个虚拟机addtional 内部目的

 Host (eth0) (xxx.xxx.xxx.239) | | <- (virbr0) -> |-- VM1 (10.0.0.21) |-- VM2 (10.0.0.22) |-- VM3 (10.0.0.23) Host (?!?) (?!?) | |-- VM3 (yyy.yyy.yyy.35) 

如何实现这个和我需要哪些iptable规则?

提前致谢。

首先使eth0成为一个桥梁的一部分,你可以说是最好的,可以说phybr0 。 然后分配一个额外的网卡到您的虚拟机桥接到phybr0 。 最后让虚拟机从本地内部分配yyy.yyy.yyy.35地址。 另外,你的主机将在phybr0上运行它的xxx.xxx.xxx.239 IP地址,而不是eth0 。 这可能是一个起点: http : //www.linux-kvm.org/page/Networking#public_bridge 。

否则,对于涉及NAT的解决scheme,请查看iptables DNAT 。 这个实现起来相当简单,iptables的手册页中的例子就足够了。 然而,我会首先意识到NAT的局限性。