Linux系统配置网络优先级

注:Linux中默认网关的优先级是由 “metric(度量值)” 决定,metric 数值越小,优先级越高


方法一、使用 nmcli 设置连接的 route-metric


  1. 适用于 NetworkManager 管理的网络连接(常见于桌面和 server GUI 环境)
# 设置以太网优先级为100
nmcli connection modify <eth-conn-name> ipv4.route-metric 100

# 设置 WiFi 优先级为200
nmcli connection modify <wifi-conn-name> ipv4.route-metric 200

# 重新激活连接使设置生效
nmcli connection down <conn-name> && nmcli connection up <conn-name>
  1. 可用以下命令查看当前所有连接名
nmcli connection show

# 示例输出:

# NAME                UUID                                  TYPE      DEVICE
# MY_WIFI             a8eb3f9e-a1db-43a2-8571-6c7a8b4e1099  wifi      wlan0
# Wired connection 1  97eed963-5df8-3420-b992-9306744748bb  ethernet  eth0
# Wired connection 2  c3e841a6-03ca-38d6-b1d9-528fb5d0366f  ethernet  --
  1. 验证网络优先级是否生效
# 查看路由表中 default 条目的 metric 值

ip route | grep default

# 输出示例:(metric 值越小优先级越高,及第一条 default 路由优先级最高)

    # default via 192.168.1.1 dev eth0 proto dhcp metric 100
    
    # default via 192.168.1.1 dev wlan0 proto dhcp metric 200

方法二、Netplan 配置(Ubuntu 18.04+ 推荐)


  1. 打开并编辑网络配置文件,如果没有则手动创建
sudo vim /etc/netplan/01-netcfg.yaml
  1. 配置文件中添加以下内容(注意缩进格式保持一致)
network:
  version: 2
  renderer: networkd  # 使用 systemd-networkd 管理网络

  ethernets:
    eth0:
      dhcp4: true
      dhcp4-overrides:
        use-routes: false  # 禁止自动添加默认路由
      routes:
        - to: default
          via: 192.168.1.1         # 这里填你的以太网网关IP,若DHCP自动分配网关,需先确认
          metric: 100
  wifis:
    wlan0:
      dhcp4: true
      optional: true  # 无线设备设为可选,避免系统启动等待 WiFi 联网
      access-points:
        "你的WiFiSSID":
          password: "你的WiFi密码"
      dhcp4-overrides:
        use-routes: false
      routes:
        - to: default
          via: 192.168.1.1         # 替换成你的WiFi网关IP,可能和eth0不同,确认后填写
          metric: 200              # 次优先级,eth0 断开时才启用


# 配置说明:

# use-routes: false 是为了避免 DHCP 自动添加默认路由
    
# routes 中明确指定默认路由 (to: default)
    
# metric 控制优先级:数值越小优先级越高
  1. 执行以下命令,保存并应用 Netplan 配置
sudo netplan apply

# 可能会出现如下警告(不影响):

    # WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.
    # WARNING: systemd-networkd is not running, output will be incomplete.
    
    # Failed to reload network settings: No such file or directory
    # WARNING:root:Falling back to a hard restart of systemd-networkd.service
    
# Netplan 检查 Open vSwitch(OVS),发现服务没在运行,如果没有使用 OVS 网络(多数不会用到)可以忽略该警告

你可能感兴趣的:(Linux-Arm,linux,ubuntu,网络优先级)