1.1 明确业务类型(Web、API、游戏、流媒体)与峰值并发数;1.2 估算带宽:并发用户 × 人均带宽(KB/s) × 8 / 1024 ≈ Mbps。举例:1000 并发 × 50KB/s ≈ 1000×50×8/1024≈390Mbps(含 25% 头部和突发冗余建议选 500Mbps);1.3 预算与SLA:确定月流量 vs 峰值保底带宽价格;1.4 准备好证件以便香港机房快速备案/实名制(如供应商要求)。
2.1 优先考虑提供“云清洗 + 计费按峰值/按流量”混合方案的厂商(阿里云香港、腾讯云香港、香港本地高防机房、部分国际 CDN 供应商);2.2 对比清洗门限(通常 10Gbps/20Gbps/按线路),与可用 Anycast/多线 BGP;2.3 要求试用或 PoC:90 天内可观察真实流量和清洗效果;2.4 选择可按需扩展带宽和按小时计费的实例以降低成本。
3.1 CPU/内存:按应用线程数与 SSL/TLS 负载估算,建议至少 4vCPU、8GB,用于中等并发;3.2 网卡与链路:选择 1Gbps/10Gbps 网卡,优选支持 SR-IOV 的虚拟化;3.3 公网 IP:至少保留 2 个弹性 IP(主备),用于 BGP/路由切换;3.4 购买带宽包时确认峰值与峰值清洗价差,优先选择按带宽峰值计费的包年包月方案以节省长期成本。
4.1 使用主流稳定发行版(Debian/Ubuntu/CentOS),内核建议 4.x+ 或更高;4.2 在 /etc/sysctl.conf 添加并应用 sysctl -p:
・net.ipv4.tcp_syncookies=1
・net.ipv4.tcp_max_syn_backlog=4096
・net.core.somaxconn=4096
・net.core.netdev_max_backlog=5000
・net.ipv4.tcp_fin_timeout=15
・net.ipv4.tcp_tw_reuse=1
4.3 检查 ulimit:ulimit -n 65536,持久化到 /etc/security/limits.conf。
5.1 Nginx 示例关键配置(/etc/nginx/nginx.conf):worker_processes auto;worker_connections 10240;keepalive_timeout 15;sendfile on;tcp_nopush on;tcp_nodelay on;5.2 调整 upstream 超时并启用缓存/压缩,减少回源带宽;5.3 对于 HTTPS,使用 OCSP stapling、启用 TLS1.3、使用硬件/软件加速(如 OpenSSL + libs)。
6.1 基本防护:允许必要端口(80/443/22)并拒绝其余;6.2 限制 TCP 同一 IP 连接数:iptables -A INPUT -p tcp --syn --dport 443 -m connlimit --connlimit-above 100 -j REJECT;6.3 使用 conntrack 与 nf_conntrack_max 提升并发追踪上限,sysctl net.netfilter.nf_conntrack_max=2621440;6.4 启用 SYN cookies(见第4节)。
7.1 初级:在供应商控制台开启基础清洗(阈值设置在预估峰值的 60%-80%);7.2 进阶:配置流量白名单/黑名单、地理封禁(阻断不必要国家或城市流量);7.3 建议启用按源速率限制(rate-limit)和异常流量告警;7.4 对大流量攻击,切换到废弃 IP 后再切回,或使用 Anycast 切换到清洗池。
8.1 使用 Anycast 可将流量分散到多个 POP,降低单点带宽压力;8.2 若使用自有 ASN 或租用 BGP,配置多线 BGP 并设置合理的 route prepend 与 local-pref 策略;8.3 实操:与机房确认是否支持 BGP 广告变更及路由宣告权限,准备好备用 IP/ASN 切换脚本。
9.1 对静态资源强制通过 CDN,减少回源带宽;9.2 动态请求走回源时可使用智能路由(灰度路由到不同数据中心)与缓存层(边缘缓存 + 缓存键策略);9.3 实操步骤:在 CDN 控制台设定 origin 为 Hong Kong IP,设置缓存规则(/static/* 缓存 1 天),配置自定义 Header 做回源鉴权以避免直接绕过。
10.1 公式:带宽(Mbps) ≈ 并发 × 人均流量(KB/s) × 8 /1024 × 冗余系数(1.2~1.5);10.2 示例:3000 并发 × 20KB/s → 3000×20×8/1024≈468Mbps,取 600Mbps 做预留;10.3 成本优化:采用“基础带宽 + 峰值按用量”组合,夜间或低峰时段降配实例以节省费用。
11.1 使用 tc 做出站限速,减少突发回源流量:tc qdisc add dev eth0 root tbf rate 500mbit burst 32kbit latency 400ms;11.2 针对不同服务创建 classful qdisc(htb)并分配优先级;11.3 内部对接示例:对 API 端口限制每 IP qdisc/filter,防止某单 IP 刷满带宽。
12.1 部署 Prometheus + Grafana 监控带宽、连接数、包丢、CPU/内存;12.2 设置告警:带宽利用率 > 80% 持续 5 分钟、连接数 > 上限等;12.3 定期做流量故障演练(非真实攻击),验证清洗、切换与回滚流程并记录 SOP。
13.1 上线检查:sysctl、ulimit、防火墙规则、生效 Nginx 配置、证书、监控数据接入;13.2 自动化:编写 ansible playbook 部署 sysctl、iptables、nginx;13.3 备份与回滚:配置镜像备份、配置文件版本控制(git),并有快速恢复步骤(重装/切换备用 IP)。
问:我预算不多,如何在费用限制下做到既有清洗能力又不超支?
答:优先采取混合策略:核心防护交给云端清洗(按需购买清洗阈值),静态资源全面走 CDN,回源服务器做好流量与连接限制(tc、iptables、nginx),并采用按小时或弹性扩缩的云实例。通过精确带宽计算与监控告警,避免长期空闲大带宽浪费;同时争取供应商试用或较短合同以验证策略。
问:我按照公式算得带宽,实际峰值往往更高,为什么?如何更准确估算?
答:误差主要来自流量突发、协议开销(TCP/HTTP/SSL)与并发统计口径不同。避免方式:用历史流量曲线加上统计 95% 峰值与峰值小时数据;在估算公式中加入 20%-50% 冗余;并在上线初期保留弹性扩容能力与告警,当实际流量达到阈值时立即扩容或切换清洗策略。
问:如果遇到超出清洗能力的大规模攻击,立刻该做什么?
答:紧急步骤:1) 立刻切换到更高等级的云清洗(联系厂商紧急工单);2) 启动 CDN/Anycast 全量接入,尽可能把静态和部分动态请求转到边缘;3) 根据攻击类型临时封禁异常国家/端口,对可疑源进行黑洞/黑名单处理;4) 触发流量路由切换(BGP/备用机房)并保持监控,待攻击缓解后逐步回滚。