All systems operational 12 elite locations · Europe & Asia Pay with crypto · 0 KYC
首页 / 指南 / DDoS 防护 VPS 详解:过滤到底管什么
指南

DDoS 防护 VPS 详解:过滤到底覆盖了什么

VPSbit DDoS still: traffic lines through a filter into a clean rack

所有套餐均免费内置 L3/L4 流量清洗;L7 洪水则需你自己限速。Core($6/月)能扛住什么,应用又该在哪里接手。

简答

所有套餐均免费内置 L3/L4 流量清洗;L7 洪水则需你自己限速。Core($6/月)能扛住什么,应用又该在哪里接手。

攻击的名字,就是网络层的名字

大多数关于 DDoS 防护的争论,量错了网络层。一面能扛住史上最大规模流量洪水的盾牌,仍可能被几千个耐心的 HTTP 连接拖垮,因为这两类攻击根本不在同一层上行走。L3/L4 洪水——SYN 风暴、UDP 放大、ACK 滥用——瞄准的是你的管道和状态表,上游清洗中心会在半路把它们吞掉。而应用层洪水则以合法请求的面目出现,任何网络过滤器都无法在不知道你应用逻辑的前提下把它们与真实用户区分开。

层的名字就是地图。HTTP 以下的任何东西,都会在单个数据包到达你的主机之前被回应:上游清洗中心把流量与容量和协议特征比对,在传输途中就把垃圾丢弃——所有端口都如此,而不只是 80 和 443。这些缓解手段既古老又成熟——RFC 4987 收录的 SYN 洪水防御方法,如今每个现代协议栈都默认内置。你无需做任何配置,就能继承这一整套成果——而这恰恰说明,搞清楚它的边界在哪里是值得的。

第 7 层则是另一回事。slowloris 把套接字保持在半开状态;API 洪水以你的端点所能承受的最快速度重放合法的签名请求;缓存击穿风暴迫使数据库为每个访客重复计算同一页面。每一个请求单独看都是合法的,所以网络会毫无保留地全部送达——一个放行合法流量的过滤器,没法拒绝看起来合法的流量。RFC 4732 对拒绝服务攻击的分类把这一点说得很直白:耗尽一台服务器的资源,几乎不需要任何带宽。

由此产生的典型误读,是把「含 DDoS 防护」的横幅当成应用层保证。它是网络层保证:管道和状态机得以存活,而一切长得像请求的东西,都归你的限速、超时和缓存管。当运营者说宕机期间「防护失效了」,事后报告通常显示是一股应用层形态的洪水从完好无损的过滤器旁边走了过去。本指南的余下部分会把这条边界画清楚,让你知道自己拥有防御的哪一半,以及下一个小时该花在哪里。

VPS $4.80* 起(年付期限),存储 1–5 TB NVMe 年付折合 $24/月起,带 IPMI 的独立服务器 $39.20/月起。加密货币账单,免 KYC。

立即启动

哪些是每个套餐自带的,哪些要另外花钱

过滤并不是挂在你的套餐上的一个功能;它是套餐所依托的网络本身的属性。对比各家目录时,这个区别很重要:按 IP 收费出售防护的主机,卖给你的是一个开关;而在上游就完成清洗的主机,压根没有开关可开。在这里,L3/L4 过滤在每台 VPS 和独立服务器 SKU 上默认启用——没有按 IP 的费用,不需要开工单,开通后也没有任何东西需要手动打开。账号本身无论怎样都还是那两样:邮箱或令牌加 12 位密码,要求与限制页面有记录。

独立服务器这条产品线还自带一层。独立服务器档位在同样的容量型过滤之外,还附带 IPMI 访问——带外电源和控制台——这正是「几分钟内自己重装一台卡死的机器」和「等支持班组来挂一个 KVM」之间的差距。在顶端,Monolith 在 25 Gbps 上行链路上为其双 EPYC 平台配备了 L3/L7 清洗器,是唯一一个把应用层清洗做进硬件、而不是留给你自己技术栈的 SKU。它之下的一切,都按设计只做网络层。

规格选择才是你决定盾牌护住什么的地方。订购 Core,$6/月(年付 $4.80/月),过滤与最大独立服务器档位完全相同——套餐买的是算力,网络带来的是盾牌。Core 配备不限流量的 1 Gbps 端口、4 GB DDR5 和 80 GB NVMe,对一个躲在过滤器后面的服务来说绰绰有余。如果负载面向 Web 且比较脆弱,先把差价花在 CDN 上,再考虑更大的端口。

