先执行ip route show确认默认网关是否生效,只认default via开头的行;若有多条则存在冲突,系统仅用metric最小的一条;验证可用ip route show default,应仅输出一行且含目标IP与网卡名。

怎么确认当前默认网关是否生效
别急着改,先看清楚当前路由表里到底有没有、有几个 default 条目。执行 ip route show,只认以 default via 开头的行;如果出现多条,说明已有冲突——系统只会用 metric 最小的那条,其余被忽略。
也可以用 route -n | grep '^0\.0\.0\.0\|^default' 辅助验证,但注意 route 是旧命令,输出格式不如 ip route 直观,且不显示 metric 值。
常见错误现象:改完重启 network 服务后 ip route show 还是旧网关,或根本没 default 条目——大概率是配置文件写错字段名、没重启服务,或 NetworkManager 覆盖了静态配置。
临时改网关:用 ip route add 就够了
仅用于测试或应急切换,重启即失效。关键点不是“加”,而是“先清再加”:
- 删掉现有默认路由:
ip route del default(若报错“No such process”,说明当前无 default 条目,可跳过) - 添加新网关:
ip route add default via 192.168.10.1 dev eth0(必须指定dev,否则可能走错网卡) - 验证是否生效:
ip route show default,输出应只有一行且含你刚设的 IP 和设备名
容易踩的坑:ip route add default via 192.168.10.1 不写 dev 参数时,内核会尝试自动推断出口设备,但推断结果不可靠,尤其在多网卡环境下极易发包失败。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
永久改网关:改 ifcfg-xxx 文件最稳
生产环境必须走这步。核心是修改网卡配置文件,不是全局 /etc/sysconfig/network(该文件在 CentOS 7 中仅对部分场景有效,且优先级低于接口配置):
- 找到对应网卡配置文件:
ls /etc/sysconfig/network-scripts/ifcfg-*,结合ip link show或nmcli device status确认活跃接口名(如ens33) - 编辑文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33 - 确保以下三行存在且正确:
-
BOOTPROTO=static(若为dhcp,GATEWAY 字段会被忽略) -
GATEWAY=192.168.10.1(值必须是可达的三层网关 IP) -
DEFROUTE=yes(默认为 yes,但显式写出更保险;设为 no 会导致该接口不参与默认路由选择)
-
- 保存后执行
systemctl restart network(不是service network restart,后者在某些 systemd 版本下不触发完整重载)
注意:GATEWAY 字段只在 BOOTPROTO=static 时生效;如果用了 DHCP,得靠 nmcli 或 DHCP 服务器下发网关,静态写入无效。
用 nmcli 改网关时为什么经常不生效
nmcli 是 NetworkManager 的命令行工具,但它和传统 network.service 有冲突。如果你的系统启用了 NetworkManager(systemctl is-enabled NetworkManager 返回 enabled),又手动改了 ifcfg 文件,两者可能打架:
- 先查连接名:
nmcli connection show,找状态为activated的连接(通常名含网卡名,如"System ens33") - 改网关:
nmcli connection modify "System ens33" ipv4.gateway 192.168.10.1 - 关键一步:必须同时设
ipv4.ignore-auto-routes和ipv4.ignore-auto-dns为yes,否则 DHCP 获取的路由/DNS 会覆盖你的设置 - 重启连接:
nmcli connection down "System ens33" && nmcli connection up "System ens33"(不能只用up)
最易忽略的点:NetworkManager 默认会从 DHCP 响应中自动提取网关并设为 default,即使你手动指定了 ipv4.gateway,只要没关掉 ignore-auto-routes,它就会回退。

















