在Linux系统中,路由表是网络层核心组件,它记录了数据包的转发路径,决定目标IP地址该如何被送达——是直接发送到本地网络,还是通过网关转发到其他网络,查看路由表是网络管理、故障排查(如无法访问特定网络、网关异常等)和服务配置(如多宿主主机、负载均衡)的基础操作,Linux中查看路由表主要有两种命令:ip route
(现代Linux推荐,功能全面)和route
(旧版命令,逐渐被替代)。
使用ip route
命令查看路由表(推荐)
ip route
是iproute2
工具包的一部分,自Linux 2.2起成为主流工具,功能比route
更强大,支持IPv4/IPv6、多路由表等高级特性,其基本语法为ip route [show|list] [选项]
,常用选项包括按接口过滤、按路由表过滤、按协议过滤等。
基本查看:显示所有路由条目
执行ip route
或ip route show
(可简写为ip r
),会输出当前系统的路由表信息。
default via 192.168.1.1 dev eth0 proto dhcp metric 100
10.0.0.0/24 dev ens33 proto kernel scope link src 10.0.0.100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.102 metric 100
192.168.1.0/24 dev eth0 proto dhcp scope link metric 100
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.102
输出字段详解
路由表条目由多个字段组成,每个字段含义如下(可通过表格更直观理解):
字段名 | 含义 | 示例 |
---|---|---|
destination | 目标网络/主机地址 | default (默认路由)、168.1.0/24 (目标子网) |
via/gateway | 下一跳地址(非直连路由) | via 192.168.1.1 (通过网关192.168.1.1转发) |
dev | 输出网络接口 | dev eth0 (从eth0接口发出)、dev ens33 |
src | 源IP地址(可选) | src 10.0.0.100 (发送数据包时使用的源IP) |
metric | 跃点数(路由优先级) | metric 100 (值越小优先级越高,0为直连路由) |
scope | 路由作用范围 | link (直连网络)、host (本地主机)、global (全局路由) |
proto | 路由协议 | kernel (内核直连)、dhcp (DHCP分配)、static (静态配置)、ospf (动态路由协议) |
table | 所属路由表(可选) | table main (默认表)、table default (默认路由表) |
常用过滤查询
- 按接口过滤:查看特定接口的路由,如
ip route show dev eth0
(仅显示eth0相关的路由)。 - 查看默认路由:
ip route show default
或ip route show 0.0.0.0/0
(IPv4默认路由)。 - 查看不可达路由:
ip route show unreachable
(如手动配置的黑洞路由,丢弃匹配数据包)。 - 查看多路由表:Linux支持多路由表(如
main
、local
、default
),通过ip route show table <表名>
查看,如ip route show table local
(本地路由表)。
使用route
命令查看路由表(旧版)
route
是早期Linux网络工具(net-tools包的一部分),功能相对有限,仅支持IPv4,且逐渐被iproute2
取代,但在一些旧系统(如CentOS 6及之前)中仍可能使用,其基本语法为route [选项]
,常用选项:
-n
:不解析主机名,直接显示IP地址(避免DNS查询延迟,推荐使用)。-e
:显示额外信息(如netmask)。
route -n
输出:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 ens33
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 eth0
其中Flags
字段含义:U
(路由可用)、G
(通过网关)、H
(目标主机)、(拒绝路由)。
路由表应用场景
查看路由表的核心价值在于解决实际问题:
- 网络连通性排查:若无法访问某个IP,先检查路由表中是否存在目标网络的路由条目(如访问
10.10.10
时,需确认是否有10.10.0/24
或默认路由)。 - 网关可达性检查:默认路由的网关(如
168.1.1
)是否可达,可通过ping
测试。 - 多路径路由验证:若配置了多网卡负载均衡,可通过路由表确认多条路径是否存在(如
metric
值是否不同)。
相关问答FAQs
为什么ip route show
中部分路由没有“gateway”字段?
答:这类路由通常是“直连路由”或“本地主机路由”,直连路由(如168.1.0/24 dev eth0
)表示目标网络与本地接口直接相连,无需通过网关转发,gateway”字段为空;本地主机路由(如0.0.0/8 dev lo
)作用范围为host,仅限本地通信,也不需要网关。
如何查看Linux系统中的多路由表?如何确认路由表名称?
答:使用ip route show table <表名>
查看指定路由表,如ip route show table main
(默认表)、ip route show table default
(默认路由表),若需查看所有路由表名称,执行ip route list tables
,输出类似“table main local default”等内容,列出系统中定义的所有路由表名称(通常包括main
、local
、default
、cache
等)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34001.html