在 CentOS 7 环境中修改默认网关,首先要明确当前究竟是哪个网络管理服务在负责网络配置。如果系统由 NetworkManager 管理,操作方式会更简单:通常使用 nmcli 修改连接参数,然后执行 down 和 up 重新激活连接,新的默认网关即可生效。相反,如果实际由 network.service 接管网络,则需要进入 ifcfg- 配置文件,在其中正确设置 GATEWAY 和 DEFROUTE 参数,最后通过 restart network 服务让修改正式应用。

在 CentOS 7 中修改默认网关,并不是简单改一个参数就一定成功。重点在于 GATEWAY 配置是否真正被系统采用,这往往取决于底层运行的是 network.service 还是 NetworkManager,甚至有些环境中两者会同时存在并产生覆盖。一旦修改了错误的配置文件,或者遗漏了重启、重载步骤,使用 ip route show default 查看时,显示的仍然会是旧的默认网关。
确认当前网关和网络管理服务
修改 CentOS 7 默认网关前,先确认当前实际生效的默认路由,以及究竟是谁在管理网络:
- 运行
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 管理的连接)
对于由 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 主导时有效)
如果系统网络由 network.service 管理,可以直接编辑对应网卡的 ifcfg 配置文件。不过要特别注意:当 NetworkManager 已启用并接管连接时,这种方式通常会被忽略:
- 找到对应文件:
/etc/sysconfig/network-scripts/ifcfg-ens33(请将ens33替换为你的实际网卡接口名称) - 添加或修改这一行:
GATEWAY=192.168.10.1,**不要加引号,也不要加入多余空格** - 同时确认
DEFROUTE="yes",否则即便写入了GATEWAY,该网卡也不会参与默认路由选择 - 修改后重启服务:
systemctl restart network(注意这里重启的是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 同时启用时,前者通常会接管网络并覆盖后者的配置。因此,先确认到底是谁在管理网络,比反复修改默认网关配置文件更关键,也更能避免 CentOS 7 默认网关修改失败的问题。
