Linux Route の `linkdown` と `onlink' の意味は何ですか?

Linux Route の `linkdown` と `onlink' の意味は何ですか?

次のように入力しましたip route show: IP ルート表示

は実際どういうlinkdown意味ですか? 時々、まだ が見えますonlink。 また、何を意味するのか知りたいですonlink

ルーティングの優先度に影響しますか?例えば、図の2つのデフォルトルートの場合

答え1

linkdownテーブル内にあり、状態にあるインターフェースを介して送信されるように設定されているルートに対して表示されるステータスですDOWN。これを確認するには、次のコマンドを実行します。

ip a

インターフェイスのステータスを確認します。私のラップトップでは Wi-Fi がオンで、イーサネット アダプターが接続されていないため、次のように表示されます。

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上でeth0「who-has 10.0.10.1」という、onlink設定したゲートウェイを尋ねるARP要求を送信します。応答を受信すると、カーネルはMacアドレスパケットの送信先とルーティングが実行されます。

つまり、ゲートウェイのアドレスがコンピュータの LAN 構成 ( ) と一致しない場合、ステートメントに をeth0追加することで、カーネルにこのゲートウェイを使用するように強制できます。onlink

この機能を使用しなければならない状況は非常にまれだと思います。onlink オプションが必要な状況は、ほとんどの場合、ネットワーク設計が不十分な場合です。平均的なトンネル設定ではonlinkどちらも必要ないと思います。

回答は次の通りですここ

関連情報