最建议用2.1.1方法,切换wifi也生效,比较方便

1. 面向连接设置metric

1.1. nmcli

#先查看wlan0上的连接名称
nmcli connection show | grep wlan0
#为该连接设置metric
nmcli connection modify "连接名称" ipv4.route-metric 0
#激活更改
nmcli connection up "连接名称"

1.2. netplan

jetpack没有带netplan,并且没法直接按名字安装,名字为

sudo apt-get install netplan.io -y

sudo nano /etc/netplan/99-wlan0-metric.yaml

network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlan0:
      dhcp4: false
      access-points:
        "RM":
          password: "***"
      addresses: [10.10.20.24/24]
      routes:
        - to: default
          via: 10.10.20.1
          metric: 0
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

sudo chmod 600 /etc/netplan/99-wlan0-metric.yaml

sudo netplan apply

2. 基于网卡(interface)来设置

2.1. NetworkManager

2.1.1. NetworkManager修改网卡metric

  1. 创建NetworkManager配置文件,为特定接口类型或名称设置默认metric
  2. sudo nano /etc/NetworkManager/conf.d/10-wlan0-metric.conf
[device]
match-device=interface-name:wlan0
[connection]
ipv4.route-metric=0
  1. sudo systemctl restart NetworkManager

2.1.2. 为所有WiFi连接设置默认metric

  1. sudo nano /etc/NetworkManager/NetworkManager.conf
[connection]
wifi.route-metric=0
  1. sudo systemctl restart NetworkManager

2.1.3. 使用脚本监控网络接口变化,并自动设置metric

  1. sudo nano /etc/NetworkManager/dispatcher.d/10-set-wlan0-metric
#!/bin/bash
if [ "$1" = "wlan0" ] && [ "$2" = "up" ]; then
    /usr/bin/ip route change default via $(ip route | grep default | grep wlan0 | awk '{print $3}') dev wlan0 metric 0
fi
  1. sudo chmod +x /etc/NetworkManager/dispatcher.d/10-set-wlan0-metric

3. netplan和networkmanager的工作关系

netplan配置和NetworkManager配置文件可以一起使用,但需要注意它们之间的交互关系:

  1. 当netplan使用renderer: NetworkManager时,netplan会将网络配置转换为NetworkManager连接配置,并存储在/etc/NetworkManager/system-connections/目录下。
  2. 而NetworkManager的全局配置(如/etc/NetworkManager/conf.d/中的文件)会影响NetworkManager如何处理所有连接,包括由netplan生成的连接。

这种组合使用的工作流程是:

  • netplan定义具体的网络连接(WiFi接入点、IP地址等)
  • NetworkManager配置文件定义全局行为(如默认metric值)

例如,您可以:

  1. 使用netplan配置WiFi连接:
# /etc/netplan/01-wifi.yaml
network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlan0:
      access-points:
        "RM":
          password: "***"
        "phoenix":
          password: "***"
      dhcp4: true
  1. 同时创建NetworkManager配置文件设置默认metric:
# /etc/NetworkManager/conf.d/10-wlan0-metric.conf
[device]
match-device=interface-name:wlan0
[connection]
ipv4.route-metric=0

这样配置后:

  • netplan会创建WiFi连接配置
  • NetworkManager会应用全局metric设置到所有wlan0接口的连接上

这种组合使用的优点是:

  • 可以利用netplan的简洁语法定义连接
  • 可以利用NetworkManager的高级功能设置全局行为
  • 避免在netplan中为每个连接重复设置相同的metric值

需要注意的是,如果在netplan配置中明确设置了metric值,它可能会覆盖NetworkManager的全局设置。在这种情况下,以netplan中的具体设置为准。

总的来说,这两种配置方式是可以互补使用的,可以根据您的需求选择最合适的组合。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