用 ss 与 tcpdump 定位 Linux 服务端口监听异常

举报
yd_284094306 发表于 2026/10/29 10:18:15 2026/10/29
【摘要】 服务明明已经启动,浏览器却连不上,先别急着重启。多数端口问题都可以先分清四件事:进程有没有监听、监听在哪个地址、本机能不能连通、外部的包有没有到达。本文就用 ss 与 tcpdump 按这个顺序定位,避免在配置里盲目改端口或反复重启。

服务明明已经启动,浏览器却连不上,先别急着重启。多数端口问题都可以先分清四件事:进程有没有监听、监听在哪个地址、本机能不能连通、外部的包有没有到达。本文就用 ss 与 tcpdump 按这个顺序定位,避免在配置里盲目改端口或反复重启。

第一步:先看监听状态

ss 是查看套接字的首选工具,-tlnp 分别表示 TCP、只看监听态、显示数字地址端口、显示进程信息:

ss -tlnp
ss -tlnp | grep ':8080'

重点看监听地址那一列,结果通常有三种含义:

  • 0.0.0.0:8080:监听所有 IPv4 地址,外部一般可以到达,问题多半在防火墙或上游。
  • 127.0.0.1:8080:只监听回环地址,本机可以访问,但局域网和其他机器连不上,这是最常见的“本地能用、别人连不上”的原因。
  • 根本没有这一行:进程没有真正监听成功,要先看服务日志和启动参数,而不是先改防火墙。

如果看到 *:8080 或 [::]:8080,也要注意 IPv4 与 IPv6 的区别。有的服务只监听 IPv6 通配地址,是否接受 IPv4 连接取决于系统与服务的双栈配置,不能只凭端口号下结论。

第二步:本机先连通,再谈外部

在监听确认无误后,先用本机回环地址验证服务本身:

curl -v http://127.0.0.1:8080/
ss -tnp | grep ':8080'

如果本机回环都失败,问题在服务本身、监听地址或本地策略;如果本机成功、外部失败,再把排查范围收窄到防火墙、安全组、路由和反向代理。

同时看一眼已建立连接的状态也很有用。ESTABLISHED 很多但响应慢,往往是后端处理慢,而不是端口没开;SYN-SENT 徘徊不前,则说明对端没有回包或回包被丢弃。

第三步:用 tcpdump 看包到底到没到

这是区分“没到达”和“到达但被拒绝”的关键一步。抓包需要相应权限,生产环境要控制抓包数量和时间,避免抓到敏感报文内容:

tcpdump -i any -nn -c 50 port 8080
tcpdump -i eth0 -nn 'tcp port 8080 and tcp[tcpflags] & tcp-syn != 0'

常见现象与判断如下:

  • 能看到客户端的 SYN,但没有 SYN-ACK:服务可能没有监听该地址,或者回包路径、防火墙把包丢了。
  • 看到 RST:对端明确拒绝连接,可能是端口未监听、服务刚重启,或者中间设备直接复位了连接。
  • 外部接口上完全看不到包:问题在客户端、安全组、路由或上游代理之前,继续在本机改配置没有意义。

如果只想确认到达情况,可以只抓 SYN,不必长时间抓完整流量。需要留档时用 -w 写到文件,再离线分析,不要在终端里长时间滚动输出。

第四步:按顺序排除防火墙与代理

确认包到达后再检查本地防火墙规则,例如:

nft list ruleset | grep 8080
# 或在仍使用 iptables 的系统上
# iptables -L -n | grep 8080

还要注意云服务器安全组、容器端口映射和反向代理这三层。容器里监听正常,不代表宿主机端口已经映射;反向代理返回 502,也不等于后端端口没开。每一层都要用上一层的实际观测结果说话。

一张排查清单

现象 优先检查
ss 里没有监听行 服务日志、启动参数、端口占用
只监听 127.0.0.1 服务绑定地址配置
本机通、外部不通 防火墙、安全组、路由、代理
有 SYN 无 SYN-ACK 监听地址、回包路径、中间设备
看到 RST 端口状态、服务重启、中间复位
外部接口无包 客户端、上游网络、安全组

小结

定位端口问题时,先用 ss 确认监听事实,再用本机连通性缩小范围,最后用 tcpdump 确认包的到达情况。按“监听、回环、本机连通、外部到达”这个顺序走一遍,很多看似玄学的问题都会变成一个可以复现、可以验证的具体环节。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。