ip route 是 linux 管理静态路由最主流方式,支持多表、策略路由和 metric 优先级;临时配置重启丢失,永久生效需按发行版写入配置文件(如 route-eth0、interfaces 或 netplan)。

直接用 ip route 管理静态路由,是当前 Linux 系统最主流、最推荐的方式。它比传统的 route 命令更清晰、更灵活,支持多路由表、策略路由等高级功能,且语法统一、兼容性好。
添加和删除临时静态路由
这类操作立即生效,但重启或网络服务重载后会丢失,适合调试、测试或临时调整。
- 添加一条去往
192.168.50.0/24网段的路由,下一跳为192.168.10.1,走eth0接口:ip route add 192.168.50.0/24 via 192.168.10.1 dev eth0 - 添加主机路由(精确到单个 IP):
ip route add 10.0.0.100 via 192.168.10.1 dev eth0 - 添加默认路由(当没有更具体的匹配时使用):
ip route add default via 192.168.10.1 dev eth0 - 查看当前 IPv4 路由表:
ip route show或ip route list - 删除某条路由:
ip route del 192.168.50.0/24(目标前缀即可,无需指定 via 或 dev)
设置路由优先级与度量值
当存在多条通往同一目标的路径时,内核依据 metric(度量值)决定优先级:数值越小,优先级越高。
- 添加带 metric 的路由,避免与现有默认路由冲突:
ip route add default via 192.168.20.1 dev eth1 metric 100 - 若已有默认路由(metric=0),新路由需设更高 metric 才不会覆盖它;也可用
replace强制更新:ip route replace default via 192.168.20.1 dev eth1 metric 50 - 查看路由时,metric 会显示在末尾,例如:
default via 192.168.10.1 dev eth0 proto static metric 100
永久生效:写入系统网络配置
临时命令不持久,必须结合发行版机制写入配置文件。不同系统方案不同,选对路径才能开机自动加载。
-
CentOS/RHEL 7+(使用 network-scripts):
编辑/etc/sysconfig/network-scripts/route-eth0(接口名按实际替换),写入:192.168.50.0/24 via 192.168.10.1 dev eth0
然后重启网络:systemctl restart network -
Debian/Ubuntu(传统 ifupdown):
在/etc/network/interfaces对应接口块中添加:up ip route add 192.168.50.0/24 via 192.168.10.1 dev eth0
再执行:ifdown eth0 && ifup eth0 -
Ubuntu 18.04+(Netplan):
编辑/etc/netplan/*.yaml,在对应网卡下加入:routes:- to: 192.168.50.0/24via: 192.168.10.1metric: 100
运行:sudo netplan apply
多网卡场景:避免回程路径错误
单网卡用 ip route 就够了;但双网卡或多出口时,仅靠 main 表容易导致“请求进 eth1、响应出 eth0”,对方因源地址与出口不匹配而丢包(SSH 卡死、ping 通但应用不通)。
- 先定义新路由表名(如
tab_eth1):
在/etc/iproute2/rt_tables末尾加一行:101 tab_eth1(ID ≥100,不能含特殊字符) - 为 eth1 创建独立路由表:
ip route add 10.0.20.0/24 dev eth1 src 10.0.20.100 table tab_eth1ip route add default via 10.0.20.1 dev eth1 table tab_eth1 - 添加策略规则,让来自 eth1 地址的流量查这张表:
ip rule add from 10.0.20.100/32 table tab_eth1ip rule add to 10.0.20.100/32 table tab_eth1 - 验证规则和表:
ip rule show和ip route show table tab_eth1











