业务上线第三天,凌晨两点半,监控大屏的流量曲线突然从 200Mbps 直接飙到 400Gbps。机房交换机告警、运营商封堵通知、客户投诉电话几乎同时砸过来。那一夜我盯着高防 IP 的拦截日志看了整整六个小时,也第一次真正体会到大流量 DDoS 攻击下,一套配置合理的清洗策略和一套随手点开就用的默认策略,差距能有多大。
后来陆续接手了好几个被攻击的项目,从游戏开服到电商大促,从金融接口到直播推流,高防 IP 我前前后后调了两年多,踩过的坑比吃过的盐还多。这篇文章把我实际用下来的高防 IP 拦截策略、参数调优思路和排障经验一次性讲透。不管你是刚买了高防 IP 不知道从哪下手的新手,还是已经被打了几轮想优化现有防护策略的老手,这篇文章应该都能让你少走不少弯路。
1. 高防 IP 为什么能抗住大流量:先搞懂清洗链路
很多刚接触高防 IP 的人,第一反应就是"这不就是个更宽的带宽吗"。实际上完全不是一回事。高防 IP 能抗住大流量攻击,靠的不是单一节点的带宽堆砌,而是一整套流量调度加清洗的链路。理解这条链路,是你后面配置一切策略的基础。
1.1 流量先到清洗中心,而不是直接到源站
高防 IP 最核心的思路,是把你的业务 IP"藏"起来,对外只暴露一个高防节点。正常情况下,用户访问你的域名时,DNS 解析到的不是你的源站 IP,而是高防 IP。所有流量先进入高防机房的清洗中心,清洗中心实时检测每个流量的行为特征,把正常请求放行回源站,把攻击流量直接丢弃或引流到黑洞。
这样设计的好处非常直观:攻击者打的是高防 IP,而高防节点背后是整套分布式集群和运营商级带宽。单机扛不住的流量,被分散到多台清洗设备上并行处理。以我实测的经验来看,一台清洗设备处理几 Gbps 的 SYN Flood 没什么压力,整个高防集群则是按 T 级规划的。这就是为什么几百 Gbps 的攻击打过来,源站依然稳如泰山的原因。
回源的方式有两种常见模式——IP 转发回源和域名回源。IP 转发回源就是你直接把源站 IP 填到高防控制台,清洗后的流量通过内网专线转发给你;域名回源则是高防节点把请求转发到你的源站域名上。前者延迟更低,后者更灵活,具体怎么选后面详细讲。
1.2 清洗中心到底在拦截什么:四层到七层的攻击画像
看过清洗日志的朋友应该会注意到,攻击类型那一栏会有 SYN Flood、UDP Flood、ACK Flood、HTTP Flood 这些分类。这些分类对应着 TCP/IP 协议栈的不同层级。
四层攻击主要针对传输层。SYN Flood 是最经典的,攻击者发送大量半开连接请求,让服务器一直维持 TCP 半连接状态,最终耗尽连接表。UDP Flood 则是用大流量数据包直接塞满带宽。四层攻击的特点是流量大、来源 IP 分散、伪造特征明显,清洗设备靠包速率、连接速率、源端口分布这些指标就能高精度识别。
七层攻击(也就是 CC 攻击)针对应用层,模拟真实用户的 HTTP 请求,单个请求量不大,但总量一多,后端 Web 服务器的 CPU、数据库连接就会被拖垮。七层攻击最恶心的地方在于特征和正常流量极其相似,传统的大流量清洗策略对 CC 攻击往往束手无策,需要有独立的 CC 防护策略来处理。
我自己的经验是:四层攻击靠清洗集群硬扛加特征过滤,七层攻击靠行为分析和限速策略配合。两类防护策略必须分开配置,混在一起调十有八九会出问题。
1.3 黑洞:防御峰值之外的保命机制
每个高防 IP 都有防御峰值,比如 300Gbps、500Gbps。这里有个很多人容易忽略的细节:如果你买的防御峰值是 300G,而攻击流量到了 350G,高防节点不会无限制地继续帮你扛,而是会触发黑洞——直接把你的高防 IP 封禁,所有流量(包括正常流量)全部丢弃,一般持续 30 分钟到 2 小时不等。
黑洞机制的逻辑你想通了其实很好理解:如果让超出峰值的流量继续进入清洗链路,清洗设备旁路分析、集群转发本身就会被打瘫,更糟糕的是可能拖累整个机房的其它用户。所以黑洞本质上是隔离故障。
但也正因为如此,我建议所有接入高防的业务,控制台一定要开启黑洞告警,同时把紧急扩容流程提前定好。真到了被黑洞的那一刻,你要做的不是去知乎上搜"IP 被黑洞怎么办",而是第一时间提工单加防御峰值或者切备用的高防 IP。
2. 接入高防 IP 的关键配置与拦截策略
明确了工作原理,接下来是实际操作。高防 IP 的接入配置看起来简单——填 IP、填域名、点保存——但这里的每一步都藏着细节。配置不对,轻则回源失败导致业务中断,重则把源站 IP 暴露给攻击者,让高防成了摆设。
2.1 接入方式选择:域名接入还是 IP 转发接入
这是高防 IP 接入时做的第一个选择,我见过太多人在这一步随意点了"推荐配置",后面才叫苦不迭。
IP 转发接入适合端口不多、回源地址固定的场景,比如游戏服务器、API 接口。你只需要在控制台添加源站 IP 和端口映射规则,清洗后的流量就会被转发到源站 IP 上。优点是配置简单、延迟低、性能损耗小;缺点是你得确保源站 IP 端口全部正确填好,一旦有遗漏,对应端口的服务就废了。
域名接入适合网站业务,尤其是对接了 CDN 的情况。配置时要填源站域名,高防节点每次收到请求后会再解析一次源站域名去获取真实 IP。这种方式更灵活,源站 IP 变了不用改高防配置,只要改域名解析就行。缺点是中间多了一层 DNS 解析,延迟略高,同时要求源站域名本身不能被攻击者解析出来。
这里有一个铁律:无论选哪种接入方式,源站 IP 永远不要暴露在外网解析记录里。如果攻击者通过某些渠道拿到了你的源站 IP,完全可以绕过高防直接打源站。所以接入高防之后,第一件事是把源站 IP 的 80/443 端口对公网关闭,只对高防回源段开放;一些高防服务商还支持按回源 IP 段设置白名单,这个功能建议务必开启。
2.2 四层转发参数:端口映射与回源配置的细节
配置四层转发时,控制台会让你填转发端口和源站端口。直觉上这就是把公网端口映射到源站端口,比如公网 80 映射源站 8080。但有几个参数容易被忽略:
- 会话保持:TCP 长连接场景(如 WebSocket、游戏长连接)务必开启,否则每个新请求都重新握手,高防节点和后端服务器的连接数都会暴涨。
- 连接超时:默认的 60 秒空闲超时在大多数场景是合理的,但如果你跑的是文件传输类业务,建议调大到 300 秒以上,避免大文件传输中途连接被掐断。
- 报文转发模式:有些高防支持"按 MAC 转发"和"按 IP 转发"两种模式,前者更适合同机房内回源,后者适用跨地域回源。选错了直接回源失败。
这些参数在业务侧往往都看不出明显异常——用户只是觉得"有时候会卡一下"——但通过抓包你会发现大量 TCP 重传和连接重置。遇到这类问题,先检查高防控制台的转发配置,别一上来就怀疑自己代码写错了。
2.3 源站保护:白名单、端口封禁与安全组联动
这节单独拿出来讲,是因为源站泄露导致的高防失效,是我实际处理中占比最高的故障类型。
我处理过一个电商客户,高防配置得很好,结果攻击者不知道怎么拿到了源站 IP,直接用 800Gbps 流量把源站所在的物理机房的交换机打懵了。后来去查原因,发现源站服务器安全组把 22 端口(SSH)对全网开放了,攻击者扫描端口的时候顺手就拿到了真实 IP。
正确的做法是:源站防火墙或安全组规则,只允许来自高防回源 IP 段的流量访问源站的 80/443(或其它业务端口),其它端口全部 DROP。SSH 管理端口要么只对办公网 IP 开放,要么走堡垒机。这个操作在 AWS、阿里云、腾讯云的安全组里都能实现,一般 10 分钟就能配上。
另外,很多高防服务商支持"回源 IP 白名单"功能,勾选后源站只认高防回源的流量。如果你用的是云服务器,还可以把源站安全组策略和高防的回源 IP 段同步起来,定时脚本跑一下,自动化程度更高。
3. 实战调优:让高防 IP 的拦截策略更贴合你的业务
接入配好只是第一步,高防 IP 默认的防护策略是一个"平均水准"的方案,适合大多数官网类业务,但绝对不适合所有业务。真正让高防 IP 发挥价值,靠的是后续的调优。这里我把两年多调下来最关键的几个参数和思路整理出来。
3.1 基础防护阈值:别直接把阈值拉到最高
高防控制台里最常见的设置项就是四层防护阈值。很多人有个误区——把阈值直接拉到防护峰值的上限,觉得这样最安全。我一开始也这么干过,结果发现攻击流量不大的时候,源站依然被打得嗷嗷叫。
原因是这样:DDoS 清洗设备有"检测阈值"和"防护动作"两个指标。如果你把检测阈值调得极高,比如 SYN 包速率 50 万 pps,那么攻击流量只要低于这个值,清洗设备就会判定为"正常流量"直接放行到源站。四层攻击往往不是一上来就是 200G,而是逐步拉高,如果检测阈值设太高,早期阶段的小流量攻击就会漏过去。
正确做法是:参考你业务平时的带宽和连接数基线,把检测阈值设在基线值的 2-3 倍左右,宁可误判几次进行清洗,也别把攻击流量放行到源站。比如你的正常业务峰值带宽是 100Mbps,阈值可以设在 300Mbps 左右;正常新建连接速率是每秒 8000 个,阈值可以设在 20000 个/秒。这样攻击流量一冒头,立刻就会触发清洗,而不是等流量大到打穿源站才去处理。
3.2 CC 防护参数:QPS 阈值和频率限制怎么配
七层 CC 攻击是调优的重头戏。因为 CC 攻击的流量特征和正常请求几乎一样,四层清洗手段完全无效。CC 防护的核心是"行为检测 + 限速 + 验证码挑战"。
QPS 阈值是我第一个建议调整的参数。默认的 QPS 阈值一般比较宽松,比如每秒 5000 的请求量才会触发防护。如果你的业务是资讯类网站,正常高峰期 QPS 只有 300,那阈值完全可以压到 500 左右,一旦 QPS 超过这个值,清洗中心立刻对新增请求做来源 IP 频率限制和指纹校验。
这里有另一个常见坑:QPS 阈值不能拍脑袋设太低。我有一次给客户配了一个论坛,正常用户在线多的时候 QPS 能瞬间冲到 800,我按"业务平时 QPS 200"的标准设了 300,结果触发误判,大量正常回帖直接被拦,用户体验瞬间崩了。所以调 CC 参数的之前,先拉过去 7 天的 QPS 曲线,看日活高峰、活动大促时的峰值是多少,在这个基础上加 30%-50% 的安全余量。
频率限制也是 CC 防护的利器。按照单一 IP 每分钟请求数、单一 IP 每秒新建连接数、单 IP 请求路径分布等维度去限制。举例来说,一个普通用户正常浏览网页,单 IP 请求速率一般在 5-20 次/分钟;如果一个 IP 以每秒 50 次的频率请求同一个 URL,那不用想,一定是脚本在刷。这类规则可以按不同业务类型去配置,电商的下单接口、登录接口频率限制要比详情页严格得多。
3.3 防护模式与自定义规则:从拦截到放行的精细控制
高防 IP 一般会提供几种防护模式,比如"宽松""正常""严格""紧急"。这几种模式的差异主要体现在清洗的灵敏度上。
- 宽松:只在攻击特征非常明显时才干预,适合业务高峰期不想误伤用户的情况。
- 正常:默认模式,适合日常。对 SYN Flood、UDP Flood 攻击有较强的清洗能力。
- 严格:对可疑流量进行更激进的限制,适合正在遭受攻击时切换。此时一些奇怪客户端(如老旧浏览器、代理访问)可能会被误杀。
- 紧急:只要有一点可疑就直接封禁,通常只在攻击非常大且严重影响业务时才用。这个模式下正常用户被误拦的概率很高,不能长期开着。
我实际操作中比较推荐的做法是:日常用"正常"模式,业务高峰期切成"宽松",从监控告警上看到攻击流量突增时,手动切成"严格"。通过 API 或控制台提前把切换流程脚本化,一个人就能在 30 秒内完成防护模式的切换。
另外,很多高防支持自定义七层防护规则,比如按 URL、按 User-Agent、按 Header 特征来设置拦截或限速。我在博客系统上就配了一条规则:User-Agent 为空或者包含 libcurl、python-requests 的请求一律返回 403。这套规则拦截掉了一堆初级脚本攻击,而我正常读者用的浏览器 UA 完全不受影响。这类规则建议在遭遇过攻击之后总结特征再配置,如果没有攻击特征可以参考,不要乱拦截,容易误伤。
3.4 黑白名单:最容易被忽略但效果立竿见影的功能
黑名单和白名单,听起来是老生常谈,但高防 IP 的这个功能在实战中往往是最快见效的。
白名单适合那些确定可信的来源。比如你公司办公网的出口 IP、合作方回调接口的服务器 IP。把这些 IP 加进白名单,流量不经过清洗直接回源,延迟直接降低几个毫秒,清洗资源也省出来了。但白名单要限制数量,而且只能加固定 IP,对方 IP 变了要记得及时同步。
黑名单主要封禁已知的恶意 IP 段。攻击流量里那些 IP 如果已经确认是扫描器或肉鸡,直接拉黑 24 小时,减少后续的无效检测。有个技巧:高防控制台的攻击日志里一般会把攻击来源 IP Top 50 列出来,直接批量拉黑,效果非常明显。但不建议没看日志就随便去网上搬运一些"威胁情报 IP 黑名单"导入,因为很多 IP 段包含大量正常用户,误杀概率很高。
4. 常见问题与排障实录:那些年我踩过的坑
配置再多,实战中总会冒出各种意想不到的情况。这节把我实际处理过的典型问题整理出来,附带排查思路和解决方案,你可以直接对照参考。
4.1 IP 被黑洞了:如何快速恢复业务
黑洞是运营高防 IP 最怕遇到的事。一旦触发,整个 IP 被运营商隔离,流量进不来也出不去,业务完全断掉。遇到黑洞不要慌,按顺序操作:
- 确认攻击是否已经停止。高防控制台一般有攻击状态,如果攻击流量明显回落,联系服务商申请解封黑洞。
- 如果攻击还在持续,解封了也会再次被打进黑洞。正确的做法是立刻提工单升级防御峰值,或者切换到备用的高防 IP。
- 平时就要准备好备用高防 IP。DNS 解析在正常情况下指向主高防 IP,一旦触发黑洞,在 DNS 服务商侧把解析切到备用 IP,等待流量清洁后再切回。
这里需要特别提醒:不要频繁解封黑洞。被黑洞两次以上的 IP,部分服务商可能会判定你为高风险的攻击目标,限制你的解封次数,甚至要求签署额外承诺。所以与其反复解封,不如提前把防御峰值买够,或者让安全团队跟攻击特征做对抗。
4.2 正常用户被误杀:怎么平衡防护与体验
清洗的灵敏度调高之后,误杀几乎不可避免。做电商大促那阵子我就遇到过:防护策略切到"严格"后,部分用户反馈下单页面打不开,后台一看全是高防节点返回的 403。查日志发现这些用户都是走了某个 CDN 的出口 IP,大量用户共用同一个 CDN IP,频率限制把这个出口 IP 整体限制了。
碰到误杀的问题,排查思路是这样的:
- 先看被拦截请求的 IP 分布、UA 特征、请求路径,判断是集中某个 IP 段还是分散模式。
- 如果集中在 CDN 或代理出口 IP,把该 IP 段加入白名单,或者单独为该 IP 段调整频率限制规则。
- 如果分布在普通宽带 IP,再确认是不是自己的防护阈值设太紧。QPS 阈值和新建连接阈值可以适当松一档,恢复后再缓慢收紧。
我后来学到的经验是:调防护参数要"小步慢跑",每次只微调一个参数,观察 10-30 分钟,确认没有误杀再调下一项。千万别一口气把四五个参数全部改掉,出了问题你都不知道是哪个参数引起的。
4.3 日志与监控:排障时你最有用的工具
没有日志,排障就是盲人摸象。高防控制台里主要有三类日志需要你盯紧:
| 日志类型 | 核心内容 | 排障价值 |
|---|---|---|
| DDoS 攻击日志 | 攻击类型、攻击流量峰值、攻击开始/结束时间 | 判断攻击手法、确认是否需要调整防护阈值 |
| CC 攻击日志 | 被拦截的请求 URL、来源 IP、UA | 定位被 CC 的业务路径,为自定义规则提供依据 |
| 转发日志 | 回源请求状态码、回源延迟 | 排查高防节点到源站链路是否正常 |
我一般会在监控台配置两条告警:一是攻击流量超过基线的 50% 时通知,二是源站回源延迟超过 100ms 时通知。这两条告警的响应速度,决定了你在攻击期间是"主动应对"还是"被动救火"。日志查看的另一个价值在于复盘:每次攻击结束后,把攻击特征、起止时间、触发阈值、防护策略的效果记录下来,积累一个月,你对业务攻击态势的了解会远超大部分人。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 解决思路 |
|---|---|---|
| 有攻击但源站还是被打 | 检测阈值设太高,攻击流量未触发清洗 | 调低四层检测阈值,参考业务基线设置 |
| 高防 IP 正常,但网站打不开 | 回源配置错误 / 源站安全组未放行 | 检查端口映射和源站安全组规则 |
| 正常用户大量 403 | CC 防护频率限制太严格 | 调整单 IP 频率限制,检查是否误伤 CDN 出口 |
| 攻击流量不大但延迟很高 | 防护模式设成"严格",大量流量在排队检测 | 切换为"正常"模式,把清洗资源留给真正可疑的流量 |
| 黑洞告警频繁触发 | 防御峰值买小了 | 升级防御峰值,或调整 DNS 切换到备用高防 IP |
| 日志里有大量 502 | 源站服务器资源不足 | 检查源站 CPU/连接数,确认是否需要扩容或接入负载均衡 |
5. 写在最后的实操心得
高防 IP 这个东西,买了不等于防住,配好了也不等于一劳永逸。我最大的体会是:防护策略是一个动态调节的过程,每次攻击都是一次免费的攻防演练。攻击流量变大,你就调阈值、调模式、加规则;攻击手法变了,你就分析日志、总结特征、更新拦截策略。两三个轮次下来,你对业务的流量基线、攻击特征、防护盲区都会了如指掌。
最后分享一个我一直在用的小技巧:每个季度做一次防护策略的复盘。把过去 90 天的攻击日志拉出来,看看哪些规则帮你拦住了真正的攻击,哪些规则长时间没有生效,哪些规则误杀过正常用户。然后把无效规则下线、把误杀规则放宽、把新出现的攻击特征写成自定义拦截规则。这样你的高防 IP 防御能力会一直在迭代,而不是停留在第一次配置完的状态。希望这些实战经验,能帮你少走一些弯路。