(さまざまなコメントを回答にまとめる)
現在、ルートのメトリックを変更することはできません。 LKML に関する 2005 年のメッセージには次のように記載されています。
<ブロック引用>[...] 一致するフィールドと新しい値の個別のフィールドがないため、メトリック/優先度を変更できません。したがって、メトリックを指定すると、エントリが単に見つからず、リクエストは ENOENT で失敗します。NLM_F_CREATE のためです。は指定されていません。これは現在のプロトコルの制限であり、これを変更することをお勧めしますが、それは簡単ではありません [...]
これは 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
質問へのコメントに記載されているように、linux-net メーリング リストのメッセージを引用すると、「メトリック/優先度は変更できません [...] これは現在のプロトコルの制限です [...]」。
唯一の方法は、ルートを削除して新しいルートを追加することです。
これは route
を使用して行われます コマンド、例:
sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1
route コマンドの Debian マンページ
ifmetric
変更したいルートが通過するインターフェイスを考慮して、その場でルート メトリックを変更できます。
使い方
ifmetric <iface> [<metric>]
たとえば、ifmetric tun0 12
を使用します tun0
を通過するすべてのルートのメトリックを 12 に変更するには .