在Linux系统中,路由表是网络通信的核心组件,它决定了数据包的转发路径,无论是排查网络问题、配置静态路由,还是理解系统的网络行为,掌握查看路由的方法都至关重要,Linux提供了多种命令来查看路由信息,包括传统的route
命令和现代的ip route
命令,以及netstat
等辅助工具,本文将详细介绍这些命令的使用方法、输出解析及实际应用场景。
使用route
命令查看路由
route
命令是早期Linux系统中用于查看和操作路由表的工具,属于net-tools
包,尽管其功能逐渐被ip route
替代,但在某些场景下(如维护旧系统)仍会用到。
基本用法
最常用的参数是-n
(以数字形式显示,不解析主机名),避免DNS查询带来的延迟:
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
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 eth0
各字段含义如下(表格形式总结更清晰):
字段 | 说明 |
---|---|
Destination | 目标网络或主机IP地址。0.0.0 表示默认路由(匹配所有未知目标) |
Gateway | 下一跳路由器的IP地址。0.0.0 表示直接连接(无需经过网关) |
Genmask | 子网掩码,用于确定目标网络的范围。0.0.0 表示默认路由的掩码 |
Flags | 路由标志,常见值:U (路由可用)、G (网关路由)、H (主机路由)、D (动态路由) |
MSS | TCP最大分段大小(通常为0,由系统自动调整) |
Window | TCP窗口大小(通常为0,由系统自动调整) |
Iface | 输出接口,即数据包从哪个网卡发出 |
其他常用参数
-v
:显示详细信息(包括路由协议类型等);-A inet6
:查看IPv6路由(需系统支持IPv6);add/del
:手动添加或删除路由(需root权限,如route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.2
)。
使用ip route
命令查看路由
ip route
是iproute2
工具包的核心命令,功能更强大、输出更灵活,是现代Linux系统(如Ubuntu、CentOS 7+)的推荐工具。
基本用法
最简单的查看方式:
ip route show
或简写为:
ip route
输出解析
输出格式更简洁直观,
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10 metric 100
各字段含义如下:
字段 | 说明 |
---|---|
default | 默认路由(目标为0.0.0/0 的简写) |
via | 下一跳IP地址(网关),若为直接连接则省略该字段 |
dev | 输出接口 |
proto | 路由协议:kernel (内核路由,如直连路由)、dhcp (DHCP分配)、static (静态配置) |
scope | 路由作用域:link (直连网络)、host (本地主机)、global (全局路由) |
src | 源IP地址(可选,指定从哪个IP发送数据包) |
metric | 跃点数(越小表示优先级越高,影响路由选择) |
常用参数
-4
/-6
:仅显示IPv4/IPv6路由;-v
:显示详细信息(包括路由表ID、缓存等);list
:同show
,可指定目标(如ip route list 192.168.1.0/24
);get
:获取到达特定目标的详细路由路径(如ip route get 8.8.8.8
)。
示例:查看特定目标的路由
ip route get 8.8.8.8
输出会显示到达8.8.8
所经过的网关、接口、跃点数等完整路径,
8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.10 uid 1000
cache mtu 1500 advmss 1460 hoplimit 64
查看路由表的附加信息
查看路由统计信息
若需了解路由的使用情况(如数据包数量、字节数),可结合ss
或netstat
:
netstat -s | grep "Routing" # 查看路由统计
查看多路由表
Linux支持多路由表(如main
、default
、local
),可通过ip route show table <表名>
查看:
ip route show table main # 查看主路由表 ip route show table local # 查看本地路由表(含127.0.0.0等)
route
与ip route
的对比
为方便选择,以下是两个命令的对比总结:
对比维度 | route 命令 |
ip route 命令 |
---|---|---|
所属工具包 | net-tools (逐渐被淘汰) |
iproute2 (现代系统默认) |
功能丰富度 | 基础路由查看与操作 | 支持IPv4/IPv6、多路由表、路由策略等 |
输出格式 | 表格形式,字段固定 | 灵活的文本格式,可自定义显示 |
扩展性 | 有限 | 强大(如结合ip rule 实现策略路由) |
系统兼容性 | 旧系统(如CentOS 6) | 新系统(CentOS 7+、Ubuntu 18.04+等) |
相关问答FAQs
Q1: 如何快速查看Linux系统的默认路由?
解答:
默认路由是目标为0.0.0/0
的路由,表示所有未知目标都通过该网关转发,可通过以下命令快速查看:
- 使用
ip route
(推荐):ip route show default
输出示例:
default via 192.168.1.1 dev eth0 proto dhcp metric 100
,其中via
后的168.1.1
即为默认网关。 - 使用
route -n
:route -n | grep "^0.0.0.0"
输出示例:
0.0.0 192.168.1.1 0.0.0.0 UG 0 0 eth0
,Gateway
列即为默认网关。
Q2: 为什么route
命令在某些系统上不可用,而ip route
可以?
解答:route
命令属于net-tools
工具包,而ip route
属于iproute2
工具包,在较新的Linux发行版中(如Ubuntu 20.04、CentOS 8),net-tools
可能不再默认安装,而iproute2
是基础网络工具的核心组件,通常默认包含。
若遇到route: command not found
错误,可通过以下方式解决:
- 安装
net-tools
(不推荐,仅用于兼容旧系统):sudo apt install net-tools # Debian/Ubuntu sudo yum install net-tools # CentOS/RHEL
- 直接使用
ip route
(推荐):现代系统所有路由操作均支持,无需额外安装。
iproute2
的设计更符合现代网络需求,支持IPv6、策略路由等高级功能,因此建议优先使用ip route
。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22076.html