有 2 个路由器OTBR1
,并且OTBR2
有一个接口wpan0
连接到同一个
fd71:f19:d5f5:1::/64
网络。
- 他们都通过该
fd04:2240::/48
网段上的 RA 宣传这条路由。 - 它们都接收彼此的 RA 并添加路由。
在他们的路由表中,内核添加了一条路由,wpan0
其度量标准256
符合预期:
fd71:f19:d5f5:1::/64 dev wpan0 proto kernel metric 256 pref medium
然而它实际上更喜欢具有以下度量的 RA 路由100
:
fd71:f19:d5f5:1::/64 via fe80::dea6:32ff:fe52:6bbc dev eno1 proto ra metric 100 expires 1522sec pref medium
这实际上是一种混乱,因为两个路由器都倾向于将数据包发送到另一个路由器,因此数据包实际上永远不会进入该fd71:f19:d5f5:1::/64
段。
知道为什么 Ubuntu 更喜欢 RA 路由而不是直接连接的接口吗?
答案1
本期所使用的操作系统Ubuntu 22.04.1 LTS
是systemd-networkd 249.11-0ubuntu3.4
。
根据手册页,它不应该添加度量为 100 的 RA。默认情况下应该是 1024:
设置路由器通告中收到的路由的路由度量。取值范围为 0...4294967295 之间的无符号整数。默认为 1024。
https://manpages.ubuntu.com/manpages/jammy/man5/systemd.network.5.html
我的猜测是他们在 Ubuntu 补丁中改变了默认设置以模仿 NetworkManager 的行为。
我希望在这里得到确认:https://askubuntu.com/questions/1452642/what-overrides-ipv6acceptra-routemetric-defaults
类似这样的操作可用于重新应用默认值,这对我来说更有意义,因为 RA 路由即使具有高优先级,也永远不会取代直接连接的接口:
cat /etc/systemd/network/05-eno1.network
[Match]
Name=eno1
[IPv6AcceptRA]
RouteMetric="512:1024:2048"