在日常使用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 指向了错误的网关。改掉之后,服务立刻恢复正常。
这类问题在运维中很常见,掌握这几个命令能省下不少查文档的时间。