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也不需要。

答案取自這裡

相關內容