我有一个开放堆栈 VM 实例,其中有两个 NIC 从同一子网添加。两个 NIC 都配置为 DHCP。当我启动 VM 实例时,它会在每个接口上获取一个 DHCP IP。我可以从同一网络上的其他 VM 实例 ping 此 VM 实例,也可以从此 VM 实例内部 ping 其他 VM。当我将浮动 IP 分配给其中一个接口时,就会出现问题。如果将浮动 IP 分配给具有默认网关的接口,我就可以从浮动 IP 访问 VM。
我有两个接口 eth0 和 eth1,并且分配了私有 DHCP IP
[#] ifconfig|egrep "Link encap|inet addr"
eth0 Link encap:Ethernet HWaddr FA:16:3E:44:CA:E5
inet addr:10.0.0.13 Bcast:10.0.0.255 Mask:255.255.255.0
eth1 Link encap:Ethernet HWaddr FA:16:3E:DA:95:C5
inet addr:10.0.0.155 Bcast:10.0.0.255 Mask:255.255.255.0
以下是路由表:
[#] netstat -ar
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth1
default host-10-0-0-1.s 0.0.0.0 UG 0 0 0 eth1
如果我将某个浮动 IP 与私有 IP“10.0.0.155”(分配给 eth1)关联,并且默认网关也配置为 eth1 之外,如上面的路由表所示,那么我就可以通过浮动 IP 访问 VM。但是,如果我将浮动 IP 与私有 IP“10.0.0.13”(分配给 eth0)关联,那么我就无法通过浮动 IP 访问 VM。现在,如果我删除此默认路由并添加具有相同网关的新路由,但这次使用接口 eth0。然后,在将浮动 IP 与 IP“10.0.0.13”(分配给 eth0)连接时,我可以访问 VM,但如果我将浮动 IP 分配给私有 IP“10.0.0.1155”(分配给 eth1),则现在无法访问 VM。