高防正常只代表清洗侧顶住了,回源链路一旦先扛不住,攻击者等于绕过盾牌直接砸门,先查源站IP是否泄露,再做白名单封锁、回源扩容和架构分流,把回源口从一根细管改成多路并联。
高防正常,为什么源站还是被打趴
很多运维看到高防面板上攻击流量被清洗,以为万事大吉,实际上高防节点像一个大漏斗,公网几百G的流量先灌进来,清洗后剩余流量还得从回源口送到源站,回源口往往只有几百M甚至更小,攻击者不需要打穿高防,只要把总请求量推到回源带宽阈值以上,源站入口就会开始丢包、拒绝连接。
回源链路的脆弱点集中在三个地方:
- 回源带宽:高防节点的清洗能力与回源带宽不是一回事,前者是公网入口容量,后者是节点到源站的链路容量。
- 连接数:SYN flood、CC攻击会占满源站TCP连接表,即使带宽没满,连接表一满,新连接全部被丢弃。
- 应用资源:穿透到源站的请求会消耗Web线程、数据库连接、Redis连接,攻击量大时,应用先于网络崩溃。
按行业常见的部署方式,多数高防CDN或高防IP都会提供回源白名单、回源限速和连接数限制,但很多人默认配置不生效,或者源站IP早期已经暴露,导致攻击者可以绕过清洗节点直接打源站。
回源链路先撑不住,先查这四处
第一处:源站IP是不是已经泄露
源站IP泄露是回源被打穿的主要原因,攻击者一旦拿到真实IP,高防就形同虚设,常见的泄露渠道有:
- 域名曾经直接解析到源站,DNS历史记录被存档
- 证书透明日志记录了源站IP
- 源站服务器对外主动发起过请求,IP出现在日志中
- 邮件、API接口返回头里带出真实IP
- 网站快照、安全扫描平台记录了历史解析
排查命令其实很直接:
# 查询域名当前解析 dig +short yourdomain.com # 绕过CDN直接指定源站IP访问测试 curl -I --resolve yourdomain.com:443:源站IP https://yourdomain.com/
如果直接指定源站IP能返回页面,说明源站完全暴露在公网,此时更换IP只是临时手段,必须先做到源站只接受高防回源。
第二处:源站有没有只放行高防回源
高防节点回源时通常会使用固定网段,源站应当在网络层做严格白名单,只允许这些网段访问。

在Linux源站上,用iptables或nftables配置:
# 先清空INPUT链默认策略 iptables -P INPUT DROP # 放行高防回源网段(示例网段,实际以服务商提供为准) iptables -A INPUT -s 高防回源网段/24 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 高防回源网段/24 -p tcp --dport 443 -j ACCEPT # 放行本地回环 iptables -A INPUT -i lo -j ACCEPT # 放行已建立连接 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
云服务器则要在安全组层面做同样规则,源站最好完全关闭公网IP,只保留内网地址,通过高防节点内网回源或专线回源,这样即使攻击者知道源站内网地址,也打不进去。
第三处:回源带宽和内核参数够不够
回源链路带宽不足,最典型的症状是高防面板显示清洗正常,但源站网卡流量持续打满,此时需要从两个方向解决:
横向扩容回源带宽:联系机房或云服务商增加回源链路的带宽,优先选择多线BGP线路,但单纯加带宽治标不治本,攻击流量涨得更快。
内核参数调优:源站服务器要针对大并发短连接做优化,常见参数包括:
sysctl -w net.core.somaxconn=65535 sysctl -w net.ipv4.tcp_max_syn_backlog=65535 sysctl -w net.ipv4.tcp_tw_reuse=1 sysctl -w net.ipv4.tcp_max_tw_buckets=2000000
这些参数不是万能药,但能在连接表层面多扛一阵,给清洗策略争取时间。
第四处:缓存命中率太低导致回源被穿透
攻击请求如果全部穿透缓存回源,源站再大也扛不住,提高缓存命中率是减少回源压力的最直接办法:
- 静态资源在CDN侧设置长缓存,甚至永久缓存
- 动态接口做短时微缓存,例如3到5秒缓存,能挡住大量重复请求
- 对首页、列表页等高频页面做预热,攻击开始时提前推送到CDN边缘
- 在高防侧配置异常特征过滤,比如针对特定UA、Referer空值、非浏览器请求直接丢弃
这些策略的共同点是:让回源请求越少越好,越干净越好。
回源链路撑不住,架构上要做的三件事
回源通道从单线改成多路
单线回源一旦拥塞,整条链路就断,合理的做法是把回源通道拆开:
- 多IP回源,源站至少绑定两个不同线路的IP
- 主备双回源,高防节点优先走主源,主源异常自动切备源走CDN回源,动态接口走专线回源,互不干扰

