Linux Route 中的 `linkdown` 和 `onlink' 是什么意思?

Linux Route 中的 `linkdown` 和 `onlink' 是什么意思?

当我输入ip route showip路由显示

实际上是什么linkdown意思?有时我还能看见onlink。也想知道是什么onlink意思。

会影响路由优先级吗?比如图中两条默认路由的情况

答案1

linkdown是将显示在表中并配置为通过处于该状态的接口发出的路由的状态DOWN。您可以通过运行看到这一点:

ip a

并查找接口的状态。在我的笔记本电脑上,我打开了 WiFi,并且拔掉了以太网适配器,因此显示:

wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000

在我的路由表中,我有很多路由,但我可以添加一些垃圾路由:

sudo ip route add 192.168.123.0/24 dev enp0s25
sudo ip route add 192.168.124.0/24 dev wlp3s0

然后我的表格将显示linkdown以太网路由:

 192.168.123.0/24 dev enp0s25 scope link linkdown 
 192.168.124.0/24 dev wlp3s0 scope link 

onlink意味着路由应该“假装下一跳直接连接到此链路,即使它不匹配任何接口前缀”。所以我们也可以制作一个假的表中的一个:

sudo ip route add 192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink

现在将显示在路由表中:

192.168.123.0/24 dev enp0s25 scope link linkdown 
192.168.124.0/24 dev wlp3s0 scope link 
192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink 

如果您链接到下行接口,您甚至可以花哨并同时拥有两者:

192.168.126.0/24 via 192.168.123.111 dev enp0s25 onlink linkdown

答案2

linkdown是将显示在表中并配置为通过处于该状态的接口发出的路由的状态DOWN

我将尝试举一个例子来看看该onlink选项的真正作用:

您已eth0(在您的计算机上)配置了 IP 地址/掩码:192.168.0.1/24

由于某种原因,您想要使用物理 LAN 上eth0配置不一致的网关。假设它的地址为 10.0.10.1/24,该地址与您为自己的计算机提供的 192.168.0.1/24 配置不匹配。

如果你说:

ip route add default dev eth0 via 10.0.10.1

然后你会得到一个错误响应(网络无法访问或其他)。

为什么?因为(严格来说)LAN 上有一台机器 10.0.10.1 是没有意义的eth0,因为你告诉你的计算机这个 LAN 的网络地址是 192.168.0.0/24。

但它来了:如果您添加onlink到命令中,如下所示:

ip route add default dev eth0 via 10.0.10.1 onlink

然后该路线被接受。

但现在我们遇到另一个问题:如果数据包必须路由到该onlink网关,内核会做什么?

我检查(通过实验),结果是这样的:内核在 LAN 上发送 arp 请求,eth0询问“who-has 10.0.10.1”,这是onlink您配置的网关。当它收到响应时,内核有一个MAC地址它可以将其数据包发送到其中并执行路由。

这意味着:当网关的地址与计算机上的 LAN 配置不匹配时 ( ),您可以通过添加到语句来eth0强制内核使用此网关。onlink

我想在极少数情况下您必须使用此功能。需要 onlink 选项的情况大多是网络设计不佳的情况。我认为一般的隧道设置onlink也不需要。

答案取自这里

相关内容