1、背景
硬件使用RK3568 CPU,操作系统采用ubuntu 20.04 Lxqt桌面的版本。硬件上具有一个有线以太网卡,一个wifi网卡,一个5G网卡。由于操作系统默认的网络优先级为有线网卡的最高,5G网卡次之。在一个业务应用中需要5G网卡的连接外网,具有最高的优先级,以太网卡次之,wifi网卡不用,因此不用管优先级。有线以太网卡的IP是使用netplan来配置的。配置ip.ymal文件如下:这个文件中有一个metric的配置,配置值为100,配置的结果是静态路由IP 的metric值为100, 但是不能改变默认的IP 路由metric值,因此达不到效果。
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManagerethernets:eth0:dhcp4: nodhcp6: no addresses: [10.10.26.200/24]gateway4: 10.10.26.1nameservers:addresses: [114.114.114.114, 8.8.8.8]routes:- to: 0.0.0.0 #路由via: 10.10.26.1 #网关metric: 200 #优先级
从下面可以看出default eth0的默认路由的metric 还是100,没有起作用。因此不能使用netplan来修改路由的优先级。
default via 10.10.26.1 dev eth0 proto static metric 100
2.0.0.0/24 via 10.8.214.161 dev tun0
10.8.0.1 via 10.8.214.161 dev tun0
10.8.214.161 dev tun0 proto kernel scope link src 10.8.214.162
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2 metric 200
192.168.225.0/24 dev enx92b29a5908c4 proto kernel scope link src 192.168.225.2 metric 101
2、 NetworkManager的配置
Ubuntu系统中网络管理主要使用NetworkManager来管理,因此需要从这个NetworkManager来入手,配置静态ip, 配置路由的优先级metric。
先介绍一下背景知识,如果使用NetworkManager来管理网络链接。
要使用nmcli
创建一个有线网络连接,可以按照以下步骤进行操作:
-
打开终端。
-
运行以下命令,以创建一个新的有线网络连接配置:
nmcli connection add type ethernet con-name <connection_name> ifname <interface_name> [ipv4.method <method>] [ipv4.addresses <ip_address>] [ipv4.gateway <gateway_address>] [ipv4.dns <dns_servers>] [ipv4.dns-search <dns_search_domain>] [ipv6.method <method>] [ipv6.addresses <ip_address>] [ipv6.gateway <gateway_address>] [ipv6.dns <dns_servers>] [ipv6.dns-search <dns_search_domain>]
其中:
<connection_name>
是您想要为这个连接设置的名称。<interface_name>
是网络接口的名称,比如eth0
。<method>
是IP配置的方法,可以是auto
(自动获取)、manual
(手动配置)或其他。<ip_address>
是IPv4或IPv6的地址。<gateway_address>
是IPv4或IPv6的网关地址。<dns_servers>
是IPv4或IPv6的DNS服务器地址,可以使用逗号分隔多个地址。<dns_search_domain>
是DNS搜索域。
请根据您的实际需求和网络设置在命令中选择要设置的选项。
-
运行以下命令,以激活新创建的网络连接:
nmcli connection up <connection_name>
其中
<connection_name>
是您在第2步中设置的连接名称。
现在,您应该已经成功创建并激活了一个新的有线网络连接。您可以使用nmcli connection show
命令列出所有网络连接,以验证新连接已经添加。
下面是实际操作,创建一个有线以太网的链接,并且修改默认路由的优先级为200。并且激活这个以太网链接eth0-con,特别要说明的时 链接名称con-name与网卡名称ifname不能一样。
firefly@firefly:/etc/NetworkManager/system-connections$ nmcli connection add type ethernet con-name eth0-con ifname eth0
Connection 'eth0-con' (fa53d93a-e876-4653-a568-9817e5d9844c) successfully added.
firefly@firefly:/etc/NetworkManager/system-connections$ sudo vim eth0-con.nmconnection这里配置固定IP 192.168.0.2 metric=200firefly@firefly:/etc/NetworkManager/system-connections$ sudo cat eth0-con.nmconnection
[connection]
id=eth0-con
uuid=fa53d93a-e876-4653-a568-9817e5d9844c
type=ethernet
interface-name=eth0[ethernet][ipv4]
method=manual
address=192.168.0.2/24
gateway=192.168.0.1
dns=8.8.8.8;114.114.114.114
route-metric=200[ipv6]
addr-gen-mode=stable-privacy
method=autofirefly@firefly:/etc/NetworkManager/system-connections$ nmcli connection up eth0-con
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
firefly@firefly:/etc/NetworkManager/system-connections$
经过上面的操作后,重启一下设备,可以使用ip route show来看一下。可以看到eth0网口的默认路由优先级为200了,比5G网卡enx92b29a5908c4 路由优先级101小了。因此默认的对外上网通道变成eth0有线网卡。
firefly@firefly:~$ ip rout show
default via 192.168.225.1 dev enx92b29a5908c4 proto dhcp metric 101
default via 192.168.0.1 dev eth0 proto static metric 200
2.0.0.0/24 via 10.8.214.161 dev tun0
10.8.0.1 via 10.8.214.161 dev tun0
10.8.214.161 dev tun0 proto kernel scope link src 10.8.214.162
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2 metric 200
192.168.225.0/24 dev enx92b29a5908c4 proto kernel scope link src 192.168.225.2 metric 101