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
了,你可以按照“查看路由优先级”章节的描述,检查下我们的修改是否生效了。
重启电脑后,此设置依旧有效。