ip route show 是在 Linux 系统中用于查看和显示当前系统路由表信息的命令,它展示了数据包如何根据目的地址被转发出去,包括直接连接的网络和通过网关可达的远程网络的信息。以下将从命令基本信息、参数、输出内容及常见使用场景等方面展开详细介绍:
ip 命令是 Linux 系统里强大且常用的网络配置和管理工具,可用于操作网络设备、路由、策略路由等。
route 是 ip 命令的一个子命令,专门处理路由相关操作。
show 表明此操作是展示、查看路由表的信息。该命令也常简写为 ip r 。
-s 或 --stats 或 --statistics:以更详细的统计信息形式显示路由表,包括数据包计数、字节计数等。
-f 或 --family:指定要显示的路由地址族,如 inet(IPv4)、inet6(IPv6)。例如 ip route show -f inet 只显示 IPv4 路由信息。
执行 ip route show 后,输出内容示例如下:
default via 192.168.1.254 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
169.254.0.0/16 dev eth0 scope link metric 1000
10.0.0.0/8 via 10.0.0.1 dev tun0 proto static metric 50
- 默认路由(
default):
default via 192.168.1.254 dev eth0 proto dhcp metric 100 意味着当系统要访问的目标 IP 地址不在其他具体路由条目中时,数据包会通过 192.168.1.254 这个网关进行转发。
dev eth0 指出数据包将从 eth0 这个网络接口发出。
proto dhcp 说明该路由信息是通过 DHCP(动态主机配置协议)获取的。
metric 100 是路由的度量值,系统在存在多条可选路由时,会优先选择度量值小的路由。
- 具体网段路由:
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100 表示到 192.168.1.0/24 这个网段的路由。
proto kernel 表示此路由是由内核自动生成的。
scope link 说明该路由的作用域是本地链路层,即该网段与本地设备直接相连。
src 192.168.1.100 表明从这个路由发出的数据包的源 IP 地址是 192.168.1.100。
- 链路本地地址路由:
169.254.0.0/16 dev eth0 scope link metric 1000 这类地址通常是在 DHCP 获取失败时,系统自动分配的链路本地地址,用于本地子网内通信。
-
via:指定下一跳的IP地址,即数据包将被发送到的下一个路由器的地址。如果没有 via,则表示这是一个直连网络。
-
dev:指示流量应从哪个网络接口发送出去。例如 eth0 或 wlan0 等。
-
proto:表示路由是如何学习或添加到路由表中的。常见的值有:
kernel:由内核自动添加的直连网络路由。
static:手动添加的静态路由。
dhcp:通过DHCP获得的路由。
-
scope:定义了路由的应用范围。例如:
global:适用于整个系统的所有目的地。
link:仅适用于同一链路上的目的地。
host:特定于本机的路由。
-
src:指定从该接口发出的数据包使用的源IP地址。这在多宿主主机(具有多个IP地址的主机)上特别有用。
-
metric:路由的成本度量值,用于在有多条路径到达同一目的地时选择最优路径。数值越小优先级越高。
特定情况说明
-
默认路由(Default Route):这是当没有任何其他路由规则匹配时使用的最后手段。通常指向你的ISP提供的网关或者局域网内的默认网关。
-
直连网络(Directly Connected Networks):这些是由网络接口直接连接的网络,不需要经过任何网关即可访问。它们通常带有 scope link 标记。
-
静态路由(Static Routes):由管理员手动配置的路由,用于指导特定子网的流量通过指定的下一跳地址转发。
使用方法
除了简单地列出所有路由之外,你还可以对路由表进行查询或操作。例如:
了解如何查看和管理路由表对于网络故障排查、配置复杂网络环境至关重要。如果你有关于路由的具体问题或者需要进一步的帮助,请随时提问!
- 网络故障排查:当遇到网络连接问题,如无法访问外网、特定 IP 或网段不通时,可通过查看路由表,确认数据包的转发路径是否正确,是否存在路由缺失、错误配置等情况。
- 网络配置验证:在手动配置路由或更改网络环境后,使用该命令检查路由表是否按预期更新,确保网络配置的正确性。
- 多网卡和复杂网络管理:在拥有多个网络接口和复杂网络拓扑的系统中,借助该命令了解不同网络之间的连接和转发状况,便于进行网络优化和管理。