通过无数次的尝试,终于搭建好了完整的Openstack,原本VM能够获取到IP地址,可是等到我大功告成的时候,忽然发现外部网络却不能ping进VM,我但是整整折腾了我几个通宵,这是哭啊。然而,皇天不负有心人,终于找到了一点头绪,我在此记下这一点,以避免之后在遇到不知道怎么办。linux
首先我Openstack环境并无问题,可是为何ping不一样VM呢,是由于我发现以下:ubuntu
在网络节点上,执行ip netns网络
# ip netns qdhcp-6e056e41-e48d-4119-b970-55ff7bae6f2d qrouter-5670bd67-c4ae-45d1-b77c-deb21a33500b
而后我这样呢执行:spa
#ip netns exec qdhcp-6e056e41-e48d-4119-b970-55ff7bae6f2d ping 192.168.100.2 #这里的192.168.100.2是VM的IP地址
PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data.
64 bytes from 192.168.100.2: icmp_req=1 ttl=64 time=13.5 ms
64 bytes from 192.168.100.2: icmp_req=2 ttl=64 time=0.682 ms
64 bytes from 192.168.100.2: icmp_req=3 ttl=64 time=0.662 ms
64 bytes from 192.168.100.2: icmp_req=4 ttl=64 time=0.515 mscode
或者router
# ip netns qrouter-5670bd67-c4ae-45d1-b77c-deb21a33500b ping 192.168.100.2 Command "qrouter-5670bd67-c4ae-45d1-b77c-deb21a33500b" is unknown, try "ip netns help". root@network3:/home/ubuntu# ip netns exec qrouter-5670bd67-c4ae-45d1-b77c-deb21a33500b ping 192.168.100.3 PING 192.168.100.3 (192.168.100.3) 56(84) bytes of data. 64 bytes from 192.168.100.3: icmp_req=1 ttl=64 time=0.270 ms 64 bytes from 192.168.100.3: icmp_req=2 ttl=64 time=0.043 ms ^C --- 192.168.100.3 ping statistics ---
这样看来,并非外部网络ping不进虚拟机,而是缺乏了外部网络进入虚拟机内部网络的路由,我估计是这部分路由没有设置这一路由规则,你也能够用route -n 查看一下有没有内部网络的路由。blog
为了方便起见,我在我使用的网关上添加了这一路由规则:ip
route add 192.168.100.0 255.255.255.0 192.168.0.201
linux系统添加:路由
ip route add 192.168.100.0/24 via 192.168.0.201
192.168.100.0/24是内部网络的地址,192.168.0.201是进入内部网络的跳转地址。这样我就能够畅通无阻的ping进虚拟机里面啦,bingo~!!!虚拟机