菜鸟科技网

Linux查看路由表命令有哪些?

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

Linux查看路由表命令有哪些?-图1
(图片来源网络,侵删)

基础命令: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 <表名>:查看指定路由表(如maindefaultlocal等),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接口直接可达,相比routeip route的输出更易读,且支持更复杂的路由规则查询,如ip route get 8.8.8.8可查看访问目标IP8.8.8时实际使用的路由条目。

Linux查看路由表命令有哪些?-图2
(图片来源网络,侵删)

路由条目详解

路由表中的每个条目包含多个关键字段,理解这些字段的意义对于网络排查至关重要,以下以ip route输出为例,说明常见字段:

  • 目标网络(Destination):目标IP地址或网络段,如0.0.0(默认路由)、168.1.0/24(特定子网)。
  • 网关(Gateway):下一跳地址,若为local0.0.0,表示直连网络,无需网关。
  • 输出接口(Dev):数据包发出的网络接口,如eth0wlan0
  • 协议(Proto):路由来源,如kernel(内核自动生成)、static(手动配置)、dhcp(DHCP分配)、bgp(动态路由协议)等。
  • 作用域(Scope):路由的有效范围,如link(链路范围,仅本地网络)、host(主机范围,仅本机)、global(全局范围,可跨网络)。
  • 跃点数(Metric):路由成本值,越小越优先,动态路由协议会根据跃点数选择最优路径。

Linux路由表还支持多表查询,通过ip route list table <表名>可查看自定义路由表,在策略路由场景中,可能为特定流量(如VPN流量)配置单独的路由表,实现分流。

实际应用场景

  1. 默认路由排查:当无法访问外网时,首先检查默认路由是否存在且正确,通过ip route | grep default查看默认网关是否配置,或ping -I eth0 8.8.8.8测试通过特定接口是否能访问外网。
  2. 特定路由验证:若访问某内网服务器异常,可检查目标IP的路由条目是否存在。ip route get 10.0.0.100可显示访问0.0.100时使用的路由、接口及网关,判断是否存在路由冲突或错误配置。
  3. 多路径路由查看: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),或使用网络管理工具(如NetworkManagernetplan)。

Linux查看路由表命令有哪些?-图3
(图片来源网络,侵删)

相关问答FAQs

Q1: 如何区分路由表中的直连路由和静态路由?
A: 通过ip route输出中的protogateway字段判断,直连路由的proto通常为kernellink,且gatewaylocal0.0.0,表示目标网络与本地接口直接相连;静态路由的protostatic,且gateway为非零的IP地址,表示需通过指定网关转发。

Q2: 为什么ip route显示的路由条目中,某些目标网络的作用域为link
A: 作用域为link的路由表示仅在链路层有效,即目标网络与本地网络处于同一广播域(如同一VLAN或物理网段),此类路由无需经过网关,可直接通过本地接口访问,常见于直连子网的路由条目中。168.1.0/24 dev eth0 scope link表示168.1.0/24网络与eth0接口直连,数据包在二层转发即可到达目标。

分享:
扫描分享到社交APP
上一篇
下一篇