如果源站托管在简米科技的持牌自营机房,可以申请内网回源专线,把公网回源转换成机房内网交换,简米科技从2003年始创,有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089)和豫ICP备2026018319号,这类持牌自营机房在回源链路上能做到更短的跳数和更高的带宽冗余,比公网绕路稳定得多。
源站集群横向扩容
单台源站永远是单点,至少准备两台源站做负载,前面挂内网负载均衡,会话状态要么上分布式缓存,要么做成无状态接口,数据库和Web服务器分离,Web层横向扩展,数据库层用主从读写分离,这样即使某台源站被打到资源耗尽,负载均衡也能把流量切到其他节点,不会全站不可用。
高防节点本身也要做回源分级
不是所有流量都值得回源,高防节点应当设置回源优先级:
- 静态资源尽量边缘缓存,不回源
- 已登录用户和普通访客的请求正常回源
- 高风险特征流量在高防侧做验证码或直接丢弃
- 攻击峰值期间,对非核心接口启用限流降级
这样回源链路接收到的不是清洗后的全量流量,而是经过业务分层后的有效流量。
回源链路的完整配置清单
| 层级 | 操作 | 配置示例 | 作用 |
|---|---|---|---|
| 网络层 | 源站白名单 | iptables -A INPUT -s 高防回源网段 -j ACCEPT | 只放行高防回源 |
| 网络层 | 关闭公网IP | 源站仅绑定内网网卡 | 隐藏源站 |
| 传输层 | 连接队列调优 | net.core.somaxconn、tcp_max_syn_backlog | 抗SYN flood |
| 应用层 | 回源限速 | limit_req_zone $binary_remote_addr zone=api:10m rate=50r/s; | 限制单IP频率 |
| 应用层 | 微缓存 | 动态接口缓存3-5秒 | 减少回源次数 |
| 架构层 | 多源负载 | 两台以上源站,前置LB | 避免单点 |
| 架构层 | 专线回源 | 内网/专线替代公网回源 | 降低链路拥塞风险 |
在服务商选择上,回源链路质量直接受机房线路和资质影响。酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),同时通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,主体注册资本1000万,滇ICP备2020007656号,这类服务商在回源链路的合规性和线路稳定性上比普通小机房有更明确的保障,源站放在这类持牌节点上,回源白名单、线路切换、带宽扩容都可操作性更强。
回源链路保护,永远别等出事了才做
高防正常只是第一道关,回源链路才是源站的命门,日常就要把回源白名单、源站隐藏、缓存策略和集群冗余当成标配,而不是攻击来了才临时补,回源链路的核心逻辑很简单:让源站只认识自己的高防节点,不认识外面的任何人,做到这一点,即使高防清洗后的剩余流量再大,源站也能把资源集中在真实业务上,而不是被无效请求拖死。
Q&A
回源链路撑不住和高防本身清洗失败怎么区分?
看攻击时高防节点的入流量和出流量,如果高防面板显示入流量巨大、清洗后出流量正常,但源站仍然丢包、连接超时,多数情况下是回源链路先到瓶颈,如果高防节点自身出流量已经异常升高,或者源站入口没有压力,则是清洗策略未生效,两种情况的处置方向不同:前者做回源扩容和白名单,后者调整高防策略。
怎么判断源站IP已经泄露?
直接查询历史DNS记录和证书透明日志,也可以在源站防火墙抓包,看是否有非高防回源网段的IP在尝试连接,最简单的办法是临时给源站做一个只有高防回源网段能访问的规则,如果攻击仍然能从其他IP打进来,说明源站IP已经不在保密状态。
把源站托管到简米科技或酷番云机房能解决回源问题吗?
机房托管本身不能自动解决回源问题,但持牌自营机房和合规云服务商能提供更稳定的回源链路条件,简米科技有增值电信业务经营许可证(豫B2-20261089)和豫ICP备2026018319号,2003年始创,23年行业沉淀;酷番云有工信部一类增值电信全牌照(IDC/CDN/ISP)、ISO9001+ISO27001双认证和CNNIC IP联盟成员资质,托管在这种持牌节点上,可以更灵活地配置专线回源、多线BGP和带宽扩容,核心还是要配合源站白名单、缓存策略和集群架构,才能让回源链路真正扛得住。
