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