查看linux路由表应优先使用ip route show,其次route -n和netstat -rn;需区分主表与local表(编号255),并可用grep精准筛选目标路由。

如果您需要确认 Linux 系统当前如何转发网络数据包,则需检查内核维护的路由表。路由表决定了目标 IP 地址对应的数据包应经由哪个网关或直接从哪个接口发出。以下是查看路由表的多种可靠方法:
一、使用 route -n 命令查看 IPv4 路由表
route 命令是传统 net-tools 工具集的一部分,-n 参数可禁用 DNS 反向解析,确保输出为纯数字 IP 地址,避免延迟并提升准确性。该命令显示 Kernel IP routing table,字段含义明确,适合快速定位默认网关与直连网段。
1、在终端中输入 route -n 并回车,观察输出内容。
2、查找 Destination 列值为 0.0.0.0 的行,其 Gateway 列即为默认网关地址。
3、检查 Flags 列中是否含 UG 标志(U 表示启用,G 表示经网关),确认该条目为有效默认路由。
4、核对 Interface 列所列网卡(如 eth0、ens33、wlan0)是否处于活动状态,可通过 ip link show 验证。
二、使用 ip route show 命令查看主路由表
ip route 是 iproute2 工具集的核心命令,现代 Linux 发行版默认预装,支持 IPv4/IPv6 统一语法,输出包含 proto、metric、scope 等元信息,结构更清晰且便于脚本解析,是当前推荐的标准方式。
1、执行 ip route show 或简写为 ip route,列出主路由表(table main)全部条目。
2、筛选默认路由时,运行 ip route show default 或 ip route | grep 'default via'。
3、验证某目标 IP 的实际选路路径,执行 ip route get 8.8.8.8,输出将精确显示出接口与下一跳地址。
4、查看 IPv6 路由表,使用 ip -6 route show。
三、使用 netstat -rn 命令查看兼容格式路由表
netstat -r 选项提供与 route -n 高度一致的输出格式,属于传统 net-tools 工具集,在未安装 iproute2 的精简系统(如部分嵌入式或旧版 CentOS 6)中仍具实用价值,适用于需与历史运维脚本保持兼容的场景。
1、在终端中输入 netstat -rn 并回车。
2、确认输出表头为 Kernel IP routing table,各字段含义与 route -n 完全相同。
3、若提示 command not found,需先安装 net-tools 包:在 Debian/Ubuntu 系统执行 apt install net-tools,在 RHEL/CentOS 系统执行 yum install net-tools 或 dnf install net-tools。
四、查看本地路由表(table local)
Linux 内核维护多个路由表,local 表(编号 255)存储链路本地地址、广播地址、环回地址等特殊路由,这些条目不参与常规转发决策但影响本地套接字绑定与响应行为,route 命令无法访问此表,必须使用 ip route 指定表名。
1、执行 ip route show table local 或 ip route show table 255 查看本地路由内容。
2、列出所有已定义路由表名称与编号,查阅配置文件:cat /etc/iproute2/rt_tables。
3、注意 local 表中的路由通常标记为 scope link 或 scope host,不可用于外部数据包转发。
五、结合 grep 快速筛选特定目标路由
当路由表条目较多时,直接人工扫描效率低下。利用 shell 管道与 grep 可实现精准过滤,快速定位目标网络、主机或协议类型的路由规则,大幅缩短排查时间。
1、查找指向特定子网的路由,例如 192.168.5.0/24,执行 ip route show | grep '192.168.5.0/24'。
2、筛选所有主机路由(单 IP 目标),运行 route -n | grep 'UH',其中 UH 标志表示主机路由。
3、提取所有经由指定网关(如 192.168.1.1)的路由,使用 ip route show | grep 'via 192.168.1.1'。
4、仅显示直连网络(无网关),执行 ip route show | grep 'dev ' 并排除含 via 的行。










