答案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
也不需要。
答案取自這裡