1.
总体架构与选型原则
- 目标:低延迟、可用性、抗DDoS能力。
- 选择:香港多节点(至少2个机房/机柜),Anycast公网IP通过BGP到多家上游ISP;接入DDoS清洗厂商(GRE/VRF/HTTP代理)。
- 要点:游戏UDP/TCP分离、状态保持在内网负载均衡层、边缘做速率限制和SYN保护。
2.
机房与网络接入配置(BGP/Anycast)
- 步骤:向上游申请/带有自己的ASN或使用ISP提供的IP段;配置BGP邻居到每个ISP。
- 示例(在路由器/FRR):
router bgp 65001
neighbor ISP1 remote-as 12345
network 203.0.113.0/24
bgp bestpath as-path multipath-relax
- Anycast:各节点宣布相同/24,ISP按BGP路由选择最近节点。
3.
与DDoS清洗厂商对接(部署Tunnel与BGP/FlowSpec)
- 步骤:签约后提供清洗点IP与BGP邻居信息,交换社区标签用于流量重定向。
- 技术流程:在本地路由器配置BGP到清洗商,并在出现攻击时,改变路由策略将受攻击前缀引至清洗点(静态或BGP社区触发)。
- 测试:先在非生产时间通过announce/withdraw模拟切换,并用tcpdump核验GRE隧道/流量到达清洗点。
4.
边缘防护与主机内核硬化
- 系统参数(立即生效):
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.netfilter.nf_conntrack_max=2000000
- 边缘速率限速(nftables示例):
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; }
nft add rule inet filter input udp dport 7000 limit rate 200/second burst 400 packets drop
- 说明:针对游戏UDP口设置更高burst与均衡,TCP使用SYN速率限制。
5.
负载均衡与会话保持(HA/故障切换)
- 方案:外部使用L4(HAProxy/NGTCP/NGINX stream或LVS),内部使用Keepalived+VRRP提供虚IP,高可用性。
- Keepalived关键配置片段:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 101
virtual_ipaddress { 10.0.0.10 }
- 测试:切换主备并用ss/tcpdump确认连接迁移与重连策略。
6.
监控、告警与日志策略
- 部署:Prometheus收集主机/应用指标,Grafana展示,Alertmanager定义告警策略(流量突增、连接数、丢包)。
- 日志:全部边缘防火墙、负载均衡器日志集中到ELK/EFK,设置索引与快速查询(按IP、端口、时间)。
- 告警流程:阈值+人工确认,触发时立即执行应急脚本(自动announce到清洗点或黑洞)。
7.
实战应急演练步骤(详细可复现)
- 1)准备:列出联系人表、脚本仓库(announce/withdraw脚本)、测试时间窗口。确保清洗商BGP session可用。
- 2)检测模拟:用hping3在非生产端口模拟SYN/UDP放大(低流量):
hping3 -S -p 7000 --flood --rand-source 203.0.113.5
- 3)切换到清洗:运行announce脚本(例如调用路由器API或FRR vtysh):
vtysh -c "configure terminal" -c "router bgp 65001" -c "neighbor 10.10.10.1 route-map TO_SCRUB out"
- 4)验证:tcpdump在清洗点和本地抓包确认流量已被接收并返回;检查应用延迟和丢包。
- 5)恢复:撤销announce或切回主路由,记录时间戳与影响,执行事后复盘。
8.
常见故障与恢复要点
- 故障:BGP邻居中断、清洗路径延迟、应用连接过多导致服务挂。
- 恢复:
1) BGP掉:检查BGP session日志,重启BGP进程(vtysh/FRR)。
2) 清洗后性能差:调低清洗策略的严格度,逐步放行正常流量。
3) 应用挂:回滚到冷备机或扩容后端实例并重新加入LB。
9.
问:在香港站群部署Anycast后,如何快速把被攻击前缀引到清洗中心?
问:在
香港站群部署Anycast后,如何快速把被攻击前缀引到清洗中心?
答:通过预先与清洗厂商约定BGP策略(community或route-map),并准备自动化脚本(vtysh/Netconf/API)在检测到阈值时执行announce/route-map修改,将受攻击的特定/32或/24路由下一跳改为清洗点。演练时需确保BGP session、社区策略和清洗点的流量通道(GRE/HTTP proxy)都已测试过。
10.
问:如何在不影响玩家体验的情况下做DDoS演练?
问:如何在不影响玩家体验的情况下做DDoS演练?
答:选用离峰时间窗口、分段演练(先在测试子网做;再在少量用户的真实IP上)、流量控制在可控阈值,并提前通知运维/客服与上游清洗商。使用“灰度”引流:先将少量流量导向清洗点验证策略,然后逐步扩大。确保有即时回退流程并实时监控延迟、丢包、玩家连接成功率。
11.
问:演练后如何做复盘并改进部署?
问:演练后如何做复盘并改进部署?
答:复盘要包含时间线(检测、决策、执行、恢复)、影响范围、日志与抓包证据、自动化脚本执行结果及延迟与错误。根据复盘调整告警阈值、完善BGP社区策略、优化防火墙规则并将演练发现的手动步骤自动化。最后生成SLA影响报告,安排下一次演练周期。
来源:游戏香港站群服务器与DDoS防护结合 的安全部署与应急演练步骤