网络故障排查三板斧:路由追踪、端口检查,快速定位网络问题
目录
前言:
一、路由表探查:ip route - 网络的"导航地图"
什么是路由表?
查看IPv4路由表
查看IPv6路由表
二、路径追踪:tracepath - 数据的"旅行日记"
为什么需要追踪路径?
基本用法
IPv6路径追踪
三、端口检查:ss - 服务的"门卫登记表"
什么是端口?
查看端口状态
连接状态(State)
地址和端口
常用参数说明
四、实战故障排查流程
场景:网站访问不了
场景:SSH连接不上
五、命令对比总结
六、实用小贴士
总结
前言:
当网络不通时,别急着重启,先问问这三个命令
在网络管理和故障排查中,我们经常遇到各种连接问题。今天介绍三个强大的命令,帮你快速定位网络问题:ip route
、tracepath
和ss
。
一、路由表探查:ip route - 网络的"导航地图"
什么是路由表?
想象一下,路由表就是你设备的导航地图,它告诉数据包:
-
去某个地方该走哪条路
-
不知道去哪的时候该问谁
查看IPv4路由表
[user@host ~]$ ip route
default via 192.0.2.254 dev ens3 proto static metric 1024
192.0.2.0/24 dev ens3 proto kernel scope link src 192.0.2.2
10.0.0.0/8 dev ens4 proto kernel scope link src 10.0.0.11
解读这个"地图":
-
第一条:默认路由
default via 192.0.2.254 dev ens3
-
含义:所有不知道往哪送的数据包,都发给
192.0.2.254
这个网关 -
路径:通过
ens3
这个网卡发送 -
好比:不知道地址的信件都送到小区门卫那
-
神魔是网卡??网卡是什莫???-CSDN博客
-
神魔是网关??网络基础扫盲:什么是网关和路由?小白也能秒懂!-CSDN博客
-
-
第二条:直连路由
192.0.2.0/24 dev ens3
-
含义:访问
192.0.2.0-192.0.2.255
这个网段,直接通过ens3
发送 -
好比:给同小区邻居送信,直接投递不用经过门卫
-
-
第三条:另一个直连路由
10.0.0.0/8 dev ens4
-
含义:访问
10.x.x.x
这个大网段,通过ens4
网卡直接发送 -
说明这台服务器有两个网卡,连接不同网络
-
查看IPv6路由表
[user@host ~]$ ip -6 route
2001:db8:0:1::/64 dev ens3 proto kernel metric 256
fe80::/64 dev ens3 proto kernel metric 256
default via 2001:db8:0:1::ffff dev ens3 proto static metric 1024
IPv6路由解读:
-
2001:db8:0:1::/64
:IPv6本地网络路由 -
fe80::/64
:IPv6本地链路地址路由 -
default via 2001:db8:0:1::ffff
:IPv6默认网关
那些unreachable
条目是系统预设的无效路由,防止数据包发往这些保留地址段。
二、路径追踪:tracepath - 数据的"旅行日记"
为什么需要追踪路径?
有时候网络不通,不是目标的问题,而是中间某个环节出了问题。tracepath
就像给数据包装了个GPS,记录它经过的每个站点。
基本用法
[user@host ~]$ tracepath access.redhat.com1: 192.168.1.1 0.312ms 2: 100.64.0.1 5.128ms 3: 10.10.10.1 10.245ms 4: 71-32-28-145.rcmt.qwest.net 48.853ms asymm 55: dcp-brdr-04.inet.qwest.net 109.732ms asymm 76: 206.111.0.153.ptr.us.xo.net 96.245ms asymm 7
...(中间省略若干跳)...
10: bu-ether13.atlngamq46w-bcr09.tbone.rr.com 107.286ms asymm 12
看懂输出结果:
-
第1跳:
192.168.1.1
- 你的家庭路由器(网关) -
第2跳:
100.64.0.1
- 运营商的第一级设备 -
第3跳:
10.10.10.1
- 运营商的内部网络 -
后续跳数:数据包在运营商骨干网中传输
关键信息:
-
时间值:数据包到达该节点并返回的耗时(越小越好)
-
asymm:非对称路由,说明去程和回程走了不同路径(正常现象)
-
任何一跳超时:说明问题出现在那一跳的设备上
IPv6路径追踪
[user@host ~]$ tracepath6 2001:db8:0:2::4511: 2001:db8:0:1::ba 0.214ms
用法与IPv4完全相同,只是目标地址换成了IPv6格式。
三、端口检查:ss - 服务的"门卫登记表"
什么是端口?
如果把IP地址比作公司的地址,那么端口就是公司里各个部门的分机号:
-
80
端口:网站服务(HTTP) -
22
端口:远程登录(SSH) -
25
端口:邮件发送(SMTP)
查看端口状态
[user@host ~]$ ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
LISTEN 0 128 *:36889 *:*
ESTAB 0 0 172.25.250.10:ssh 172.25.254.254:59392
LISTEN 0 128 ::sunrpc :::*
LISTEN 0 128 ::ssh :::*
LISTEN 0 100 ::1:smtp :::*
LISTEN 0 128 ::34946 :::*
解读这个"登记表":
连接状态(State)
-
LISTEN:服务正在监听等待连接(像办公室有人值班)
-
ESTAB:已建立的连接(正在通话中)
-
CLOSE_WAIT:连接正在关闭
-
TIME_WAIT:连接已关闭,等待清理
地址和端口
-
*:ssh
:在所有IP地址上监听22端口(SSH服务) -
127.0.0.1:smtp
:只在本地回环地址监听25端口(本地邮件服务) -
172.25.250.10:ssh
:已建立的SSH连接,本地端口22,对方IP172.25.254.254
,对方端口59392
-
:::ssh
:IPv6的SSH监听
常用参数说明
参数 | 作用 | 示例 |
---|---|---|
-t | 显示TCP连接 | ss -t |
-u | 显示UDP连接 | ss -u |
-l | 只显示监听中的端口 | ss -tl |
-a | 显示所有连接 | ss -ta |
-p | 显示使用端口的进程 | ss -tp |
-n | 显示数字格式(不解析名称) | ss -tn |
四、实战故障排查流程
场景:网站访问不了
第一步:检查基本连通性
ping www.baidu.com
如果不通,进行下一步。
第二步:检查路由表
ip route
确认有默认路由,网关地址正确。
第三步:追踪路径
tracepath www.baidu.com
看在哪一跳出现问题。
第四步:检查本地服务
ss -tlnp | grep :80
查看80端口是否被占用,网站服务是否正常监听。
场景:SSH连接不上
第一步:检查SSH服务状态
确认22端口在监听状态。
第二步:检查防火墙规则
# 如果有firewalld
firewall-cmd --list-all# 如果有iptables
iptables -L
五、命令对比总结
命令 | 作用 | 好比 |
---|---|---|
ip route | 查看路由表 | 查看导航地图 |
tracepath | 追踪网络路径 | 给数据包装GPS |
ss | 查看端口状态 | 查看门卫登记表 |
六、实用小贴士
-
路由问题:先用
ip route
确认有默认网关 -
中间节点问题:用
tracepath
找到具体哪一跳故障 -
服务本身问题:用
ss
确认服务端口在正常监听 -
权限问题:有些
ss
参数需要root权限 -
IPv6环境:记得使用
-6
参数或IPv6版本命令
总结
掌握这三个命令,你就能应对大部分网络连接问题:
-
迷路了? →
ip route
查看地图 -
卡在半路了? →
tracepath
追踪路线 -
服务没开门? →
ss
检查门卫