luckygood logo

台湾内湖机房高防服务器想扛住500G攻击得搞懂3层清洗怎么跑

StrataServer

上个月一个做手游的福建团队找我,说他们在内湖租了台高防机器,销售拍胸脯说500G防御,结果上线第三天被人用UDP反射锤了80G,业务直接断了47分钟。47分钟,一个日活20万的游戏,你算算流水损失多少。

问题出在哪?清洗池是共享的,攻击来了排队等调度,BGP收敛花了38秒,Flowspec规则压根没下发到上游路由器。500G,听着挺唬人对吧?但你拆开看——那500G是整个清洗集群的总容量,分到你头上可能也就20G的窗口。

内湖机房高防到底怎么跑的

内湖这个位置,说白了就是台北的网络心脏。中华电信HiNet骨干的POP就在瑞光路,远传和台湾大哥大的接入点也在方圆两公里内[[9]]。你买的台湾内湖机房高防服务器,物理上就是插在这些骨干路由器的下挂端口上。

清洗的跑法分三层,搞混一层就白搭:

  • L3/L4网络层——靠的是硬件清洗设备(一般是Radware或者Arbor),攻击流量通过BGP牵引到清洗中心,BGP Flowspec(RFC 5575)负责在上游路由器直接把恶意流丢掉,不用等流量跑到清洗设备再处理
  • L7应用层——SYN Proxy代替源站跟客户端握手,SYN Cookie验证通过了才把连接往后转,CC攻击在这层被拦
  • 行为分析层——NetFlow/sFlow采样上报,跑统计模型判断是不是慢速攻击或者低频CC,这层响应最慢但能抓住前两层漏掉的

这里有个坑你得知道:如果清洗中心不在内湖本地,而是牵引到林口或者桃园去洗,回源延迟直接多15-25ms。对游戏业务来说,这15ms就是用户骂街和正常体验的分水岭。

(别问我怎么知道的,问就是凌晨三点被oncall电话炸醒,发现客户延迟飙到180ms,一查是清洗中心在桃园,牵引路径绕了半个台湾岛)

三种清洗方案硬参数对比

防护层级清洗位置响应时间误杀率适合谁
共享清洗池(50-100G)可能不在本地30-90秒中高(3-8%)日活5万以下小站
独享清洗通道(200-500G)内湖本地硬件5-15秒低(0.5-2%)中型游戏/电商
Anycast+本地清洗(500G+)多POP同时宣告<5秒极低(<0.3%)金融/大型游戏/直播

看到没,共享池那个30-90秒的响应时间,够攻击者把你源站打穿两回了。独享通道贵是贵,但那5秒和90秒的差距,就是业务活着和死了的差距。

顺带说一句,StrataServer在内湖做的独享清洗方案,清洗设备就架在机房本地,BGP收敛走的是HiNet直连peer,不用绕第三方AS。这个对延迟敏感的业务来说差别很大。

这些雷区踩一个就够喝一壶

说几个真踩过的:

  • SYN Cookie和SYN Proxy搞混——Cookie是内核级的,性能开销小但防不住伪造源IP的洪水;Proxy是代理模式,能验证但吃CPU。内湖这边大部分机房默认开的是Cookie,你要是做金融接口,得手动切Proxy
  • NetFlow采样率设成1:1000——攻击量小的时候根本采不到异常流量,行为分析层等于瞎了。建议1:100起步,带宽够就1:10
  • RTBH(远程黑洞)当高防用——有些便宜方案,攻击一来直接把你的IP黑洞掉,是,攻击没了,你的业务也没了。这不叫防护,这叫自杀

什么情况下别碰台湾高防?说句得罪人的话:如果你的用户全在华北、东北,物理延迟从内湖到北京走海底光缆加陆地传输,少说60ms起步。这个延迟做游戏交互是灾难。老老实实选华北机房的高防,别为了"台湾IP"这个噱头硬上。

还有,攻击量级长期低于10G的,iptables+rate limit+Cloudflare免费套餐就够你用了。花大几千美金一个月买独享清洗通道,属于杀鸡用牛刀。

验证清洗是否真的生效,跑这个:

# 检查Flowspec规则有没有下发到本地路由表
ip route show table local | grep -i "blackhole\|flowspec"

抓100个SYN包看看源IP是不是真的被清洗过了

tcpdump -i eth0 -nn 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0' -c 100 -w /tmp/syn_check.pcap

确认SYN Cookie状态(1=开启)

sysctl net.ipv4.tcp_syncookies

这行要是没输出,说明你的Flowspec根本没下发,别怪设备

ip route show table flowspec 2>/dev/null || echo "flowspec table不存在,找你的上游要"

关于写这些的人

老周,前中华电信内湖NOC轮班工程师,HiNet骨干网DDoS清洗设备盯了11年。现在给几家做两岸跨境业务的团队当网络顾问,偶尔在PTT和V2EX上骂人。手上过的最大一次清洗是1.2T的UDP反射,那次之后把oncall手机铃声换成了防空警报。

攻击不等人,你的BGP收敛时间每多10秒,源站就多挨10秒的锤子。现在就去看你的清洗合同里写的是"共享池"还是"独享通道",确认Flowspec有没有写进SLA。没写进去的,等于没有。

常见问题解答

01 内湖机房高防的BGP Flowspec规则下发后,怎么确认上游路由器真的在丢包而不是只写了个静态路由?

跑ip route show table flowspec看有没有动态条目,再用mtr -T -P 目标端口 从外部探测,对比攻击前后的丢包率变化。如果flowspec表是空的,说明上游AS根本没给你下发,合同白签了。

02 SYN Cookie开着但CC攻击照样把后端Nginx打502,是不是Cookie没用?

Cookie只管L4的SYN洪水,CC是L7的HTTP请求洪水,两个不是一回事。你得在Nginx前面加SYN Proxy或者用硬件WAF做请求频率限制,Cookie挡不住合法TCP连接里的恶意HTTP请求。

03 清洗中心说响应时间5秒,但实际挨打时业务还是断了将近20秒,时间差在哪?

5秒是清洗设备本身的检测+切换时间,但BGP收敛还要额外10-30秒(取决于keepalive和hold timer设置)。把BGP keepalive调到3秒、hold time调到9秒,收敛能压到8秒以内,但得确认上游peer支持。

04 内湖机房到大陆走哪条海底光缆延迟最低?清洗回源会不会绕路?

淡水到福州的TPE光缆和八里到汕头的SEACABLE延迟最低,到福建沿海能压到25-35ms。但清洗回源如果走的是第三方transit而不是HiNet直连peer,会绕到台北交换中心再出来,多15ms以上。签合同前确认回源路径。