方法 / L4 / SYN
L4 · NetworkVolumetricTCPSpoofableState Exhaustion
SYN 压力测试
用永不完成的、打开半连接的 TCP SYN 数据包淹没目标,验证你的协议栈和防护如何在连接表耗尽下存活。
工作原理
每个 SYN 数据包都要求服务器分配一个半开连接并等待一个永不到来的握手,因此足够高的 SYN 速率会填满积压队列,使合法客户端无槽位可用。作为经典的四层流量型基本手段,它施压的是连接状态表而非仅仅带宽。它验证 SYN cookie、边缘 SYN 代理和积压队列调优能否在半开请求的洪水下让服务保持响应。
参数
pps600k pps驱向目标端口的 SYN 数据包速率
sourceswide source spread按地区将 SYN 分散到许多源地址
dst portany listening port瞄准单个打开的 TCP 服务
duration10-600 s测试窗口的时长
从 CLI 运行它
retro-cli
$ retro run syn --target 203.0.113.45 --port 443 --duration 120
SYN 常见问题
SYN 洪水实际耗尽什么?+
它针对的是连接状态表,而不仅是带宽。每个 SYN 都会预留一个半开槽位,直到一个永不到来的握手超时为止,因此持续的速率会填满积压队列并阻止新的合法连接。
SYN cookie 能完全阻止 SYN 洪水吗?+
SYN cookie 通过将积压队列的使用推迟到握手完成来消除状态分配问题,但足够大的洪水仍可能饱和链路或 CPU。本方法向你展示在你自己的协议栈上那个上限位于何处。
这与 SYN-OPT 有何不同?+
普通 SYN 使用最少的数据包,幼稚的过滤器仅凭形态就能标记。SYN-OPT 添加了 MSS 和 SACK 等真实 TCP 选项,使数据包看起来像真实客户端,从而转为测试选项感知的缓解。