商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > CentOS 7怎么添加静态路由条目

CentOS 7怎么添加静态路由条目

  发布于2026-08-13 阅读(0)

扫一扫,手机访问

在 CentOS 7 里,ip route add 只会临时生效。想让路由真正“落地”,必须把配置写进 /etc/sysconfig/network-scripts/route-IFACE 文件,然后执行 systemctl restart network 重新加载。至于 route 命令,已经弃用了;而 /etc/rc.local 这类路径,也并不可靠。

CentOS 7怎么添加静态路由条目

ip route add 是添加静态路由最直接有效的方式,但是否“永久生效”取决于你用的是临时命令还是配置文件。CentOS 7 不再推荐 route 命令,它已被 ip route 取代;而永久路由必须写入配置文件,靠重启网络服务加载,不是靠 /etc/rc.localstatic-routes 这类已弃用或不稳定的路径。

临时加一条路由:用 ip route add 最快验证

适合测试连通性、快速绕过默认网关、或调试多网卡场景。执行后立即生效,但重启或 systemctl restart network 后就消失。

  • ip route add 10.20.0.0/16 via 192.168.5.1 dev ens33 —— 指定出接口,避免内核选错路径
  • ip route add 172.16.1.100/32 via 192.168.10.254 —— 主机路由,省略 dev 时内核会自动匹配(但不推荐依赖)
  • ip route add default via 10.0.1.1 dev ens37 —— 替换默认路由,注意别把原默认网关删了导致失联
  • 删错条目用 ip route del 10.20.0.0/16,查当前表用 ip route show

永久生效:只认 /etc/sysconfig/network-scripts/route-IFACE

这是 CentOS 7 最新支持且唯一可靠的方式。其他路径如 /etc/sysconfig/static-routes/etc/rc.local 在 systemd 环境下不可靠,部分版本甚至完全忽略。

  • 确认网卡名:用 ip link showls /sys/class/net/ 查真实接口名(如 ens192,不是 eth0
  • 创建文件:vi /etc/sysconfig/network-scripts/route-ens192,内容写成一行一条,格式为 目标网段/掩码 via 网关 dev 接口名
  • 不要混用两种语法:比如不能在同一个 route-ens192 文件里既有 10.10.0.0/16 via 192.168.1.1 dev ens192,又有 ADDRESS0=... 这种传统三行式
  • 保存后必须运行 systemctl restart network(不是 service network restart),否则不加载

双网卡或策略路由场景:别漏掉 dev 和路由表隔离

当主机有多个网卡、多个默认网关,或需要让某网段流量走特定出口时,仅靠单条 via 不够,容易被内核按最长前缀匹配误选路径。

  • 务必显式指定 dev,尤其在多网卡同网段或存在 secondary IP 时
  • 如果已有默认路由,新加的非默认路由无需 metric;但若要覆盖默认行为,需配合 tableip rule,这时 route-IFACE 文件就不够用了
  • ip route show table main 只看主路由表;策略路由要查 ip route show table 100 并配 ip rule add from 192.168.2.0/24 table 100
  • 这种复杂情况建议先用 ip route add ... table 100 临时验证,再写进 /etc/iproute2/rt_tables 和对应脚本

验证和排错:别只信 ip route show

看到路由条目不等于流量真能走通。常见失效原因不是语法错,而是网关不可达、接口未 up、或防火墙拦截 ICMP/转发。

  • ping 网关本身(如 ping 192.168.5.1),不通就说明链路层有问题
  • ping 目标网段内一个已知存活的 IP(如 ping 10.20.1.1),失败时用 tcpdump -i ens33 icmp 看包是否发出、是否有回包
  • ip route get 10.20.1.1 能显示内核实际选择的下一跳和出接口,比 ip route show 更反映真实路径
  • 检查 sysctl net.ipv4.ip_forward 是否为 1(仅当本机需充当中继时才需要)
真正容易被忽略的点是:CentOS 7 的 NetworkManager 默认接管网络配置,如果你用 nmclinmtui 修改过连接,network 服务可能压根不读 route-IFACE 文件。此时要么禁用 NetworkManager,要么改用 nmcli connection modify "System ens33" +ipv4.routes "10.20.0.0/16 192.168.5.1"nmcli connection reload
本文转载于:https://www.php.cn/faq/2979185.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注