如果你和我一样是用Redhat的packstack安装OpenStack的话,注意最新版的packstack有一个bug。如下图所示,假设你启动的虚拟机的内网ip是10.0.0.2, 而外网ip是172.24.4.227。你会发现从host无法ping通172.24.4.227, 而在VM里面却可以访问外网。


用packstack安装OpenStack后无法ping通VM的解决办法_第1张图片

问题是出在iptables上,打开/etc/sysconfig/iptables, 找到下面两句话并注释掉或者删除掉即可。

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited


在我的上一篇引用的博文里正好提到了iptables的工作原理,ping VM的时候走的路径是OUTPUT->FORWARD->INPUT, 在任何一个点把包给拒掉都会引起ping不通。


[更新] 在Icehouse或更新的版本里,解决这个问题,添加icmp规则即可。

nova secgroup-list-rules default

nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0