这里容易出的问题是:以为自带的防护层会跟着你走出这个平台。清洗存在于本网络的传输链路上——把同一台服务器搬去一家便宜主机,就是在事件进行中、在最糟糕的时刻把它搬出了过滤器。第二个错误是把 Monolith 的清洗器当成给一个博客上独立服务器的理由;对小站的诚实解法是限速加缓存。平台的一半已经画完,下一个变量是你真正能改的那个:你的端口能承载多少干净流量。

端口速度就是你干净流量的天花板

不限流量端口听起来像一条无限粗的管道,而正是这种理解在洪水来临时错得离谱。「不限流量」的意思是没人统计你的字节数;天花板仍然是端口本身,而真正重要的天花板是干净流量——上游过滤器丢完垃圾之后剩下的带宽。当攻击把剩余容量打满时,用户照样超时,哪怕每一个恶意包都已被丢弃。这就是为什么选端口是一个缓解决策,而不是一个计费细节。预留值、突发值和仪表盘在这里量到的都是错误的量;真正起作用的数字,是上游过滤器忙于清洗时,端口还能服务多少合法需求。

目录里的阶梯很短。入门 VPS 套餐配备不限流量 1 Gbps;Prime 升到 2.5 Gbps;Titan 跑 10 Gbps;独立服务器档位从 Forge 的 1 Gbps 到 Monolith 的 25 Gbps。这些数字是流量真正抵达主机时的最坏情况天花板。容量型攻击在上游就死了,落到端口上的是残余——但一个容量超过你链路的决心攻击者,仍能从地球上任何地方把一台 1 Gbps 的服务打黑,这也是为什么容量同时是一个架构问题。

两个杠杆能改变这道算术。第一个是位置:地图覆盖十二个位置,机房的互联质量——阿姆斯特丹的 AMS-IX、法兰克福的 DE-CIX、香港的 HKIX——决定了在垃圾到达你的端口之前,上游层级能吸收多少。第二个是应用的暴露面:一个带社区白名单的游戏服务器,比一套默认安装的 WordPress 呈现的面窄得多,所以同一个端口对一种负载能撑过更长的攻击者名单,对另一种则不然。

典型的错误是在攻击进行中给套餐升配,而不是把 HTTP 挪到 CDN 后面。更大的端口按倍数抬高天花板;站点前面的缓存则让洪水彻底失去意义,而且比升配便宜。为合法增长买容量,不要为攻击者的算术买容量。管道诚实地定了尺寸,下一个要定尺寸的,是追踪你的服务接受的每一条连接的那张表——而它住在内核里。

状态表才是真正的前线

廉价的攻击瞄准的是内存,不是带宽。你的服务器追踪的每一条 TCP 连接都占用内核内存,而一场永远完不成握手的 SYN 风暴会迫使协议栈把半开条目一直攥着直到超时清理,所以一个规模不大的僵尸网络就能耗尽一台为桌面机设定的默认值。真正打倒大多数小规模攻击的,不是管道打满,而是状态耗尽——内核是靶子,内核也是你调优的地方。好消息是,Linux 把所有相关的旋钮都放在同一个目录里。

这些旋钮都在 /proc/sys/net/ 下面。连接追踪器受 nf_conntrack_max 限制;SYN 积压队列由 tcp_max_syn_backlog 决定;应用能申请到的监听队列上限则受 net.core.somaxconn 约束。SYN cookies——tcp_syncookies——让协议栈在不存储每连接状态的情况下回应风暴,tcp(7) 手册在调优变量旁边记录了这项技术。在攻击到来之前把队列调大,因为在攻击中调整,会和洪水争夺你正想保护的同一颗 CPU。

调的顺序和数值同样重要。先把 somaxconn 设成与应用监听积压队列真正请求的值一致,再把 tcp_max_syn_backlog 和 nf_conntrack_max 提到内存负担得起的数字——一台 4 GB 的 VPS 舒舒服服装得下几十万条追踪条目,带 ECC 的独立服务器则能装下几百万条。在一次测试洪水期间,盯着 /proc/sys/net/netfilter/ 下的计数器,你会看到哪张表先被填满;那张表,而不是带宽曲线,才是这次事件真正的主线。

经典的失败是:内核调得很宽,身后的应用却用默认积压队列在监听——多余的连接完成了握手,然后在用户态堆积,瓶颈变成了工作线程池,而不是内核。两侧都调,否则调优只是表演。同一个思路还有更老的表亲:BSD 上的 pf 在 pf.conf 里把它表达为状态限制,每台商业防火墙都是同一概念加一张许可证。内核容量敲定之后,剩下还会到达的洪水,穿着的都是你自己用户的衣服。

应用层形态的洪水,以及回应它们的限制

一个能匹配你流量画像的攻击者,对任何网络过滤器都天然隐形——过滤器的职责就是放行合法请求,而这些正是合法请求。回应它们的,是运行在你应用内部的第二面更薄的盾:速率限制、连接上限和超时,让滥用的「耐心」付出代价。这些都不需要新基础设施;需要的是一个下午的配置,以及偶尔拒绝一个像机器人一样行为了一小时的真人的决心。

