为什么一些带有 RST 标志的 TCP 数据包被归类为新传入连接?

为什么一些带有 RST 标志的 TCP 数据包被归类为新传入连接?

在查看我的 iptables 日志时,我不断观察到来自我 ISP 网络中的几个 IP 地址的定期传入连接,其中设置了 RESET 标志。这是其中一个连接的示例 tcpdump:

22:18:13.026881 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [S]  seq 3805987202     win 29200  options [mss 1460 sackOK TS val 3031189 ecr 0 nop wscale 7]  length 0  
22:18:13.032076 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [S.]  seq 738249760  ack 3805987203  win 29200  options [mss 1460 nop nop sackOK nop wscale 6]  length 0     
22:18:13.032151 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [.]   738249761  ack 1  win 229  length 0 
22:18:13.032415 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [P.]  seq 3805987203:3805987396  ack 1  win 229  length 193 
22:18:13.036553 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [.]   3805987396  ack 194  win 473  length 0 
22:18:13.042920 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [.]  seq 738249761:738251221  ack 194  win 473  length 1460 
22:18:13.042979 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [.]   738251221  ack 1461  win 251  length 0 
22:18:13.043133 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [P.]  seq 738251221:738251809  ack 194  win 473  length 588 
....
22:20:10.652745 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [.]   738254876  ack 5116  win 365  length 0 
22:21:09.649107 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [P.]  seq 3805988348:3805988389  ack 5116  win 365  length 41 
22:21:09.657454 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [P.]  seq 738254876:738254921  ack 1187  win 509  length 45 
22:21:09.657498 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [.]   738254921  ack 5161  win 365  length 0 
22:21:09.657612 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [P.]  seq 3805988389:3805988434  ack 5161  win 365  length 45 
22:21:09.657748 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [FP.]  seq 3805988434:3805988465  ack 5161  win 365  length 31 
22:21:09.660431 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [F.]  seq 738254921  ack 1187  win 509  length 0 
22:21:09.660467 IP 192.168.1.2.43948 > XX.XX.X.103.443: Flags [.]   738254922  ack 5162  win 365  length 0 
22:21:09.667156 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [R]  seq 738254921     win 0  length 0 
22:21:09.667923 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [R]  seq 738254921     win 0  length 0 
22:21:09.667971 IP XX.XX.X.103.443 > 192.168.1.2.43948: Flags [R]  seq 738254922     win 0  length 0 

tcp 序列号是连续的。它不应该使用下面 iptables 中的规则被视为已建立连接的一部分吗:

-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

答案1

TCP 重置是一种无需确认即可终止 TCP 连接的方法。通常用于出现问题并需要快速重新启动的情况(在 RST 之后)。

如果在您的 TCP 连接中,您收到来自相同协议、源 IP、源端口、目标 IP、目标端口(也称为五元组)的 RST,则您会将该数据包归类为在已建立的连接“内”接收。

但是,如果您是发送 RST 的实体,您会在发送 RST 后立即清除您的连接信息。如果此时另一端决定发送 TCP RST,则在收到它时,您将不知道该特定的“五元组”(因为您刚刚清除了该知识),因此您会将刚刚收到的数据包视为“新”连接 - 然后会立即再次从您的连接表中清除该连接,因为这是对 RST 数据包的响应。

简而言之,回答你的问题。如果你的机器事先不知道 RST 是在哪个连接(又称五元组)中发送的,它会将 RST 数据包标记为新连接。

答案2

看起来服务器正在强制关闭连接。

以下是有关 TCP RST 的一些信息:TCP 使用 TCP 标头中的 RST(重置)位来重置 TCP 连接。例如,重置是响应不存在的连接请求而适当发送的。重置的 TCP 接收方将中止 TCP 连接并通知应用程序 [RFC793、RFC1122、Ste94]。

此线程似乎也相关且中肯:原因是什么以及如何避免 [FIN, ACK] , [RST] 和 [RST, ACK]

答案3

当我的网络中某个段的 MTU 不匹配时,我观察到一些客户端会出现此行为 - 正常 MTU 为 1500,但该段的路由器的 MTU 为 1300,最终导致客户端数据包超时,PUSH 未到达目的地,另一端开始 RST。修复该段的 MTU 可使问题消失。

相关内容