# TCP: 从 10.0.0.2 端口 443 检测到挑战 ACK 风暴

- **ID:** `networking/tcp-challenge-ack-storm`
- **领域:** networking
- **类别:** protocol_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

TCP 挑战 ACK 风暴发生在主机收到大量窗口外段时，触发重复的挑战 ACK 响应，可能淹没发送方并降低网络性能。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Linux kernel 5.15+ | active | — | — |
| Linux kernel 6.1+ | active | — | — |
| Linux kernel 6.8+ | active | — | — |

## 解决方案

1. ```
   Temporarily increase the challenge ACK limit to reduce storm impact: sysctl -w net.ipv4.tcp_challenge_ack_limit=1000
   ```
2. ```
   Identify and fix the source of out-of-window segments by checking for asymmetric routing or packet reordering using tcpdump: tcpdump -i eth0 'tcp and port 443' -w capture.pcap, then analyze with Wireshark.
   ```
3. ```
   Apply a rate limit on challenge ACKs using iptables to mitigate the storm: iptables -A INPUT -p tcp --dport 443 -m limit --limit 100/s -j ACCEPT
   ```

## 无效尝试

- **** — 完全禁用 TCP 挑战 ACK（通过 sysctl net.ipv4.tcp_challenge_ack_limit = 0）会禁用合法安全机制，可能导致盲窗口内攻击。 (80% 失败率)
- **** — 重启应用程序或服务器无法解决窗口外段的根本原因，如数据包重排序或非对称路由。 (90% 失败率)
- **** — 将挑战 ACK 限制设置过高（例如 net.ipv4.tcp_challenge_ack_limit = 1000000）可能掩盖症状，但无法修复根本原因，并可能延迟网络问题的检测。 (70% 失败率)
