标准答案
- 先确认客户端解析到的地址、路由和目标端口,再从服务端确认监听协议、地址和进程。
- 超时更像丢包、路由或防火墙静默丢弃,connection refused 通常说明目标地址可达但没有接受该连接的监听者或连接被主动拒绝。
- 即使端口监听正常,安全组、主机防火墙、代理、TLS 握手和应用鉴权仍可能导致请求失败。
- 排查要在客户端、服务端和中间网络分别取证,不能只在服务端执行一次 ss。
题目解析
防火墙可能在主机、云安全组、网络设备或容器网络层工作;应用是否监听、是否 accept、TLS 是否握手和 HTTP 是否返回又是不同层。telnet 或 nc 成功最多证明某个地址和端口完成了 TCP 建连,不能证明服务已经正确处理请求。
排查应从客户端到服务端逐跳确认:监听地址、路由、规则命中、连接跟踪、TLS 证书、代理和应用日志。timeout 可能来自丢包、策略静默丢弃、SYN 队列、TLS、下游等待或连接池,不能一律改应用超时。
常见误区
- 误区:用 telnet 成功证明接口可用。改正:继续验证 TLS、HTTP、认证、业务响应和服务端日志。
- 误区:把所有 timeout 都归因于应用慢。改正:按 TCP、TLS、代理、连接池和下游阶段定位等待位置。