CentOS 7修改默认网关需先确认网络管理服务:若NetworkManager活跃,用nmcli modify并down/up连接;若network.service主导,改ifcfg-文件中的GATEWAY和DEFROUTE后restart network。

CentOS 7 修改默认网关不能只改一个地方就完事——GATEWAY 参数是否生效,取决于你用的是 network.service 还是 NetworkManager,而且两者还可能共存、互相覆盖。直接改错文件或漏掉重启步骤,ip route show default 依然显示旧网关。
确认当前网关和网络管理服务
先看实际生效的默认路由和谁在管网络:
- 运行
ip route show default,输出类似default via 192.168.1.1 dev ens33—— 这是当前真实生效的网关 - 运行
systemctl is-active NetworkManager和systemctl is-active network,确认哪个服务是 active 状态 - 运行
nmcli connection show,看是否有活跃连接(如System ens33),这是NetworkManager管理的标识
如果 NetworkManager 是 active,优先用 nmcli;如果只有 network active,才走配置文件。
用 nmcli 修改(推荐,适用于 NetworkManager 管理的连接)
nmcli 是 CentOS 7 官方推荐方式,修改后需重新激活连接才生效,不是“改完就跑”:
- 查连接名:
nmcli connection show --active或nmcli device status,记下连接名(如"System ens33") - 修改网关:
nmcli connection modify "System ens33" ipv4.gateway 192.168.10.1 - 关键一步:必须关闭再启用连接,
nmcli connection down "System ens33" && nmcli connection up "System ens33",只用up不够 - 验证:
ip route show default应立即更新;若仍不生效,检查该连接是否启用了ipv4.ignore-auto-routes或ipv4.never-default(这些会压制ipv4.gateway)
改 ifcfg- 文件(仅当 network.service 主导时有效)
编辑对应网卡的配置文件,但注意:这个方法在 NetworkManager 启用时会被忽略:
- 找到文件:
/etc/sysconfig/network-scripts/ifcfg-ens33(把ens33换成你的接口名) - 添加或修改行:
GATEWAY=192.168.10.1,**不要加引号,不要空格** - 确保
DEFROUTE="yes"(否则即使写了GATEWAY也不参与默认路由) - 重启服务:
systemctl restart network(不是NetworkManager) - 注意:
/etc/sysconfig/network中的GATEWAY=...在 CentOS 7 中已基本失效,仅作全局兜底,不建议依赖
临时修改(调试用,重启即丢)
用 ip route 可绕过所有配置文件,适合快速验证新网关是否可达:
- 删除旧默认路由:
ip route del default - 添加新默认路由:
ip route add default via 192.168.10.1 dev ens33 - 注意:此操作不写入任何配置,且如果
NetworkManager正在运行,它可能在几秒内自动恢复原路由(因检测到“不一致”) - 如需保留,必须配合上面任一永久方案,否则下次
nmcli connection up或systemctl restart network就清空
真正容易被忽略的是服务冲突:NetworkManager 和 network.service 同时启用时,前者会接管并覆盖后者配置。确认谁在管,比反复改文件更重要。


















