修改 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
Run Code Online (Sandbox Code Playgroud)
Mar*_*ark 24
(将各种评论结合成一个答案)
目前,无法修改路由的度量。正如2005 年关于 LKML 的消息所述:
[...] 指标/优先级无法更改,因为我们没有单独的字段来匹配字段和新值,因此如果您指定一个指标,则根本找不到该条目并且请求因 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
Run Code Online (Sandbox Code Playgroud)
Jan*_*Jan 13
正如对该问题的评论所指出的,引用了linux-net 邮件列表上的一条消息:“指标/优先级无法更改 [...] 这是当前协议的限制 [...]。”
唯一的方法是删除路由并添加新路由。
这是使用route命令完成的,例如:
sudo route add -net default gw 10.10.0.1 netmask 0.0.0.0 dev wlan0 metric 1
Run Code Online (Sandbox Code Playgroud)
小智 13
ifmetric 将允许您即时更改您的路线指标,考虑到您要更改的路线正在通过的界面。
ifmetric <iface> [<metric>]
Run Code Online (Sandbox Code Playgroud)
例如,用于ifmetric tun0 12将所有经过 的路由的度量更改为 12 tun0。
小智 5
它可以通过 nmcli 完成,如下所述:-
nmcli connection modify ACTUAL_CONNECTION_NAME ipv4.route-metric 100
nmcli connection up ACTUAL_CONNECTION_NAME
Run Code Online (Sandbox Code Playgroud)