命令是干什么的
route 是 net-tools 提供的传统路由表命令,用来查看、添加和删除路由,操作的就是内核里那张唯一的路由表。它已经被 iproute2 的 ip route 取代:net-tools 自 2001 年前后基本停止维护,新版发行版默认不再预装。排查网络时最关键的一点是知道两者改的是同一张表,route 与 ip route 看到的必须是同一份内容,不要以为它们各管一套。
基本信息
| 适用平台 | Linux,来自 net-tools 软件包,最小化安装需要自行安装 |
|---|---|
| 查看语法 | route -n,加 -n 不解析主机名,输出更快也更稳定 |
| 增删语法 | route add/del -net 网段 netmask 掩码 gw 网关 dev 网卡 |
| 现代替代 | ip route show / add / del / replace,支持 CIDR 写法 |
| 持久化 | route 的改动不落盘,重启即失效,要写进发行版网络配置或配置管理 |
| 权限要求 | 查看任意用户可读,增删需要 root |
典型使用场景
- 临时加一条路由验证连通性,比改配置文件再重载网络服务快得多
- 维护老系统与老脚本时看懂 route 语法,排障时与 ip route 输出互相对照
- 新增专线或对等连接后临时指向网关,确认链路可用再固化进配置
- 排查默认网关被覆盖或出现路由环路,用 route -n 与 ip route show 交叉验证
- 切流演练:临时摘掉默认路由验证备用出口是否放行,并练熟回滚步骤
常用示例
常用示例
route -n # 查看路由表,数字形式不查 DNS
route -A inet6 -n # 查看 IPv6 路由表
route add -net 10.20.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev eth0 # 加网段路由
route add -host 10.20.0.9 gw 10.0.0.1 # 加主机路由
route del -net 10.20.0.0 netmask 255.255.0.0 # 删除网段路由
route add default gw 10.0.0.1 # 改默认网关,远程执行会瞬间断网
ip route show # 等价查看,信息比 route 更全
ip route add 10.20.0.0/16 via 10.0.0.1 dev eth0 # 现代写法,直接支持 CIDRroute -n 输出逐列读法
| 列名 | 含义 | 正常与异常 |
|---|---|---|
| Destination | 目标网段,0.0.0.0 表示默认路由 | 出现多行 0.0.0.0 说明有多条默认路由,谁生效看度量值 |
| Gateway | 下一跳地址,0.0.0.0 表示直连网段不走网关 | 指向不可达地址时会表现为能查到路由但完全不通 |
| Genmask | 目标网段掩码,255.255.255.255 表示主机路由 | 掩码写错会让这条路由覆盖的范围超出预期 |
| Flags | U 可用、H 主机路由、G 经网关、R 拒绝、M 被改写过 | 缺少 U 说明这条路由不生效 |
| Metric | 路由优先级,数值越小越优先 | 多条默认路由并存时由它决定选谁 |
| Iface | 出口网卡 | 与预期出口不一致说明流量匹配到了别的路由 |
route 与 ip route 操作同一张内核路由表,不存在两套独立状态;排查时统一以 ip route show 为准,它能看到协议、来源和更多属性。
route 命令的改动不写配置文件,重启或网络服务重载后就没了。要长期生效:RHEL 系写 route-网卡 文件或用 nmcli,Debian 系写 interfaces 或 netplan。
net-tools 多年不更新,新脚本和新自动化直接用 iproute2;只有在维护老系统、读老资料时才需要 route 这一套语法。