1.
总体设计与准备
在动手前先做规划:确定业务接入层(静态资源/CDN化、动静分离)、流量峰值估算(并发连接、每秒请求数)、预算(服务器/带宽/ASN成本)。准备清单:多地域 VPS/云主机、BGP/Anycast(可选)、域名与 DNS、TLS 证书、监控系统。建议先在两到三个机房做 PoP(北京/上海/香港 或 国内/海外)做实验。
2.
节点部署:系统与网络基础
在每个 PoP 上安装基本组件:Linux(Ubuntu/CentOS)、开启内核优化(sysctl -w net.ipv4.tcp_syncookies=1;net.core.somaxconn=65535;net.ipv4.tcp_max_syn_backlog=4096),安装 Nginx/OpenResty、Certbot、iptables、fail2ban、logrotate。确保服务器时间同步(chrony/ntp)。
3.
反向代理与缓存配置(Nginx 示例)
配置 Nginx 做边缘缓存与反代:在 /etc/nginx/nginx.conf 使用 proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cdn_cache:100m max_size=10g inactive=60m; 在 server 段设置 proxy_cache cdn_cache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 并启用 gzip。重启后通过 curl 验证响应头有 X-Proxy-Cache。
4.
限流与连接控制(实用指令)
用 Nginx 的 limit_conn_zone 与 limit_req_zone 控制并发与 QPS:在 http 段加入 limit_conn_zone $binary_remote_addr zone=addr:10m; limit_req_zone $binary_remote_addr zone=req:10m rate=10r/s; 在 location 中配置 limit_conn addr 10; limit_req zone=req burst=20 nodelay; 结合防火墙:iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 200 -j DROP(谨慎配置)。
5.
WAF 与规则:ModSecurity / OpenResty
部署 ModSecurity 或基于 OpenResty 的 lua WAF,导入 OWASP CRS 规则作为初始防护。示例:apt install libnginx-mod-http-modsecurity;启用 modsecurity.conf 并微调规则链(放行 API 白名单、拦截扫描与常见注入)。记录误杀并持续调整。
6.
Anycast 与 DNS 方案选择
Anycast 最有效但成本高:需要自己的 ASN 与 BGP 会话,或租用服务商 Anycast IP。没有 Anycast 时,可用 GeoDNS 或 DNS 轮询(例如 bind/PowerDNS+geoip)实现就近调度。确保 DNS TTL 低(例如 60s)以便快速切换。
7.
日志、监控与告警搭建
部署 Prometheus + Grafana + node_exporter + nginx_exporter,采集 qps、连接数、带宽、95/99线延迟。日志推送到 ELK/EFK,用 Kibana 检索异常请求来源。设置告警:带宽突增、SYN 队列占满、错误率激增等。
8.
测试与验证总体流程(合法性提示)
所有攻击模拟必须在自有环境或获授权的测试环境进行,避免违法。验证分两类:防护效果(抗洪、SYN/UDP、应用层恶意流)和性能(吞吐、延迟、缓存命中)。下面给出具体命令与指标。
9.
如何验证防护效果:步骤与命令
搭建内网压测机(或租用测试台)并在实验网段运行合法测试。SYN 洪泛可在内网用 hping3(仅限实验)模拟:hping3 -S --flood -p 80
,同时观察目标节点 netstat -n | grep SYN_RECV、ss -s、iptables counters(iptables -L -v)。应用层攻击用 wrk 模拟大量并发请求:wrk -t8 -c1000 -d60s http://edge/。记录异常时段的防火墙规则触发与 WAF 日志。
10.
如何验证性能:吞吐、延迟、缓存命中
使用 wrk/ab/siege 测试峰值吞吐:wrk -t12 -c400 -d30s http://edge/static/file.jpg,记录 RPS、平均/95/99 响应时间。用 curl 检查缓存头:curl -I https://edge/static/file.jpg 查看 X-Proxy-Cache。用 ping/traceroute 检查网络路径,用 webpagetest 或 lighthouse 检测端到端延迟。
11.
故障演练与切换策略
设计回退流程:当某个 PoP 被攻击到不可用,DNS 自动切走到健康节点(使用 health checks),或通过 BGP withdraw(有条件时)。演练步骤:人为停止一节点服务,观察监控与自动化脚本是否按预期切换并告警。
12.
常见问题与优化要点
优化要点:开启 keepalive、合理缓存策略、静态资源长缓存、SSL 会话复用、边缘压缩;排查点:Origin 限流、黑名单/白名单、bot 策略、验证码挑战页。定期更新 WAF 规则并回放真实流量日志。
13.
问:如何在不具备 AS/Anycast 的情况下做到接近高防效果?
答:可通过多区域 PoP + GeoDNS + 云厂商高防机房混合部署实现。把流量引导到具备高防能力的云边缘(如租用云防护流量清洗节点),并在自建 PoP 做二次过滤与缓存,结合低 TTL 的 DNS 快速切换。
14.
问:我如何合法地做 DDoS 压力测试并衡量节点承受力?
答:只在自有或授权测试网络内进行;使用压测平台(自建机群或第三方合规服务)来模拟流量,记录每次测试的 QPS、连接数、响应错误率、CPU/内存、网络带宽消耗和防火墙触发,逐步上调到业务承受门限并保存测试数据。
15.
问:常用工具和关键指标有哪些便于日常验证?
答:工具:wrk/ab/wrk2、hping3(仅限实验)、curl、tcpdump、ss、Prometheus+Grafana、ELK。关键指标:QPS、RPS、95/99 响应时间、带宽峰值、缓存命中率、SYN_RECV 数、错误率和 WAF 命中数。