在Linux系统中,路由表是网络数据包传输的核心依据,它记录了目标网络地址与下一跳(或直接接口)的映射关系,决定了数据包的转发路径,查看和管理路由表是网络运维和故障排查的基本技能,本文将详细介绍Linux查看路由表的命令及其使用方法,涵盖常用工具、参数解析及实际应用场景。

基础命令:route
route
命令是传统的Linux路由查看工具,虽然在新版系统中逐渐被ip route
替代,但在一些旧环境或简单场景下仍被使用,其基本语法为route [选项]
,常用参数包括:
-n
:以数字形式显示地址和端口,避免DNS解析,提高速度。-v
:显示详细信息,包括路由的来源(如内核、动态路由协议等)。-A
:指定地址族,如-A inet
(IPv4)、-A inet6
(IPv6)。
查看IPv4路由表的完整命令为route -n -v
,输出结果包括目标网络(Destination)、子网掩码(Genmask)、网关(Gateway)、跃点数(Metric)、接口(Iface)及标志(Flags,如U
表示路由可用、G
表示通过网关等),目标为0.0.0
的条目是默认路由,所有不匹配其他路由规则的数据包将通过该路由转发。
现代工具:ip route
ip
命令是iproute2
工具包的一部分,功能更强大且符合现代Linux网络管理需求,查看路由表的核心命令为ip route [选项] [show|list]
,常用参数包括:
-4
或-6
:分别显示IPv4或IPv6路由表,默认显示所有地址族。-n
:禁止DNS解析,以数字形式显示地址。-l
或-link
:显示链路层信息,如MTU、网络设备索引等。dev <设备名>
:仅显示指定设备的路由条目。table <表名>
:查看指定路由表(如main
、default
、local
等),Linux支持多路由表,通过策略路由实现灵活转发。
ip -4 route show
命令会列出所有IPv4路由条目,每条条目以简洁的文本形式呈现,如default via 192.168.1.1 dev eth0
表示默认路由通过网关168.1.1
,从eth0
接口发出;168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
表示直连网络168.1.0/24
,通过eth0
接口直接可达,相比route
,ip route
的输出更易读,且支持更复杂的路由规则查询,如ip route get 8.8.8.8
可查看访问目标IP8.8.8
时实际使用的路由条目。

路由条目详解
路由表中的每个条目包含多个关键字段,理解这些字段的意义对于网络排查至关重要,以下以ip route
输出为例,说明常见字段:
- 目标网络(Destination):目标IP地址或网络段,如
0.0.0
(默认路由)、168.1.0/24
(特定子网)。 - 网关(Gateway):下一跳地址,若为
local
或0.0.0
,表示直连网络,无需网关。 - 输出接口(Dev):数据包发出的网络接口,如
eth0
、wlan0
。 - 协议(Proto):路由来源,如
kernel
(内核自动生成)、static
(手动配置)、dhcp
(DHCP分配)、bgp
(动态路由协议)等。 - 作用域(Scope):路由的有效范围,如
link
(链路范围,仅本地网络)、host
(主机范围,仅本机)、global
(全局范围,可跨网络)。 - 跃点数(Metric):路由成本值,越小越优先,动态路由协议会根据跃点数选择最优路径。
Linux路由表还支持多表查询,通过ip route list table <表名>
可查看自定义路由表,在策略路由场景中,可能为特定流量(如VPN流量)配置单独的路由表,实现分流。
实际应用场景
- 默认路由排查:当无法访问外网时,首先检查默认路由是否存在且正确,通过
ip route | grep default
查看默认网关是否配置,或ping -I eth0 8.8.8.8
测试通过特定接口是否能访问外网。 - 特定路由验证:若访问某内网服务器异常,可检查目标IP的路由条目是否存在。
ip route get 10.0.0.100
可显示访问0.0.100
时使用的路由、接口及网关,判断是否存在路由冲突或错误配置。 - 多路径路由查看:Linux支持等价多路径(ECMP),通过
ip route
可查看多条相同目标的路由条目(如nexthop
字段),验证负载均衡是否生效。
路由表管理
除查看外,Linux还支持临时添加、删除或修改路由条目:
- 添加路由:
sudo ip route add <目标网络> via <网关> dev <接口>
(如ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0
)。 - 删除路由:
sudo ip route del <目标网络>
。 - 添加直连路由:
sudo ip route add <目标网络> dev <接口>
(无需网关)。
注意,临时路由在系统重启后会失效,若需永久保存,需修改配置文件(如/etc/network/interfaces
或/etc/sysconfig/network-scripts/route-eth0
),或使用网络管理工具(如NetworkManager
、netplan
)。

相关问答FAQs
Q1: 如何区分路由表中的直连路由和静态路由?
A: 通过ip route
输出中的proto
和gateway
字段判断,直连路由的proto
通常为kernel
或link
,且gateway
为local
或0.0.0
,表示目标网络与本地接口直接相连;静态路由的proto
为static
,且gateway
为非零的IP地址,表示需通过指定网关转发。
Q2: 为什么ip route
显示的路由条目中,某些目标网络的作用域为link
?
A: 作用域为link
的路由表示仅在链路层有效,即目标网络与本地网络处于同一广播域(如同一VLAN或物理网段),此类路由无需经过网关,可直接通过本地接口访问,常见于直连子网的路由条目中。168.1.0/24 dev eth0 scope link
表示168.1.0/24
网络与eth0
接口直连,数据包在二层转发即可到达目标。