$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default oraybox.com 0.0.0.0 UG 100 0 0 enx00e04c6801a0
default _gateway 0.0.0.0 UG 101 0 0 eth0
10.10.11.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enx00e04c6801a0
可以看到此时有两个网卡 eth0 和 enx00e04c6801a0 ),都配置到了默认网关。而由于enx00e04c6801a0的Metric值比eth0的小,所以排前面了。这就说明enx00e04c6801a0网卡的优先级比eth0高。$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.8 0.0.0.0 UG 100 0 0 enx00e04c6801a0
0.0.0.0 10.10.11.254 0.0.0.0 UG 101 0 0 eth0
10.10.11.0 0.0.0.0 255.255.255.0 U 101 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enx00e04c6801a0
我们要配置Linux网卡的优先级,就需要修改某个网卡的Metric,然而route命令不允许直接修改,因此需要先删除,后添加。例如将eth0的Metric改小,就需要执行:
route del default gw 10.10.11.254 eth0
route add default gw 10.10.11.254 dev eth0 metric 99
同理,也可以删除小值的改大。这样我们就通过修改路由表中与默认网关相关的条目实现了调整多个网络连接的优先级。
route add -net 192.168.2.0 netmask 255.255.255.0 dev eth0
删除:
route del -net 192.168.2.0 netmask 255.255.255.0 dev eth0
-net
参数对应网段IP,netmask
是子网掩码。最后的eth0
是对应网络所在的网卡。
(
sleep 30
/usr/sbin/route del default gw 10.10.11.250 eth0
/usr/sbin/route add default gw 10.10.11.250 dev eth0 metric 204
) &
/etc/rc.local
并修改内容(touch /etc/rc.local && vim /etc/rc.local
),把需要开机自动执行的命令写在exit 0前面:
#!/bin/sh -e
(
sleep 30
/usr/sbin/route del default gw 10.10.11.250 eth0
/usr/sbin/route add default gw 10.10.11.250 dev eth0 metric 204
) &
exit 0
给该文件配可执行权限:chmod +x /etc/rc.local。 启动rc-local服务并设置该服务开机自启:
systemctl enable rc-local
systemctl start rc-local
新建/usr/lib/systemd/system/rc-local.service
文件,添加以下内容:
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
#!/bin/sh
(
sleep 30
/usr/sbin/route del default gw 10.10.11.250 eth0
/usr/sbin/route add default gw 10.10.11.250 dev eth0 metric 204
) &
给该文件添加执行权限chmod +x /etc/network/if-up.d/route-set。再次重启网络测试配置是否正常。