三种失败结局区别很大
连接目标主机时会出现三种截然不同的结局:目标不可达、连接超时、连接被拒绝。它们的差别不在严重程度,而在包走到了哪里、被谁回应。目标不可达通常由路径上的路由器或本机发出明确通知;连接超时往往意味着包被静默丢弃;连接被拒绝说明包已到达主机、只是端口没人接。分清这三种,才能判断问题属于路由、过滤策略还是服务本身。
基本信息
| 适用对象 | IP 层与 TCP 层的连通性排查 |
|---|---|
| 不可达含义 | 有设备明确回复「送不到」,附带原因 |
| 超时含义 | 没有任何回复,包被丢弃或反方向不通 |
| 拒绝含义 | 对端主机已回应,只是目标端口未监听 |
| 关键提示 | 不可达提示里的来源地址,往往就是问题所在设备 |
区分要点
- 同网段不可达:多为地址解析失败,目标根本没接到包,报文里常带本机地址
- 跨网段不可达:提示来自路径上的路由器,说明它有路由但下一跳不通
- 完全无响应:包被中间设备静默丢弃,或回程路由缺失导致应答回不来
- 立刻被拒绝:主机在线而端口关闭,属于服务层问题,与网络无关
- 仅在部分客户端失败:多为源地址选择、回程路径或来源限制差异
- 间歇性出现:常见于会话老化、链路抖动或负载均衡后端状态不一致
分类判据命令
分类判据命令
ping -c 3 10.0.0.10 # 看提示来源:本机地址还是某台路由器
ping -c 3 10.0.0.10; ip neigh show 10.0.0.10 # 同网段时确认地址解析是否成功
ip route get 10.0.0.10 # 确认本机实际选用的出口与源地址
traceroute -n 10.0.0.10 # 观察在那一跳开始失去回应
nc -vz -w 3 10.0.0.10 443 # 超时还是拒绝,TCP 层的最终结论
ss -lnt | grep ':443' # 对端本机确认端口是否有人在监听三种结局对照
| 结局 | 表现 | 指向 | 下一步 |
|---|---|---|---|
| 目标不可达 | 立即返回带原因的通知 | 本地链路或路径路由 | 按提示来源查地址解析与路由表 |
| 连接超时 | 等待数秒后失败 | 静默丢弃或回程不通 | 查中间放行策略与回程路由 |
| 连接被拒绝 | 立刻失败 | 对端服务未监听 | 查服务状态与监听地址 |
| 连接重置 | 建立后被断开 | 策略或服务主动断开 | 查对端日志与连接追踪状态 |
云环境中安全策略常见做法是丢包而非拒绝:此时从客户端看就是标准的超时,与网络故障完全一样。因此超时类问题要先确认放行规则,再怀疑链路质量。
IPv4 与 IPv6 可能给出不同结论:某一协议栈不可用时,客户端若优先尝试该协议会表现为超时,而另一协议其实是通的。排查时分别指定协议验证一次即可排除。