回源带宽突增的元凶往往藏在日志与连接特征里,按“入口抓包→域名分流→连接画像→封禁验证”的路径排查,最快几分钟就能锁定异常来源。
定位异常来源前,先搞清回源带宽的真实构成
很多人一看到回源带宽飙高就急着封IP,结果误伤正常用户,问题却还在,回源带宽突增并不等于攻击,它可能来自三种完全不同的场景。
- 正常业务突增:比如活动上线、热点内容被转载,CDN节点缓存命中率下降,回源请求自然变多。
- 源站被恶意刷量:攻击者绕过CDN直接请求源站IP,或者伪造Referer、User-Agent反复拉取大文件。
- CDN节点异常回源:某些节点缓存策略失效、刷新任务过量,或者回源协议配置错误,导致重复回源。
判断场景的第一步,是去CDN控制台看回源QPS与带宽的比值,如果带宽翻倍但QPS基本没动,说明请求的是大文件,可能是下载站被刷或图片被盗链,如果QPS和带宽同步上涨,大概率是小文件高频请求,更像CC攻击或爬虫。
另一个关键数据是回源IP分布,正常情况下,回源流量来自CDN节点的IP段,分布比较稳定,如果突然出现大量陌生IP段直接连源站80/443端口,那基本可以确定源站IP泄露,攻击者在打源站。
快速定位异常来源的四步实操法
第一步:在源站入口抓包,区分“真回源”还是“直连攻击”
登录源站服务器,用tcpdump抓取当前活跃连接,先确认流量是从CDN过来的还是绕过了CDN。
tcpdump -i eth0 port 443 -nn -c 1000
看抓包结果里的源IP,如果源IP是CDN服务商的IP段(比如简米云、酷番云、网宿的机房IP),说明是正常回源,如果里面混着大量家用宽带IP或海外机房IP,直接连源站端口,那就是源站IP泄露,攻击者在绕过CDN打源站。
此时不必逐个查IP归属,直接启用源站防火墙的“仅允许CDN回源段”策略,以Nginx为例,在server块里加白名单:
allow 101.132.0.0/16; # 替换为你的CDN回源段 allow 120.55.0.0/16; deny all;

这一步能立刻切断绕过CDN的直连流量,带宽突增通常当场下降一半以上。
第二步:按域名和URL维度拆分,锁定“热门异常对象”
如果白名单策略加完,回源带宽仍然高,问题就出在CDN正常回源逻辑里,此时去CDN控制台拉取分钟级的回源日志,按域名、URL、状态码三个维度排序。
- 按域名排序:看哪个域名的回源流量占比最高,异常集中度如何。
- 按URL排序:找到流量最大的几个URL,留意是不是单个大文件被反复回源。
- 按状态码排序:重点看200、206、404的比例,206多说明客户端在分段下载大文件,404多说明有人扫描不存在路径。
实操中常见的情况是:某个图片或视频文件被外站盗链,Referer字段暴露了来源,在Nginx日志里快速查看TOP5的Referer:
awk '{print $11}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -5
如果某个域名贡献了绝大多数回源请求,且Referer来自陌生站点,直接对该URL配置Referer防盗链,或者用CDN的“URL鉴权”功能,让未带有效签名的请求直接返回403,不回源。
第三步:分析连接特征,区分真实用户与恶意程序
异常流量在TCP连接层面有独特行为,在源站执行ss命令,观察当前ESTAB状态的连接数、连接时长、发包间隔。
ss -ant | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
- 如果来自同一IP段的连接数超过几十个,且连接建立后长时间不发送业务数据,大概率是代理池扫源。
- 如果连接请求的URL高度重复、间隔时间极短,且没有CSS、JS等静态资源请求,属于典型的CC攻击特征。
- 如果User-Agent大量相同或为空,且Accept字段缺失,基本可以判定为脚本工具。
针对这种状况,先封禁最明显的异常IP段,再观察带宽曲线是否出现“阶梯式下降”,封禁可用iptables或云服务商的安全组,但注意封禁粒度不要到单个IP,因为攻击者随时会换IP,更有效的做法是按IP段的CIDR封禁,或者用WAF的自定义规则对高频IP做限速。

