CentOS 7 中 route 命令添加的路由重启即失效,永久生效必须写入 /etc/sysconfig/network-scripts/route-网卡名 文件,文件名须严格匹配网卡实际名称(如 ens33),内容格式为 目标网络/掩码 via 下一跳 dev 网卡名,且需确保对应 ifcfg-网卡文件中 ONBOOT=yes 并 DEVICE 一致。

route 命令加的路由重启就丢,CentOS 7 必须写进网卡对应的 route-* 文件才能永久生效。别碰 /etc/rc.local 或 /etc/sysconfig/static-routes —— 前者太晚(NFS 挂载会失败),后者在 CentOS 7 已被废弃。
route-ifname 文件必须按规范命名
文件名必须严格匹配网卡名,比如网卡是 ens33,文件就得叫 /etc/sysconfig/network-scripts/route-ens33;如果是 bond0,就得是 route-bond0。大小写、拼写、连字符一个都不能错。
常见错误现象:systemctl restart network 后 ip route show 看不到新路由,但文件明明存在 —— 很大概率是文件名和网卡名不一致。
- 先确认网卡名:
ip -br a或ls /sys/class/net/ - 文件必须放在
/etc/sysconfig/network-scripts/下,不能放错目录 - 文件权限无需特别设置,但内容不能有语法错误(比如多空格、漏关键词)
route-ifname 文件的正确写法
格式只有两种合法写法,不能混用 ip route 和 route 语法:
-
推荐用 IP 格式(更清晰、兼容性好):
192.168.10.0/24 via 192.168.1.254 dev ens33 -
传统 route 格式(需带 netmask):
192.168.10.0 netmask 255.255.255.0 via 192.168.1.254 dev ens33
注意:dev ens33 中的接口名必须和实际网卡一致;via 后面是下一跳 IP,不是本机 IP;每行一条路由,不能合并或用分号隔开。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
network 服务重启后仍不生效?检查这三点
执行 systemctl restart network 后,如果 ip route show 没出现预期条目,优先排查:
-
systemctl status network看是否有报错,常见如 “Failed to start LSB: Bring up/down networking” —— 说明某张网卡配置文件(ifcfg-*)里ONBOOT=yes缺失或为no - 确认
route-*文件中写的dev接口名,和对应ifcfg-*文件里的DEVICE=值完全一致(包括大小写) - 运行
sudo /sbin/ifup --force ens33(替换为你的网卡名)手动触发加载,看是否报错;报错信息通常比systemctl restart network更具体
验证和调试建议
别只信 ip route show,得结合实际流量验证:
- 加完路由后,立刻用
ping -I ens33 192.168.10.1(指定出口网卡)测试下一跳是否可达 - 用
tcpdump -i ens33 host 192.168.10.5抓包,确认流量真从该接口发出 - 如果目标主机能 ping 通但应用连不上,可能是防火墙(
firewalld)或反向路径过滤(rp_filter)拦截,临时关掉试试:echo 0 > /proc/sys/net/ipv4/conf/ens33/rp_filter
最常被忽略的是:路由写了,但网关本身不可达,或者中间设备(如交换机、ACL)没放行该网段流量 —— 路由表再干净也没用。


















