You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Modbus TCP从站收到客户端SYN后立即返回RST的原因分析

核心触发原因

结合抓包特征(RST报文窗口大小为0、无应用层数据)、端口状态验证结果,该类“端口正常LISTEN、本机telnet连通、外部SYN立即触发RST”的异常,核心触发原因全部属于系统层面未将外部SYN报文转发至应用进程,常见场景如下:

  • 主机防火墙针对外部网卡的502端口配置了拒绝(Reject)动作。当规则指定为reject-with tcp-reset时,外部SYN到达网卡后会直接被防火墙栈拦截并生成RST响应,不会将报文转发给监听502的Modbus应用;本机执行telnet测试时流量走本地回环链路,不经过外部网卡的防火墙校验,因此能正常建立连接。这类规则和丢包规则的核心区别是:丢包规则会让客户端等待至超时,而Reject规则会立即返回RST,与抓包现象完全匹配。
  • 局域网内存在IP地址冲突。服务端本机访问自身192.168.0.21地址时,流量走本地路由栈,不会触发ARP请求,因此即使该IP被局域网内其他设备占用,本机telnet测试依然可以连通;外部客户端发起连接时会先通过ARP请求解析目标IP的MAC地址,如果被其他冲突设备抢先应答,SYN报文会直接发送到冲突设备上,由于冲突设备没有开启502端口监听,会直接返回RST报文,抓包看到的RST源IP仍为192.168.0.21,与服务端本身的响应无视觉差异。
对应排查方向
  • 校验ARP解析结果:在客户端执行arp -a 192.168.0.21查看解析到的MAC地址,与服务端物理网卡的实际MAC地址(通过ip link show或ipconfig /all查询)做比对,确认是否存在IP冲突。
  • 核验防火墙规则:Linux主机执行iptables -L -n -v、Windows主机在高级入站防火墙规则中检查502端口的匹配动作,临时关闭防火墙做对比测试,确认是否存在针对外部来源的tcp-reset拒绝规则。
  • 在服务端连接外部网络的物理网卡上抓包,过滤host 192.168.0.168 and port 502的报文:如果完全抓不到客户端发送的SYN,说明报文未到达服务端,问题出在网络链路或IP冲突环节;如果能抓到SYN但服务端未返回SYN-ACK,即可确认是本地系统栈的规则拦截导致RST。
  • 修正原排查操作的笔误:原执行的netstat -atn | grip 502为拼写错误,正确命令应为netstat -atn | grep 502,同时确认telnet测试时输入的目标IP无拼写偏差,避免命令或输入错误导致的状态误判。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 14:06:04