Linux永久修改默认网关关键在于启动时自动加载指定网关及metric值,metric越小优先级越高;需依发行版和网络管理工具(Netplan/NetworkManager/ifcfg)在对应配置文件中正确设置,并验证生效。

Linux默认网关的永久修改,关键不在临时加一条路由,而在于让系统启动时自动加载你指定的网关和跃点数(metric)。metric值越小,优先级越高;多个默认网关共存时,内核按metric最小者选路。只要配置写对位置、工具匹配当前网络管理方式,重启后就能稳定生效。
确认当前网关与metric状态
先看清现状,避免盲目覆盖:
- 运行 ip route show default 查看当前生效的默认路由及 metric 值
- 用 nmcli connection show 列出所有网络连接名称(如 “Wired connection 1” 或 “ens33”)
- 执行 ip route get 8.8.8.8 验证实际出口路径,比 route -n 更可靠
按发行版与网络管理工具选配置方式
不同系统用的网络管理器不同,硬套同一方法容易失效:
-
Ubuntu/Debian(Netplan 管理):编辑 /etc/netplan/*.yaml,在对应网口下添加 routes 块:
routes:<br> - to: default<br> via: 192.168.1.1<br> metric: 50
注意缩进必须用空格,改完运行 sudo netplan apply -
RHEL/CentOS(NetworkManager + ifcfg):编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,添加两行:
GATEWAY=192.168.1.1<br>METRIC=100
若该接口被 NetworkManager 接管,还需加NM_CONTROLLED=no,再重启 network 服务 -
桌面环境(NetworkManager 主导):统一用 nmcli 修改,例如:
nmcli connection modify "Wired connection 1" ipv4.route-metric 30
nmcli connection modify "Wired connection 1" ipv4.ignore-auto-routes yes
之后 reload 并重启连接:
nmcli connection reload && nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"
多网关场景下的metric协同策略
仅设 metric 不足以应对复杂路由需求,需配合其他设置:
- 为有线连接设低 metric(如 20),Wi-Fi 设高 metric(如 200),实现主备自动切换
- 若某网卡(如无线)连的是需认证的开放网络,建议禁用其自动添加默认路由:
nmcli connection modify "MyWiFi" ipv4.ignore-auto-routes yes - 内网流量需强制走特定网卡?加静态路由并确保不被覆盖:
nmcli connection modify "Wired connection 1" +ipv4.routes "10.10.0.0/16 10.10.1.1" - 多个默认网关 metric 相同时,后添加者可能被忽略——务必保证数值有明确区分
验证与排错要点
改完别急着关终端,几步验证保稳妥:
- 重启后立即运行 ip route show default,确认 metric 和 via 地址正确
- 用 ping -I eth0 8.8.8.8 和 ping -I wlan0 8.8.8.8 分别测试各接口连通性
- 若新网关没生效,检查是否 NetworkManager 覆盖了手工配置 —— 此时应停用 NM 管理或全程用 nmcli
- systemd-networkd 或 cloud-init 环境需另查对应配置目录(如 /etc/systemd/network/),不适用上述 ifcfg 或 Netplan


