nginx 把这个形态表达得很清楚。limit_req_zone 指令定义一个按键计算的速率——比如每 IP 每分钟请求数——limit_req 在每个 location 上强制执行;limit_conn 限制来自同一地址的并发连接数。官方模块文档两者都覆盖,包括让限流不至于像一堵墙的 burst 和 delay 参数。同样的模式处处存在:Apache 的 mod_reqtimeout 通过对写了一半的请求设置超时,关掉 slowloris 的窗口。这套机制故意做得无聊——一个计数器加一个裁决。

缓存的位置免费替你干一半的活。RFC 9111 规定的 HTTP 缓存,让一个生成出来的页面回答一万名读者,把缓存击穿洪水转化成一个你实际能定的容量问题。把缓存放在前面,给个性化内容标上短寿命,曾经打到数据库的洪水就死在边缘。WordPress 运营者应该把 xmlrpc.php 和登录端点列为最先限速的对象,因为攻击者最先练手的就是它们。

当负载长出了 VPS 的边界——一个有真实客户的 API、一个无法容忍缓存陈旧的社区——出口就是带带外控制的独立服务器。按牌价 $49(年付合 $39.20)购入 Forge 独立服务器:IPMI 让你从浏览器重装一台卡死的机器,而不是开工单,2 x 1 TB NVMe 阵列也能装下更大的热数据集。要避免的错误是把限制调得太紧,让真实用户触发它们;先记录一周的裁决,再把上限设在你观察到的合法峰值之上。这条边界,正是收缩暴露面的起点。

收窄你呈现给世界的面

最便宜的缓解不是过滤器——而是更少的敞开的门。每一个监听中的服务,都是一个攻击者可以打满、探测或登录的地址,而大多数服务器运行的服务远多于应用所需。在为容量花钱之前,先盘点真正面向互联网的东西;一个 VPN 端点或躲在社区白名单后面的游戏服务器,呈现的面比默认安装窄得多,而窄面会让洪水失去它们赖以生效的「合法伪装」。

从一份诚实的清单开始。ss -tlnp 列出每一个监听中的套接字;拿它和应用真正需要的对比,关掉其余的。用 nftables 或 ufw default deny incoming 对入站默认拒绝,然后一次只重开一个服务所需的端口,并记录每个端口存在的理由。尽可能把管理面移出公众视野——绑定在 localhost 上的数据库无法从外部被打满,只能经 VPN 隧道访问的管理界面,是消除一整类暴露面,而不只是缩小它。

独立服务器有一个 VPS 租户没有的选项:一个与生产完全不共享网络路径的管理面。IPMI 坐在自己的接口上,所以生产可以被防火墙收到只剩几个端口,而出问题时控制台仍然可达——这笔取舍在VPS 与独立服务器对比中有概述。正是这种分离,让白名单游戏服务器和 VPN 端点在独立服务器上表现出色——公共暴露面就是两三个 UDP 端口,端口背后的状态机由运营者自己定尺寸,而不是由一份为笔记本电脑写的默认值文件定。

常见的错误是「卫生表演」:在防火墙里关了端口,服务却仍然绑在 0.0.0.0 上;或者加固了 SSH,同一个盒子上却有个没打补丁的面板在监听。每次部署之后都重跑 ss -tlnp,而不是只在装机时跑一次,因为服务会随时间慢慢把口子重新开开。暴露面的收缩与本指南的其他一切相互放大——更小的面,需要更少的过滤、更少的队列和更少的缓存。最后一类负载把这个思路推到逻辑极致:那些以主动吸引互联网噪音为职责的服务。

Tor 出口节点及其他「磁铁型」负载

最吵闹的负载恰恰最需要盾牌,而它们享受的条款与其他一切相同。一个 Tor 出口中继继承的是它所汇总的整张网络的天然敌意——扫描器、反射尝试和顺手打来的洪水会落在它头上,无论有没有人真的想攻击运营者。过滤在这里同样随套餐走;变化的是手续,因为一个按设计就会招来投诉的角色,需要按申请开通并附上滥用联系邮箱。中继角色,是本页其余所有论断的压力测试。

出口角色是一个申请,不是产品开关:你提出申请、附上滥用联系邮箱,然后机器就会像其他服务器一样带着过滤交付。Tor Project 的文档讲解了软件侧出口运营者的责任;平台侧则始终平淡——不限流量的传输、不记录载荷或访客流量、连接元数据在 24 小时内过期。位置选择的逻辑与任何隐私相关负载一致:冰岛和瑞士带有公开的溢价(+20% / +35%)以及塑造投诉处理方式的法律。

