tcpdump 抓包到 Wireshark 分析:定位连接被重置的思路

网络抓包 发布于 2026-08-09 · 分类:网络协议 · 阅读 1,893

有个现象很迷惑:某个服务的 SSH/代理端口,tcpTest-NetConnection 偶尔通,偶尔超时,真正握手却反复被 Connection reset。应用日志什么都没记。这种时候就该抓包了。

常用抓包表达式

# 抓某主机某端口,存成 pcap 供 Wireshark 分析
tcpdump -i any -nn host 1.2.3.4 and port 6691 -w /tmp/cap.pcap

# 只看 TCP 握手/RST,直接在终端读
tcpdump -i any -nn 'tcp[tcpflags] & (tcp-syn|tcp-rst|tcp-fin) != 0'

# 按网段 + 端口
tcpdump -i eth0 -nn net 10.0.0.0/24 and tcp port 443

拉回本地分析

scp -P 6691 root@host:/tmp/cap.pcap .
# Wireshark 打开 cap.pcap,过滤:
#   tcp.flags.reset == 1     看 RST
#   tcp.analysis.retransmission  看重传

这个案例的结论

抓包发现:SYN 能到服务端,但服务端在三次握手刚完成、客户端发第一个数据包后立刻回 RST;而且来源 IP 换一个就正常。结合时间点(短时间内大量新连接),判断是服务端的防爆破/封禁机制(fail2ban 类)把该来源 IP 临时拉黑了,封禁策略对已建立连接发 RST。等封禁期过去即恢复。

经验:端口能 TCP 连通 ≠ 服务可用。握手被 RST 且有明显时间规律,优先怀疑服务端防火墙/封禁策略,而不是程序本身。

— 本文为个人运维笔记,如有疏漏欢迎指正。