第四步:验证并恢复,防止误杀正常用户
定位到异常来源并采取措施后,别急着结束,接下来的5分钟很关键:
- 观察回源带宽是否回落到基线水平,正常波动范围应在10%以内。
- 手动访问几个核心页面,确认图片、接口能正常加载,看看有没有误封导致的白屏。
- 检查源站CPU、内存负载是否同步下降,确认不是磁盘I/O瓶颈引起的回源超时重试。
如果带宽降下来了但业务访问也异常,说明封禁策略范围过大,优先放行带有用户登录Cookie的请求,或者降低限速阈值而不是直接拒绝,如果带宽没降,说明还有更深的回源逻辑问题,比如CDN节点缓存key配置错误导致回源请求永远无法命中,那就需要检查CDN控制台的缓存配置了。
回源带宽突增的深层原因与针对性解决方案
CDN节点缓存命中率下降导致的回源量大增
行业共识认为,CDN回源带宽异常有相当一部分比例源于缓存配置失误,常见情况是给动静态资源统一设置了很短的缓存过期时间,或缓存key里带了随机参数,导致CDN节点每次请求都回源。
排查方法:在CDN控制台查看各节点缓存命中率曲线,如果整体命中率低于90%但此前一直稳定,说明最近修改过缓存规则,对照源站日志里的URL参数分布,找出带timestamp或uuid的请求,这类URL几乎无法被缓存。
解决办法是调整缓存key,忽略已知的随机参数,或者对动态接口改用按Query参数白名单方式做缓存,对于图片、CSS、JS等静态资源,把缓存时间拉长到30天以上。
源站配置错误导致回源协议循环重试
如果你同时配置了HTTP和HTTPS回源,且源站强制跳转,就可能出现一个死循环:CDN以HTTP回源,源站返回301重定向到HTTPS,CDN再以HTTPS回源,源站又返回301,两次回源流量叠加,带宽直接翻倍。
检查源站的Nginx配置中是否有针对所有请求的rewrite跳转规则,如果有,在CDN控制台将回源协议改为HTTP,并在源站放行该协议,只在CDN边缘层做HTTPS加密。

源站响应头里如果设置了Cache-Control: no-store,CDN将无法缓存任何内容,每次请求都会回源,用curl验证一下:
curl -I http://源站地址/静态文件.jpg
看响应头里是否出现no-store或private,若有则需修改应用层代码,去掉强制不缓存逻辑。
如何防止回源带宽突增再次发生
建立一套“事前配置加固、事中自动告警、事后日志留痕”的防御体系。
事前:源站IP保密与CDN策略优化
- 源站IP不要直接暴露在DNS解析里,只让CDN回源到源站,其他访问一律拒绝。
- 源站防火墙默认拒绝所有非CDN回源段IP的80/443访问。
- CDN上与源站同属一个云厂商时,内网回源可以进一步减少公网带宽占用。
事中:聚合监控指标与自动触发规则
- 在云监控中同时设置回源带宽、回源QPS、平均回源耗时三个指标的告警阈值。
- 触发告警后,自动执行预置的Webhook脚本,把最近10分钟的CDN访问日志同步到分析平台,便于第一时间拉取异常IP段。
事后:留痕复盘与日志长期存储
- 把每次突增的异常IP段、URL特征、处理动作记录成结构化事件。
- 日志保留周期至少90天,方便在同类问题再现时快速比对历史特征。
回源带宽突增时如何快速定位异常来源?常见问答
问:回源带宽突增但全网访问都正常,还需要处理吗?
需要,回源带宽突增意味着源站承担了超出预期的压力,即便当前没有宕机,也可能拖垮数据库或文件系统,先按域名拆分确认异常源,若所有域名都异常,优先检查CDN回源协议和缓存配置,若只有单个URL异常,优先查看Referer和User-Agent特征。
问:不借助收费WAF工具,纯靠Linux命令能定位吗?
可以,tcpdump抓包确认来源IP归属,ss统计连接数,awk分析访问日志的URL与Referer频率,iptables或nginx配置做临时封禁,对于中小规模突增,这些命令足够支撑定位与缓解,大规模攻击就要依赖云服务商的高防IP或WAF,毕竟单机带宽有限。