1.
概述与目标
本指南目标:在不依赖完整境内托管的前提下,使用“国内可连的
海外CDN”(有香港/新加坡/境外联通互联能力或在国内有互联节点的国际CDN),结合安全防护(WAF、DDoS防护、源站访问控制、监控)实现更高的抗DDoS能力与访问稳定性。下面以可落地的步骤、命令和脚本示例说明。
2.
评估与选择CDN提供商
步骤:列出候选(如Cloudflare(含中国区合作)、Akamai、Fastly、AWS CloudFront+China、阿里云国际CDN、腾讯云国际等);核查是否有香港/新加坡POP、是否提供中国链路优化、是否支持自定义证书、是否提供实时DDoS/WAF、是否能导出IP段和API自动化管理。评分维度:连通性、节点分布、WAF规则丰富度、价格与SLA。
3.
DNS与流量分发策略配置
操作步骤:1) 将网站的主域名CNAME到CDN提供商给出的域名;2) 使用支持健康检查的DNS(如NS1、Cloudflare DNS、阿里云DNS)做GSLB或基于地域的DNS解析;3) 将DNS TTL调低为60-120s以便快速切换;4) 在DNS中配置备用CNAME指向第二CDN,设置主动健康探测与故障转移规则。
4.
部署双CDN与主动切换
实践:采用Active-Active或Active-Passive架构。Active-Active:两个CDN同时接受流量,通过DNS加权或负载均衡器分流;Active-Passive:主CDN正常时全部流量走主CDN,健康检查失败时切换到备用。配置步骤包含在DNS提供商中创建两个CNAME记录并启用健康检查/权重。测试切换:模拟主CDN不可达并观察DNS切换时间。
5.
源站访问控制(只允许CDN访问)
具体做法:1) 向CDN索取其出口IP段或使用其IP API(多数提供商提供JSON格式IP列表);2) 在源站防火墙/云安全组中仅允许这些IP段访问HTTP/HTTPS端口并阻断其他公网请求;3) 为防止IP段变化,编写自动拉取IP段并更新防火墙的脚本(见示例)。示例脚本(简化):
<pre>
#!/bin/bash
URL="https://cdn-provider.example/api/ips"
curl -s $URL | jq -r '.ips[]' > /tmp/cdn_ips.txt
ipset create CDN_IPS hash:net -exist
for ip in $(cat /tmp/cdn_ips.txt); do
ipset add CDN_IPS $ip -exist
done
iptables -I INPUT -p tcp -m multiport --dports 80,443 -m set ! --match-set CDN_IPS src -j DROP
</pre>
定时器:用cron每5-10分钟更新一次。
6.
CDN缓存与性能优化
设置建议:1) 制定缓存规则(静态资源长期缓存,HTML短缓存或不缓存);2) 开启Gzip/ Brotli、HTTP/2或HTTP/3;3) 配置cache key(去除无关query参数、按主机+路径分组);4) 启用Origin Shield或边缘预取以减少源站压力;5) 设置合理的回源超时时间和重试策略。
7.
WAF与速率限制配置
步骤:1) 在CDN控制台启用WAF并选择推荐规则集(OWASP、Bot规则);2) 定义自定义规则:限制异常UA、频繁URL、登录接口速率限制;3) 对登录、支付、API接口设置基于IP或用户的速率阈值;4) 启用JS挑战或验证码对机器人流量进行二次验证;5) 定期根据日志调优放行与封禁规则。
8.
DDoS防护与阈值策略
实现要点:1) 在CDN或云提供商处开启L3/L4/L7级防护并设置攻击检测阈值(流量/连接数/请求速率);2) 为高风险时间窗口预置更严格的策略(例如购物节);3) 使用自动弹性扩容或黑洞策略做紧急隔离(慎用黑洞以免影响业务);4) 与运营商或上游联通协调白名单联动。
9.
监控、日志与告警流程
实施:1) 将CDN访问日志、WAF阻断日志、源站日志统一推送到日志平台(如ELK、Splunk或云日志服务);2) 配置实时告警:TPS、错误率、回源QPS异常、WAF阻断率急升;3) 建立值班流程和Runbook(含快速切换CDN、临时限流、更新防火墙脚本);4) 使用可视化面板和自动化脚本触发应急响应。
10.
测试与演练(合规前提下)
操作清单:1) 基础连通性检查:dig +short domain、curl -I domain、openssl s_client -connect domain:443;2) 路径追踪:mtr/traceroute到CDN节点与直连出口;3) 故障演练:关闭主CDN服务或调整DNS权重,验证切换时间和会话恢复;4) 负载测试:仅在合法范围与授权下使用压力测试工具或第三方压力测试服务,评估阈值并调优防护策略。
11.
问:海外CDN在国内访问仍然不稳定怎么办?
12.
答:
先排查链路与解析:1) 用dig/分地域mtr检测是否解析到本地节点,必要时调整DNS策略或增加国内DNS解析节点;2) 检查是否被运营商劣化,尝试切换到有国内链路优化的CDN或在香港/新加坡节点增加POP;3) 调整DNS TTL并启用GSLB按ISP/地域路由;4) 在用户侧启用连接重试、更短的超时时间与缓存策略。
13.
问:如何确保攻击者无法绕过CDN直接打到源站?
14.
答:
严格实行源站白名单(仅允许CDN出口IP访问)、使用CDN签名/Header校验(源站校验特定HTTP头或签名),并关闭源站端口的公网访问。使用自动化脚本更新白名单并记录变更,结合WAF对可疑回源请求进行阻断。
15.
问:双CDN配置会影响SSL/SEO吗?
16.
答:
注意事项:1) SSL:确保两个CDN均支持自定义证书或托管同一证书(使用通配证书或ACME自动化);2) SEO:DNS切换和CNAME正常不会影响索引,保证301/302跳转与HSTS一致;3) 证书和HSTS策略要在两个CDN上保持一致,避免出现混合内容或证书错误。