Something

首页 / 文章 / RSS

Linux下如何修改路由表优先级

简介

在多个网络连接的情况下,比如WIFI和VPN同时存在的时候,路由表中就会存在多个默认网关。

个别情况下,您也许需要修改路由优先级,比如,在使用 UxPlay 将iOS设备投屏到Linux时,如果VPN路由优先级高,则会导致投屏失败,此时,需要将WIFI路由优先级调高即可解决投屏失败问题。

本文将介绍如何查看和修改路由优先级。

路由优先级

如果您有两条路由用于完全相同的目的地(例如,这两条路由都适用于192.168.1.0/24),则会根据其 metric 参数进行比较: metric 值越小,优先级越高。

查看路由优先级

可以使用以下命令,查看路由优先级。

方法一:使用 ip 命令

$ ip route 
default via x.x.x.x dev tun0 proto static metric 50
default via y.y.y.y dev wlp3s0 proto dhcp metric 100

方法二:使用 route 命令。

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         x.x.x.x       0.0.0.0         UG    50     0        0 tun0
0.0.0.0         y.y.y.y       0.0.0.0         UG    100    0        0 wlp3s0

修改路由优先级

临时修改方法

可以使用以下命令,修改路由优先级。

方法一:使用 ip route 命令。

$ sudo ip route del default dev wlp3s0
$ sudo ip route add default via y.y.y.y dev wlp3s0 metric 10

方法二:使用 ifmetric 命令。

$ sudo ifmetric wlp3s0 10

永久修改方法

检查当前网络连接的管理方式

如果使用 nmcli 命令有类似如下的输出结果,就表示你的系统当前使用的是Network Manager。

$ nmcli device
DEVICE           TYPE      STATE                   CONNECTION
wlp3s0           wifi      connected               huawei01
br-d7775af86076  bridge    connected (externally)  br-d7775af86076
docker0          bridge    connected (externally)  docker0
...

从上述命令的输出结果可以看到,当前系统使用 WIFI ,连接到了无线热点 huawei01

使用nmcli

执行以下命令,可以将当前连接的 metrics 修改为 10

$ sudo nmcli connection modify 'huawei01' ipv4.route-metric 10

执行以下命令,保存。

$ sudo nmcli connection up 'huawei01'
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/29)

现在,此连接的 metrics 应该已经被我们设置为 10 了,你可以按照“查看路由优先级”章节的描述,检查下我们的修改是否生效了。

重启电脑后,此设置依旧有效。