OpenStack 节点重启后无法联网的问题
2019-05-05 16:58 云物互联 阅读(820) 评论(0) 编辑 收藏 举报问题
五一归来,大量服务器被重启了,其中一台服务器失联了。通过远程桌面登录之后发现服务器的 IP 地址是 “正常” 的,可以 Ping 通自己的 IP,但 Ping 不同网关。
解决
仔细一看,原来的 IP 在重启之后被设置到 ens160 Interface 上了,但该 Interface 却被挂载到 OvS Bridge 之上了:
Bridge br-ex
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
Port "ens160"
Interface "ens160"
Port br-ex
Interface br-ex
type: internal
众所周知,挂载到 Bridge 上的物理网络接口的 IP 地址是无效的,只有 type: internal 的 OvS Interface 的 IP 地址是有效的。所以删除了 ens160 上的 IP 地址:
ifconfig ens160 0.0.0.0 up
将 IP 地址设置到 OvS Bridge br-ex 的 br-ex Internal Interface 上:
ifconfig br-ex 182.18.22.200/24 up
此时该阶段就可以 Ping 通同网段的 IP 了,但依旧不能 Ping 通公网。第一个反应当然就是查看路由表项了,果然发现没有了默认路由,添加之:
ip route add default via 172.18.22.1/24 dev br-ex
这样该节点的网络通信就恢复了。
除此之外,该节点曾经还遇见过 ARP 欺诈的问题。表现为无法 Ping 通外网,但是可以 Ping 通网关,外部 SSH 登录该节点时灵时不灵。最后通过 tcpdump 抓包知道,arping 网关 IP 地址返回的是一个 “假” 的 MAC 地址,是因为本节点上莫名的被配置了网关 IP,所以返回的实际上是本机的 MAC 地址。真可谓 “自己骗自己” 了。
总结
小结两点经验,在 OpenStack 环境中:
- 无法 Ping 通同网段 IP,则检查自身 IP 地址设置。
- 无法 Ping 通公网,则检查自身 Route 表项设置。
- 能 Ping 通网关、但无法 Ping 通公网,则检查是否存在 ARP 欺诈。
转载请注明作者:JmilkFan 范桂飓