现在的情况:
我有一台运行 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)用于内部目的的接口:
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 规则?
提前致谢。
答案1
你最好先做eth0桥梁的一部分,可以说phybr0。然后为您的虚拟机分配一个额外的 NIC,该 NIC 桥接到phybr0. 最后让虚拟机拥有35地址本身分配给它。此外,您的主机随后将运行其xxx.xxx.xxx.239IP 地址phybr0, 并不是eth0。这可能是一个起点:http://www.linux-kvm.org/page/Networking#public_bridge。
否则,对于涉及 NAT 的解决方案,请查看iptables DNAT。这相当容易实现,iptables 手册页中的示例就足够了。不过,我首先要意识到 NAT 的局限性。