web-dev-qa-db-ja.com

Linuxでの既存のルートエントリの変更

linuxの既存のルートエントリのメトリックを変更するコマンドは何ですか?以下のように「ip route change」コマンドを使用して既存のエントリのゲートウェイを変更できますが、メトリックを変更できません。そのための他のコマンドはありますか?

route –n
40.2.2.0        30.1.3.2        255.255.255.0   eth2

ip route change 40.2.2.0/24 via 30.1.2.2

route -n
40.2.2.0        30.1.2.2        255.255.255.0   eth1
11
user1762571

コメント の質問に記載されているように、linux-netメーリングリストで メッセージ を引用すると、「メトリック/優先度は変更できません[...]これは現在のプロトコルの制限[...]。」
唯一の方法は、ルートを削除して新しいルートを追加することです。

これは、routeコマンドを使用して行われます。例:

Sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1

routeコマンドのDebianマンページ

7
Jan

(さまざまなコメントを回答に結合)

現在、ルートのメトリックを変更することはできません。 LKML状態に関する2005年のメッセージ

[...]一致するフィールドと新しい値の個別のフィールドがないため、メトリック/優先度は変更できません。メトリックを指定した場合、エントリが見つからず、NLM_F_CREATEにより要求がENOENTで失敗します。指定されていません。これは現在のプロトコルの制限であり、これを変更することは良い考えかもしれませんが、それは簡単ではありません[...]

これは両方に当てはまるようですip route changeおよびip route replace-前者は私にとってエラーになりますが、後者はアドバタイズされた追加のルートを作成します(そのマニュアルページには、replaceまたはルートを作成します)。これは、カーネルがENOENTで応答することと一貫しており、ip route replaceルート作成リクエストをフォローアップしています。


したがって、解決策は、既存のルートを削除して新しいルートを追加することです。例えば.

ip route del 40.2.2.0/24 via 30.1.2.2
ip route add 40.2.2.0/24 via 30.1.2.2 metric 1234
16
Mark

ifmetric 変更したいルートが通過するインターフェースを前提として、オンザフライでルートメトリックを変更できます。

使用法

ifmetric <iface> [<metric>]

たとえば、ifmetric tun0 12を通過するすべてのルートのメトリックを12に変更するにはtun0

2
AeroClassics