在机器本身上,torrc 是收窄面的地方。一个缩减过的 ExitPolicy 缩小中继愿意承载的端口范围,AccountingMax 限制每日字节预算,控制端口保持只绑在 localhost 上、外部什么也够不着。一个只处理少数端口范围的出口,呈现的面远窄于全量出口,而你拒绝的每一个端口,都是一类永远不会到来、也就不会被投诉的滥用。

这里容易翻车的地方:开了一个中继却不附滥用联系邮箱,然后才发现平台的滥用流程无处可路由。这个邮箱不是摆设——它是投诉流入的地址,一个没有附邮箱就开通的中继,招来的恰恰是你想避免的人工处理。这也是平台承诺的诚实边界:过滤器保护中继,机房所在地的法律管辖投诉,其余一切由你的配置管辖。是时候按顺序把这些零件组装起来了。

DDoS 防护 VPS:按这个顺序执行

先给你打算运行的服务分类,因为分类决定下游的一切。带白名单的游戏服务器、VPN 端点和 WordPress 博客面对的洪水形态截然不同,而目录用同一套过滤回应这三者。配置套餐、计费周期和十二个位置之一,支付加密货币账单,大约一分钟后 VPS 装载完成,L3/L4 过滤已经启用——没有开关可找,也没有工单要开。

在第一个真实用户到来之前,加固内核。把 nf_conntrack_max、tcp_max_syn_backlog 和 somaxconn 提到内存负担得起的数值,启用 SYN cookies,并确认应用的监听积压队列与你刚刚拓宽的队列一致。然后用 ss -tlnp 盘点监听者,入站默认拒绝,只重开服务所需的端口。这十五分钟的工作,决定了那些挺过上游清洗的容量型残余——你的机器能自己扛掉多少。

接下来,把应用层形态的防御就位。定义一个 limit_req_zone,设好 limit_conn 上限,收紧读取和头部超时,在一切渲染昂贵的东西前面放缓存;如果暴露面只有 Web,HTTP 前面的一层 CDN 能把请求洪水变成缓存命中。收紧之前先记录一周的裁决,让你设的限制反映真实用户而不是猜测。这是 DDoS 防御中平台无法替你做的那一半,也正是决定 L7 结局的那一半。

然后按残余流量定尺寸。对照服务真正需要的干净流量,检查你的套餐所带的端口——入门 1 Gbps,Monolith 最高 25 Gbps——并记住更大的端口是为增长买的,不是为攻击买的。如果负载会招来针对性打击,优先选择窄面:白名单、缩减的出口策略,或者管理面藏进 VPN。独立服务器的话,第一天就验证 IPMI 访问,让卡死的机器成为你自己的一次重装,而不是一张工单。

最后,演练。对限制做负载测试,检视过滤器在测试期间记录了什么,把这份顺序写在你会真的去看的地方。顺序是:分类、开通、加固内核、约束应用、为管道定尺寸、收窄暴露面、演练。一套你从未执行过的防御只是一张图,不是防御;而洪水,是第一次翻手册的最糟时机。

DDoS 防护真的是自带的,不是加价卖的?

是的——L3/L4 过滤在每台 VPS 和独立服务器 SKU 上默认启用,没有按 IP 的费用,也不需要开工单申请。唯一反向的例外是 Monolith 的 L3/L7 清洗器:这是唯一一个把应用层清洗做进 25 Gbps 上行链路本身的档位。

过滤会不会误伤我的正常用户?

容量型清洗是统计性的,并在上游调优,所以浏览器、API 和游戏客户端都能无感通过。它无法判断的是应用层形态的滥用:slowloris 或看似合法的 API 洪水,归你的限速、超时和缓存管,不归网络管。

Tor 出口节点也有 DDoS 防护吗?

有,与其他任何服务器条款相同,而且出口节点吸引的环境噪音几乎比任何负载都多。出口按申请开通并需附上滥用联系邮箱,因为这个角色按设计就会产生投诉,而那个邮箱正是投诉路由的去处。

如果攻击还是把我的服务打满了怎么办?

过滤器能保住管道和状态表,但模仿真实用户的 L7 洪水仍可能耗尽应用。检查连接限制、加缓存、把 HTTP 挪到 CDN 后面,以及在独立服务器档位上——机器卡死时用 IPMI 自己重装。

攻击进行中可以升级过滤容量吗?

没有可以在攻击中途购买的过滤升级,因为清洗是网络的属性,不是套餐功能。你能改的是自己这一侧:提高内核队列上限、放宽或收紧应用层限制,或者在事件进行期间把 HTTP 挪到 CDN 后面。

准备启动?

配置主机 — VPS、存储或裸金属服务器 — 设置密码,支付随后生成的账单。