为什么 Ubuntu 更喜欢 RA 路由而不是直接连接接口?

为什么 Ubuntu 更喜欢 RA 路由而不是直接连接接口?

我有以下拓扑: 在此处输入图片描述

有 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 LTSsystemd-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"

相关内容