狀態:實例在管理平台上正常創建,也能vnc到實例里面使用ifconfig,查看IP得到我們想要的IP,但是在除了計算節點以外的機器ping實例就是不通。
操作:主要為了測試網絡51刪除,重新創建網絡51,重新創建實例這一套流程導致的。
解決辦法:
在計算節點使用命令:
tcpdump -i br51 port 22
監聽網橋br51,在其他機器嘗試ssh登錄實例。如果監聽的網橋有流量,表示ssh請求能到計算節點。如果實例里有tcpdump包最好直接監聽實例的網卡。 如果沒有tcpdump,並且實例不能訪問外網。則在計算節點查看路由緩存,使用命令
[root@node-12 ~]# arp -a ? (172.17.37.5) at fa:16:3e:b9:d0:49 [ether] on br37 ? (172.17.36.7) at fa:16:3e:2e:41:42 [ether] on br36 fuel.domain.tld (172.17.45.15) at 00:0c:29:76:f8:f2 [ether] on eth0 ? (172.17.39.3) at fa:16:3e:c1:69:2f [ether] on br39 node-5 (172.17.47.3) at 00:0c:29:52:c3:ea [ether] on eth2.47 ? (172.17.46.1) at 08:17:35:3c:a2:54 [ether] on eth1.46 ? (172.17.36.8) at fa:16:3e:10:51:20 [ether] on br36 ? (172.17.38.3) at fa:16:3e:74:f9:58 [ether] on br38 ? (172.17.36.3) at fa:16:3e:b8:6b:f4 [ether] on br36 node-9 (172.17.47.4) at 00:0c:29:a9:66:31 [ether] on eth2.47 ? (172.17.37.7) at fa:16:3e:e6:ff:6e [ether] on br37 ? (172.17.37.6) at fa:16:3e:b4:f8:c1 [ether] on br37 ? (172.17.37.3) at fa:16:3e:5c:d4:ef [ether] on br37 ? (172.17.37.10) at fa:16:3e:2d:91:c0 [ether] on br37 ? (172.17.36.5) at fa:16:3e:1f:9e:63 [ether] on br36 ? (172.17.47.2) at 00:0c:29:52:c3:ea [ether] on eth2.47 ? (172.17.36.10) at fa:16:3e:72:5f:8a [ether] on br36 node-10 (172.17.47.5) at 00:0c:29:48:6a:92 [ether] on eth2.47 ?(172.17.51.3) at fa:16:3e:bd:ab:e9 [ether] on br51 ? (172.17.36.9) at fa:16:3e:23:d9:58 [ether] on br36 ? (172.17.36.6) at fa:16:3e:bf:a9:7c [ether] on br36
這里我們可以看到我們實例172.17.51.3的IP地址和mac地址,在實例中查看網卡mac,一致。 iptables -L查看Iptables 規則也沒有發現實例51.3和其他機器有什么區別。這時候就剩下物理路由中的路由緩存不正確了。 經過查看,情況確實是物理路由(思科路由器)中的路由緩存的mac地址還是在這些操作前的路由地址。所以我們就需要更新實例在思科路由器中的緩存地址。 在實例中用命令:
arping -I eth0 -c 5 -s 172.17.51.3 172.17.51.1
通知物理路由(思科路由器)更新他的緩存。而查詢思科路由的默認路由默認存儲時間是4個小時 這也是為什么前面有什么都不做,過段時間就能正常的原因。所以,根據這樣的情況,雖然刪除網段不是經常性的操作,但是刪除虛擬機是經常性的操作,我們需要系統啟動中添加上IP通知程序。
