Linux下查看路由表项的常用命令

在日常使用Linux系统时,网络配置和排查问题少不了要查看路由信息。比如你在家配了个树莓派做服务器,突然发现它能连内网却上不了外网,这时候查路由表就能帮你快速定位是不是默认网关没设对。

最常用的查看命令:route

老一点的系统里,route 命令用得比较多。直接输入下面这行:

route -n

-n 是为了避免域名解析,让结果显示IP而不是主机名,速度更快也更清晰。你会看到类似这样的输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

其中 UG 表示这条是启用(U)且是网关路由(G),0.0.0.0 目标代表默认路由。

推荐的新方式:ip route

现在大多数新系统都推荐用 ip 命令替代老工具。查看路由只需一行:

ip route show

或者简写:

ip r

输出会更简洁,比如:

default via 192.168.1.1 dev eth0 proto static metric 100 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100

这里的 default via 就是默认网关,后面跟着的是出口网卡和IP范围。

另一个选择:netstat

虽然逐渐被弃用,但有些系统上还能用 netstat 查看路由:

netstat -rn

参数 -r 表示显示路由表,-n 同样是不解析主机名。输出格式和 route -n 差不多,习惯用法类似的可以继续沿用。

实际应用场景举例

假设你在公司搭了个双网卡服务器,一个走内网,一个连外网。突然发现外部用户访问不了你的服务,登录一看,默认路由指向了内网网关。用 ip route show 一查,果然 default via 指向了错误的网关。改掉之后,服务立刻恢复正常。

这类问题在运维中很常见,掌握这几个命令能省下不少查文档的时间。