centos 7中ip route add仅临时生效,永久路由必须写入/etc/sysconfig/network-scripts/route-iface文件并执行systemctl restart network加载;route命令已弃用,/etc/rc.local等路径不可靠。

ip route add 是添加静态路由最直接有效的方式,但是否“永久生效”取决于你用的是临时命令还是配置文件。CentOS 7 不再推荐 route 命令,它已被 ip route 取代;而永久路由必须写入配置文件,靠重启网络服务加载,不是靠 /etc/rc.local 或 static-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-<em>IFACE</em>
这是 CentOS 7 官方支持且唯一可靠的方式。其他路径如 /etc/sysconfig/static-routes 或 /etc/rc.local 在 systemd 环境下不可靠,部分版本甚至完全忽略。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 确认网卡名:用
ip link show或ls /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;但若要覆盖默认行为,需配合table和ip 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(仅当本机需充当中继时才需要)
nmcli 或 nmtui 修改过连接,network 服务可能压根不读 route-IFACE 文件。此时要么禁用 NetworkManager,要么改用 nmcli connection modify "System ens33" +ipv4.routes "10.20.0.0/16 192.168.5.1" 并 nmcli connection reload。










