如果你和我一樣是用Redhat的packstack安裝OpenStack的話,注意最新版的packstack有一個bug。如下圖所示,假設你啓動的虛擬機的內網ip是10.0.0.2, 而外網ip是172.24.4.227。你會發現從host無法ping通172.24.4.227, 而在VM裏面卻可以訪問外網。
問題是出在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