旁路由切换后,多台机器 host unreachable 的排查与修复

最近内网里几台机器陆续出现问题,特点很一致:

机器本身没改什么配置,却突然大量出现 host unreachable,容器、虚拟机、宿主机网络表现都不正常。

排查思路

因为最近刚更换了旁路由,而且网络是通过旁路由作为默认网关,所以优先怀疑:

路由器侧网关 IP 是指向旁路由的,旁路由IP变了,但部分机器没有正确刷新默认路由。

果然后面查路由表发现,问题就是这个。

典型表现包括:

  • 旧网关还残留在默认路由里
  • 新旧两个默认网关同时存在
  • 宿主机表面能用,但 Docker bridge / PVE VM 先出问题

怎么确认

先看默认路由:

ip route

如果最近网关从 192.168.1.3 切到 192.168.1.4,而机器里还看到:

default via 192.168.1.3 ...

或者同时看到 1.31.4,基本就定位到了。

怎么解决

1. Ubuntu / 普通 Linux 宿主机

删除旧默认网关,只保留新网关:

sudo ip route del default via 192.168.1.3 dev eno2

必要时手动加回新网关:

sudo ip route add default via 192.168.1.4 dev eno2

2. Docker 宿主机

如果 Docker bridge 容器异常,先修宿主机默认路由。
这类问题很多时候不是 DNS,而是 宿主机默认路由残留导致 NAT 出网异常

修完宿主机路由后,一般 Docker 就恢复了。

3. PVE Host

如果 PVE 宿主机网关还指向旧地址,改成新的:

ip route del default via 192.168.1.3 dev vmbr0
ip route add default via 192.168.1.4 dev vmbr0

4. PVE 网桥 / VM

如果 PVE 宿主机恢复了,但 VM 还是不通,通常还要刷新一遍防火墙桥状态:

systemctl restart pve-firewall

如果 VM 开了 firewall,这一步尤其关键。

结论

这次问题本质不是 Docker 坏了,也不是 PVE 坏了,而是:

旁路由切换后,默认网关变了,但部分机器没有及时刷新网络状态。

排查这类问题,先别急着看 DNS、容器、虚拟机,第一步先看:

ip route

很多时候问题就在那里。


作 者:motorbottle
链 接: https://blog.motorbottle.site/archives/762
来 源:Motor's Blog
版 权 声 明:本博客所有文章除特别声明(如【转载】)外,均采用CC BY-NC-SA 4.0许可协议。文章版权归作者所有,未经允许请勿转载!


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