在Linux系统中,添加路由主要依赖两个命令:传统的route命令和现代化的ip route命令。虽然图形化网络管理工具也能配置,但在服务器排障、容器网络调试等场景下,掌握命令行添加路由仍是运维基本功。理解这两个命令的差异与用法,能帮助你快速打通网络连通性。

一、route命令添加路由的用法
route命令来自net-tools工具包,是早期Linux发行版自带的网络配置命令。它语法简单,适合快速临时添加路由。添加路由的基本格式为route add -net 目标网段 netmask 子网掩码 gw 网关或route add -host 主机IP gw 网关。例如,要把访问192.168.2.0/24网段的流量指向192.168.1.1,可以执行如下命令:
# 添加到达192.168.2.0/24的静态路由 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 # 添加默认路由(网关为192.168.1.254) route add default gw 192.168.1.254 # 查看当前路由表 route -n
使用route -n可以以数字形式显示路由表,避免DNS反向解析造成的卡顿。需要注意的是,用route命令添加的路由默认是临时的,系统重启或网络服务重启后就会失效。如果希望永久生效,需要把命令写入发行版的网卡配置文件,如CentOS的/etc/sysconfig/network-scripts/route-eth0。
另一个常见误区是混淆route与ip route的输出格式。route显示的Flags中U代表路由启用,G代表使用网关,HG代表主机路由经由网关。当路由不通时,先确认Flags是否包含UG,再检查网关是否在同一二层网络可达,能缩小至少一半的排错时间。
二、ip route命令的现代用法
ip route属于iproute2软件包,几乎所有新版本Linux都预装。它功能更强,统一了网络接口、地址、路由的管理入口。添加路由的语法为ip route add 目标网段/掩码 via 网关 dev 网卡名。相对于route,它明确要求指定出口设备,减少歧义。
# 添加网段路由并指定出口网卡 ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 # 添加默认路由 ip route add default via 192.168.1.254 dev eth0 # 查看路由 ip route show # 删除路由 ip route del 10.0.0.0/8 via 192.168.1.1 dev eth0
在脚本化运维中,ip route的优势在于输出稳定、易于grep解析。例如ip route get 8.8.8.8能直接返回某IP实际命中的路由与出口设备,对验证策略路由非常有用。此外,ip route支持metric参数设置优先级,也支持blackhole等高级类型,这是老route命令难以实现的。
永久配置方面,使用ip route添加的路由同样不会重启保留。在Debian系可写入/etc/network/interfaces的post-up段落,在RHEL系则建议配合nmcli或route-接口名文件。无论哪种方式,核心参数都是目标、网关、dev三者一致,否则会因作用域错误被内核拒绝。
三、临时路由与永久路由的选择
实际工作中,临时路由多用于紧急恢复:比如某台机器因默认路由被误删无法联网,直接ip route add一条就能立刻测试,不影响其他配置。而正式环境应当落盘为永久路由,避免重启后业务中断。两者并非互斥,而是先临时验证、再永久固化。
# 先临时添加验证连通性 ip route add 172.16.0.0/12 via 10.0.0.1 dev eth1 ping 172.16.1.5 # 验证通过后写入配置文件(CentOS示例) echo "172.16.0.0/12 via 10.0.0.1 dev eth1" >> /etc/sysconfig/network-scripts/route-eth1
从维护成本看,ip route正在全面取代route。部分新发行版已不再默认安装net-tools,执行route会提示命令未找到。因此新手建议直接练熟ip route,把route作为兼容老系统的补充知识。两者本质都是向内核路由表写入条目,只是用户态工具不同。
四、常见错误与排查思路
添加路由后网络仍不通,多半不是命令本身错,而是网络拓扑不匹配。第一类错误是网关不在本地直连网段,内核会报“Nexthop has invalid gateway”。此时用ip addr确认网卡IP与网关是否同段。第二类错误是多条路由_metric_冲突,导致流量走了错误出口,可用ip route get 目标IP核对。
| 现象 | 可能原因 | 排查命令 |
|---|---|---|
| 添加路由报权限不足 | 未用root执行 | sudo -i 后重试 |
| 路由存在但ping不通 | 网关无转发或防火墙拦截 | tcpdump -i eth0 icmp |
| 重启后路由消失 | 仅临时添加 | 写入对应配置文件 |
最后强调,无论使用route还是ip route,改路由前都应记录原表。一条ip route save > /tmp/route.bak的备份,能在配错后迅速还原,避免远程机器失联。掌握这些命令与习惯,你就能从容应对绝大多数Linux静态路由配置需求。
linux添加路由route命令ip_route命令修改时间:2026-08-06 10:33:32