在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接口直连,数据包在二层转发即可到达目标。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/418537.html<
