Linux 服务连不上:用 ss 和 curl 分层定位端口问题
先拆成三层
服务连不上,不等于端口没开。依次确认:进程是否在目标地址监听、客户端能否建立 TCP、应用是否正确响应。
一、看监听
在服务主机执行:
ss -lntp
-l 看监听,-n 数字显示,-t 限定 TCP,-p 尝试显示进程。没有目标端口,先核对实际端口、服务状态及启动日志。127.0.0.1:8080 只接受本机连接;0.0.0.0:8080 监听所有 IPv4 地址;绑定具体 IP 则只接收该地址。[::]:8080 是 IPv6 通配地址,能否同时接受 IPv4 取决于系统配置。看不到进程名可能是权限不足,不代表没有进程。
二、测连接与响应
本机和客户端分别执行:
curl -v --connect-timeout 3 --max-time 10 app.example:8080/health
不带协议前缀时 curl 按普通 HTTP 处理。--connect-timeout 限制解析和建立连接阶段,--max-time 限制整个请求。输出显示连接成功只证明 TCP 建立;还要看 HTTP 状态码、响应头与内容。拒绝连接常见于目标可达但端口未接受连接;超时可能是路由丢包、静默过滤或目标无响应。TCP 通但收到 4xx、5xx 时,应查应用路由、健康状态和依赖。
三、核对 DNS 与 TLS
getent ahosts app.example 查看系统解析结果并与预期地址比对;本机探测成功、域名失败时,关注解析地址和客户端实际使用的解析器。HTTPS 可用:
openssl s_client -connect app.example:443 -servername app.example
检查握手、证书名称、有效期、信任链和 SNI。TCP 成功不代表 TLS 正常。
四、只读查过滤
查看 sudo nft list ruleset、sudo iptables -S 或 sudo firewall-cmd --list-all 中的协议、端口、来源地址和规则顺序;云上还要核对安全组入方向、网络 ACL 与路由。结合测试客户端和目标地址逐项比对。排查只读配置和日志,不要关闭防火墙,也不要临时开放所有来源。
先用 ss 回答“在哪监听”,再用 curl 确认“连到没有、返回什么”,最后按证据检查 DNS、TLS、路径和过滤规则。记录来源和目标端口,便于交接。
- 点赞
- 收藏
- 关注作者
评论(0)