在查看我的 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 可使问题消失。