网络层清洗必须对分片报文做重组校验,但应是有边界、可观测、与后端策略一致的轻量重组,而不是无限缓存全量分片。 分片不是稀有流量,清洗设备如果只看首片或直接放行后续分片,等于把完整报文语义交给攻击者,下面按“为什么必要怎么配置入口怎么选场景与成本”拆开讲。
网络层清洗为什么要做分片报文重组校验?
IP分片把一份完整报文拆成多片,首片通常带L4头,后续分片只带偏移和载荷,清洗设备在入口看到的是碎片,不是完整会话,五元组、端口、TCP标志、DNS查询名都可能只出现在首片,后续分片没有端口信息,ACL和状态检测就容易“看不清”。
分片报文如何让清洗设备“看不清”
- 首片带L4头,后续分片不带端口,五元组不完整。
- 分片偏移和MF标志决定报文边界,单看某一片无法判断完整长度。
- 重叠分片存在策略差异,不同操作系统重组结果可能不同。
- 分片泛洪会占用重组队列和内存,队列打满后正常分片也会被丢。
- 分片可以绕过只检查首片的ACL,后续分片把真实载荷拼回来。
业内专家指出,清洗设备与后端服务器重组策略不一致,是分片绕过的常见根源,清洗放行了,服务器可能拒绝;清洗丢弃了,服务器可能接受,入口和主机对“重叠分片谁优先”的判断不一致,攻击者就有夹缝。
不重组校验会漏掉哪些分片攻击
- 重叠分片绕过:后片覆盖首片语义,让检测设备看到A,后端拼出B。
- 首片小分片绕过:首片只带很少L4头,后续分片承载真实内容。
- 分片泛洪:大量不完整分片占满队列,正常业务分片被挤掉。
- 慢速分片:长时间不发末片,拖住重组缓存。
- 分片逃逸ACL:只匹配首片端口的规则,对后续分片失效。
行业共识认为,分片重组不能无限缓存,必须有队列上限和淘汰机制,网络层清洗做重组校验,不是为了把每个分片都深度还原,而是为了在入口还原足够语义,做一致性判断和资源保护。
分片报文重组校验怎么配置:从抓包到清洗策略的实操路径
先确认分片流量与设备行为
在授权环境里先看流量,不要凭感觉开策略。
- 查看本机分片统计:
nstat -az | grep -i frag,或cat /proc/net/snmp | grep -A1 '^Ip:',关注ReasmReqds、ReasmOKs、ReasmFails。 - 抓分片包:
tcpdump -ni eth0 'ip[6:2] & 0x1fff != 0 or (ip[6] & 0x20 != 0)'。 - Wireshark过滤器:
ip.flags.mf == 1 || ip.frag_offset > 0。 - 看清洗设备日志:分片命中数、重组成功数、重组失败数、队列水位、单IP分片Top。
清洗设备上的最小校验规则
| 校验项 | 目的 | 建议 |
|---|---|---|
| 偏移加长度不超过65535 | 防止越界重组 | 超限直接丢弃并计数 |
| MF与DF冲突 | 识别异常标志组合 | 按设备策略丢弃或告警 |
| 首片最小长度 | 防止首片小分片绕过 | 首片必须包含足够L4头 |
| 末片MF为0 | 判断报文完整 | 长时间无末片触发超时 |
| 重叠分片策略 | 与后端保持一致 | 明确首片优先或后片优先 |
| 单IP分片队列上限 | 防分片泛洪 | 按业务设阈值并淘汰 |
| 全局分片内存水位 | 保护清洗设备 | 高水位告警并限速 |
| TTL与协议一致性 | 识别伪造碎片 | 异常碎片降权或丢弃 |
通用配置路径可以按这个顺序走:DDoS防护策略分片报文防护开启重组校验设置单IP分片队列上限设置全局分片队列上限设置秒级分片超时选择重叠处理策略开启分片命中日志配置高水位告警,不同厂商菜单名不同,但参数项基本绕不开这些。
Linux侧可观察和调整内核分片参数,示例只写路径不写固定值:
sysctl net.ipv4.ipfrag_high_threshsysctl net.ipv4.ipfrag_low_threshsysctl net.ipv4.ipfrag_timesysctl net.ipv4.ipfrag_max_dist- IPv6对应
net.ipv6.ip6frag_high_thresh、ip6frag_low_thresh、ip6frag_time
如果清洗设备后面还跑nf_conntrack,也要看nf_conntrack_frag6_high_thresh等分片相关参数,据工信部公开信息,分片处理要关注资源耗尽与策略一致性,不能把重组队列当成无限缓冲。
校验通过后如何回注与观测
回注方式要和后端对齐,清洗设备重组后转发完整报文,后端压力小,但清洗设备内存压力大,清洗设备保留分片转发,后端还要按相同策略重组,两种方式都能用,关键是策略一致、日志可查,观测至少保留:分片命中数、重组失败数、单IP分片速率、队列水位、丢弃原因,否则出了误杀,你很难判断是分片泛洪还是正常大包被误伤。
高防清洗与防火墙分片重组校验对比:入口该选谁?
高防清洗与防火墙分片重组校验对比,重点不在谁“更高级”,而在位置和资源,高防清洗在入口扛量,适合做轻量预检和分片限速,防火墙靠近业务,适合做策略一致性校验,主机协议栈做最终重组,三层各管一段,不能互相替代。
| 位置 | 优势 | 局限 | 适合做的事 |
|---|---|---|---|
| 高防清洗 | 抗流量、可集中限速 | 内存和时延要控制 | 分片预检、队列上限、泛洪清洗 |
| 防火墙 | 策略细、靠近业务 | 大流量下资源紧张 | 重叠策略、端口一致性校验 |
| 主机协议栈 | 最终语义准确 | 被攻击时先受影响 | 最终重组、应用层校验 |
多数情况下,入口清洗做“轻量重组校验加限速”,主机做“最终重组”,比在单点做全量深度重组更稳。
游戏服务器DDoS清洗分片报文场景:为什么不能只看带宽
游戏服务器DDoS清洗分片报文场景很典型,游戏协议小包多,UDP流量杂,攻击者用伪造源IP发分片泛洪,清洗设备如果只看带宽和PPS,分片队列可能先被打满,表现是带宽没爆,玩家却登录失败、匹配超时。
实操上可以这样做:
- 对游戏端口设分片白名单和速率阈值,非游戏端口分片默认降权。
- 开启分片重组校验,限制单IP分片队列和全局队列。
- 对非首片小分片、异常偏移分片直接丢弃并计数。
- 重叠策略与游戏服务器操作系统保持一致,避免清洗放行、服务器拒绝。
- 把分片命中、重组失败、队列水位接入告警,别只看总流量图。
这条场景的关键不是“清洗带宽买多大”,而是分片队列和策略一致性有没有配。
华东地区高防清洗分片重组校验部署成本受什么影响
华东地区高防清洗分片重组校验部署成本,不只看清洗带宽单价,分片队列内存、并发重组能力、会话表规模、日志留存、冗余节点、本地清洗节点时延,都会影响报价,华东本地节点回传时延低,成本通常更高,采购时问清四个参数:单IP分片队列上限、全局分片内存水位、重叠策略是否可配、分片日志字段是否完整,价格差异往往藏在这些参数里,而不是带宽数字上。
分片报文重组校验不是可选项,而是网络层清洗能否看清完整会话的前置条件,把它做成轻量、可观测、策略一致的模块,清洗才既扛得住分片泛洪,也放得过正常业务。
Q&A:网络层清洗与分片报文重组校验的常见疑问
清洗设备重组后转发完整报文,后端还需要校验吗?
需要,清洗设备做入口预检和限速,后端做最终一致性校验,两边边界不同,不能因为入口重组过就关掉主机侧检查。
分片重组会不会成为新的DDoS放大器?
会,所以重组必须有队列上限、秒级超时、淘汰机制和高水位告警,只对命中策略的分片做重组,不做无限全量缓存,据CNCERT/CC公开报告,分片类异常流量仍是DDoS观测中的常见类型之一,资源保护不能省。
只做五元组ACL不做分片重组校验行不行?
不行,后续分片没有L4端口,重叠分片可以覆盖首片语义,ACL只能看到碎片,分片报文只要存在偏移和重叠,清洗设备不重组就无法判断完整报文语义。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/786092.html


