IP路由和IP规则周期性消失

Ubuntu Server 22.04, 24.04 LTS版本下, 有一部分ip route, ip rule是通过脚本添加的, 但是周期性会消失, 有时apt upgrade, apt install 也会莫名其妙的丢失. 查了一圈发现到一个非常类似的问题:

Something deletes my ip rules

结果发现是systemd-networkd的操作删除了不受其管理的路由和规则, 顺带又发现了若干个Issue:

Pod routing policies deleted by systemd #1600 - aws/amazon-vpc-cni-k8s

network: add ManageForeignRoutingPolicyRules= boolean setting #19287 - systemd/systemd

解决方案如下:

判断systemd版本: systemd --version

编辑networkd配置文件: /etc/systemd/networkd.conf

1
2
3
4
5
6
7
8
[Network]
#SpeedMeter=no
#SpeedMeterIntervalSec=10sec
#ManageForeignRoutingPolicyRules=yes
#ManageForeignRoutes=yes
#RouteTable=
#IPv6PrivacyExtensions=no
...

修改为:

1
2
ManageForeignRoutingPolicyRules=no
ManageForeignRoutes=no

PS: 一大早上被警报叫起来说网络出问题了结果查了半天发现是systemd的问题, 我只能说大家讨厌systemd不是没有原因的 :-|