Linux でルーティング テーブルの順序を変更する/エントリを上または下に移動

Linux でルーティング テーブルの順序を変更する/エントリを上または下に移動

ルーティング テーブルにインターフェイスがいくつかあり、最初のインターフェイスが機能しなくなりました。そのインターフェイスを一時的に下に移動して、その下のインターフェイスをデフォルトにしたいのですが、削除して再度追加する必要がありますか。それとも、エントリを上下に移動できる ip/route/ifconfig コマンドがありますか。

答え1

ルーティング テーブルは、上から下への順序では使用されません。代わりに、より具体的なルート (プレフィックス長が長い) が、より具体的でないルートよりも常に優先されます。たとえば、/24 ルートは /16 ルートよりも優先され、/16 ルートは「デフォルト」の /0 ルートよりも優先されます。

まったく同じ宛先へのルートが 2 つある場合 (たとえば、両方とも 192.168.1.0/24 の場合)、それらのルートは「メトリック」パラメータ (基本的にはルートのコスト) に基づいて比較されるため、最も低いメトリック値 (最も低いコスト) が優先されます。

したがって、複数の「デフォルト」ルートがある場合は、そのルートを削除して、より低いメトリックで再度追加することで、そのルートを優先することができます。次に例を示します。

$ ip route
default via 192.168.7.1 dev eth0 proto dhcp metric 100
default via 192.168.1.1 dev wlan0 proto dhcp metric 600
$ ip route del default dev wlan0
$ ip route add default via 192.168.1.1 dev wlan0 metric 50

(特に変更が非常に一時的なものである場合は、不要な高メトリック ルートを削除する必要はなく、新しいルートを追加するだけで十分です。)

ip route changeこの状況ではip route replace、指定されたメトリックを検索キー更新するパラメータとしてデバイスを指定しますが、おそらくその逆を行いたいでしょう。

関連情報