保护 Project Zomboid 服务器免受 DDoS 攻击
一台独立的 Project Zomboid 服务器真正需要哪些端口,servertest.ini 里哪些指令要紧,为什么连接时的 Mod 比对会让服务器变得可攻击,以及攻击规模到什么程度就只能靠服务器前面的网络过滤。
想为 Project Zomboid 服务器做好 DDoS 防护,首先得知道攻击者到底往哪里打。一台独立服务器只占用两个 UDP 端口,16261 和 16262,而且两个都必须对公网开放,否则谁也进不来。本文按照真出事时才管用的顺序来讲:先是您在接下来十分钟里不花额外费用就能自己做的事,然后是这些措施在技术上到哪里为止,最后是服务器前面的网络里必须发生什么。
本文所有内容针对运行在 Debian 12、Debian 13、Ubuntu 22.04 LTS 或 Ubuntu 24.04 LTS 上的独立服务器(SteamCMD 应用编号 380870),Build 41 和 Build 42 都适用。配置文件名为 servertest.ini,位于 ~/Zomboid/Server/,世界数据位于 ~/Zomboid/Saves/Multiplayer/。命令以 root 身份书写,普通用户请在前面加上 sudo。
如果攻击正在进行:现在不要改动 servertest.ini,也不要重启服务器。请先保存测量数据(第 9 节),攻击结束后这些数据就没有了。重启还会额外搭上服务器加载世界所需的时间,而这正是攻击者想从您这里拿走的东西。
Project Zomboid 服务器为什么会成为 DDoS 攻击的目标
Project Zomboid 是一款角色永久死亡、世界会持续存在好几个月的游戏。在危险局面进行到一半时掉线,在这里的代价比几乎任何其他类型都大:角色没了,而世界会记住这件事。正因如此,一次宕机才成了武器。晚上 8 点的一次攻击打的不是随便哪些玩家,而是一个固定的社群,而且恰好打在他们最舍不得失去的地方。
再加上攻击本身既不花钱也不需要本事。按次购买的攻击服务,在圈内叫 booter 或 stresser,点几下就能针对一个 IP 地址和一个端口发动,而在 Project Zomboid 上目标永远是同一个:16261 UDP。谁要是跟一个被封禁的玩家有过节,或者在经营一个竞争的社群,手里就有了这样一件既不需要知识、也花不了多少钱的工具。
还有一点,游戏服务器必须公开自己的地址。servertest.ini 里写着 Public=true 时,服务器就会出现在游戏自带的浏览器里,而接入了 Steam 的服务器本来就能在 Steam 服务器浏览器里看到。所以问题从来不是攻击者能不能找到您的 IP 地址,而只是他往上打的时候会发生什么。
技术上最难受的一点留在最后:全部游戏流量都走 UDP。UDP 没有可以强制要求的连接建立过程,每个数据包都自成一体,而且源地址可以伪造。因此攻击者既不必进入您的服务器,也不必正确地跟它对话,就能制造负载。DDoS 攻击具体是什么,请看文章 什么是 DDoS 攻击?。
Project Zomboid 服务器真正需要哪些端口
一台独立的 Project Zomboid 服务器正好需要两个开放端口:16261 UDP 和 16262 UDP。游戏官方的端口清单里没有第三个。在 servertest.ini 中它们是两条分开的指令,第二个端口不会自动从第一个推导出来:
DefaultPort=16261
UDPPort=16262
SteamPort1=8766
SteamPort2=8767
RCONPort=27015
RCONPassword=
分工很明确。16261 UDP 承载游戏流量和连接建立,并回答服务器浏览器的查询。16262 UDP 是客户端直连用的端口。缺了第一个,谁也找不到服务器;缺了第二个,您的玩家看得见条目却仍然进不来。游戏里最有名的那条报错信息,说 16262 端口没有开放,正是由此而来。
| 端口 | 协议 | 用途 | servertest.ini 中的指令 | 是否应对公网开放 |
|---|---|---|---|---|
| 16261 | UDP | 游戏流量、连接建立、回答服务器浏览器的查询 | DefaultPort=16261 |
是,必须 |
| 16262 | UDP | 客户端直连 | UDPPort=16262 |
是,必须 |
| 8766 和 8767 | UDP | 服务器的 Steam 接入 | SteamPort1、SteamPort2 |
否,官方必需清单里只有 16261 和 16262 |
| 27015 | TCP | RCON 远程控制 | RCONPort=27015 |
否,仅限您自己的地址 |
| 22 | TCP | 操作系统的 SSH 访问 | 不在 servertest.ini 中 | 受限开放 |
有两点经常出问题。第一,每个服务器实例都需要两个空闲的 UDP 端口。在同一台机器上再跑第二个世界的人,要为它另分一对,例如 16274 和 16275,并把两个值都写进第二个实例的 servertest.ini。第二,SteamPort1 和 SteamPort2 在配置文件里写着 8766 和 8767,但它们属于 Steam 接入,不属于游戏流量。只有在您的服务器不开它们就不出现在 Steam 列表里时才开放,不要为了以防万一先开着。
在花钱之前,您自己能做的事
这一节最长,而且是故意的。配置干净的服务器能靠自己扛住小型和中型攻击,无论它放在谁那里。它替不了您挡下流量型攻击,但能让廉价的攻击打不出效果,也能让您在真出事时手里有数字,而不是猜测。
1. 清点:到底有什么在监听
在写下第一条规则之前,先看清楚您的服务器对外提供了什么。不要猜,要查:
ss -lntup
要看的是本地地址那一列。0.0.0.0:16261 和 [::]:16261 表示“整个互联网都能访问”,127.0.0.1:27015 表示“仅本机”,不需要放行。请把结果和您的配置对一遍,而不是指望默认值:
grep -E "^(DefaultPort|UDPPort|SteamPort1|SteamPort2|RCONPort|Public|Open|MaxPlayers|MaxAccountsPerUser)=" ~/Zomboid/Server/servertest.ini
从外面做一次端口扫描,就能看到攻击者眼中的样子。因为 Project Zomboid 只用 UDP,所以必须做 UDP 扫描,纯 TCP 扫描根本看不到游戏端口:
nmap -Pn -sU -p 16261,16262,8766,8767 YOUR.SERVER.IP.ADDRESS
nmap -Pn -p- --min-rate 1000 YOUR.SERVER.IP.ADDRESS
2. 只让 16261 和 16262 对外开放
对外两条放行就够了,其余的要么收紧,要么干脆不公开。用 UFW 的写法如下,而且顺序必须完全照此执行,以免把自己关在门外:
ufw allow 22/tcp comment "SSH"
ufw allow 16261/udp comment "Project Zomboid"
ufw allow 16262/udp comment "Project Zomboid 直连"
ufw allow from 203.0.113.10 to any port 27015 proto tcp comment "RCON"
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
请把 203.0.113.10 换成您自己的地址。启用防火墙时的顺序决定了您会不会把自己关在门外。包含自救办法的完整说明见文章 设置 UFW 防火墙而不把自己关在门外。万一真的发生了:KernelHost 的 KVM 根服务器和独立服务器可以通过客户中心里的 VNC 控制台进入系统,它独立于虚拟机自身的网络运行。
关于数据库和附加服务一句话:Project Zomboid 一个都不需要。除游戏之外还在 0.0.0.0 上监听的东西,要么来自早先的安装,要么来自某个管理面板,它们该绑定到 127.0.0.1 上,或者直接关掉。
3. 把 27015 端口上的 RCON 从公网上撤下来
RCON 是服务器的远程控制,在 Project Zomboid 上运行在 27015 TCP 上。出厂的 servertest.ini 里写着 RCONPassword=,没有值。要用 RCON 的人请设一个长的随机密码,因为这个协议是明文传输的,而一个能被访问到、密码又弱的 RCON 端口会把服务器整个交出去,连一个攻击数据包都不需要。
安全的做法是根本不对外开放这个端口,而是通过 SSH 端口转发访问它。之后您在本地跟 127.0.0.1:27015 通信:
ssh -N -L 27015:127.0.0.1:27015 root@YOUR.SERVER.IP.ADDRESS
不需要 RCON 的人,把密码字段留空,端口保持关闭。一个访问不到的服务,既没法被逐个试密码,也没法被灌包。
4. 按源地址限制数据包速率
对付小型攻击和不讲究的机器人,按源地址设上限就有效。因为两个游戏端口正好相邻,一条覆盖这一段的规则就够了:
iptables -I INPUT -p udp --dport 16261:16262 -m hashlimit --hashlimit-name pz_udp --hashlimit-mode srcip --hashlimit-above 400/sec --hashlimit-burst 600 -j DROP
iptables -L INPUT -n -v
这条规则在同一个源地址持续每秒发出超过 400 个数据包时就丢弃 UDP 包。这个值是起始值,不是真理:30 名玩家聚在同一座城市的服务器,产生的流量明显多于 4 名玩家分散在地图各个角落的服务器,而设得太严会把自己的玩家踢出去。请先在正常运行状态下测一周,再把上限设成峰值的若干倍。
还有两点提示。纯 iptables 规则在重启后就没了,在 Debian 和 Ubuntu 下这样保存:
apt-get install -y iptables-persistent
netfilter-persistent save
在 UFW 下,这类规则应写进 /etc/ufw/before.rules,否则下一次 ufw reload 时就会消失。请用 iptables -L INPUT -n -v 里的命中计数器检查规则到底有没有被匹配到。计数器一直是零,说明它放错了位置。
5. 给连接跟踪减压
一个常被忽视的瓶颈在内核里。连接跟踪连 UDP 也会按源地址和端口各建一条记录,而使用伪造源地址的洪水攻击几秒钟就能把这张表填满。表一满,服务器连正常的数据包也会丢弃,日志里会出现“nf_conntrack: table full”。当前数量和上限用这条命令查看:
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
Project Zomboid 的游戏流量不需要状态跟踪,因为 UDP 本来就没有状态。所以您可以把两个游戏端口从这张表里排除出去:
iptables -t raw -I PREROUTING -p udp --dport 16261:16262 -j NOTRACK
这能明显给内核减压。要注意:只有在服务器直接收到这些数据包时这条规则才合适。如果前面还有一层地址转换,例如在带端口映射的容器环境里,就不能设它,否则返回方向的数据包就对不上了。
6. 加固加入流程和槽位
下面这些行不花一分钱,而且对所有走正规加入途径进来的东西都有效:
Password=A-LONG-RANDOM-PASSWORD
Open=false
MaxAccountsPerUser=1
MaxPlayers=32
DenyLoginOnOverloadedServer=true
Password 是共用的服务器密码,和单个玩家的账号是分开的。Open=false 表示只有管理员事先建好的账号才能加入,这就是游戏自带的白名单。MaxAccountsPerUser 限制单个 Steam 用户在您的服务器上能建多少个账号,默认值 0 表示不限。MaxPlayers 出厂值是 32,文档明确警告超过这个数会出现地图加载不良和失同步。
PingLimit 在这里是个陷阱。这条指令会把延迟超过给定毫秒数的玩家踢出去,出厂值是 0,即关闭。在攻击之下,最先升高的是您自己玩家的延迟,因此定得太紧恰好会踢掉您想留住的人。请把这个上限关掉,或者设得宽松些。
还有一点必须清楚:白名单保护的是您的游戏逻辑,不是您的线路。灌包的攻击者根本不想加入。他的数据包会被拒绝,但它们已经到了,而这才是关键。
7. 连接时的 Mod 比对是您服务器最贵的一秒
Project Zomboid 在连接时检查的不只是一个密码。服务器的 Mod 列表写在 servertest.ini 的两行里:WorkshopItems 里是数字形式的 Steam 创意工坊 ID,Mods 里是各个 Mod 的加载 ID,两者都用分号分隔。加入时客户端会比对这份列表,自动通过 Steam 补下缺少的创意工坊内容,然后才开始接收世界数据。此外,DoLuaChecksum=true 时服务器还会比对游戏文件的校验和,并把文件与自己不一致的客户端踢出去。
对攻击者来说恰恰是这一点有意思,因为这些活都发生在真正参与游戏之前。每一次连接尝试都要让服务器为版本、校验和、Mod 列表和地图数据花掉计算时间,最后被拒绝的那一次也一样。Mod 列表越长,每一次尝试就越贵。因此连接洪水攻击在重度改造的服务器上比在原版服务器上更有效,而它需要的带宽只是流量型攻击的一小部分。游戏本身自带两个刹车:
DenyLoginOnOverloadedServer=true
LoginQueueEnabled=true
LoginQueueConnectTimeout=60
DenyLoginOnOverloadedServer 在服务器过载时拒绝新的登录,而不是把正在进行的这一局也一起拖垮。LoginQueueEnabled 让加入者排队,而不是同时处理,LoginQueueConnectTimeout 规定一次加入最多允许多长时间,默认 60 秒,允许的范围是 20 到 1200。
有一个细节必须一起讲,因为它经常被用错误的方式解决:Linux 服务器上有一个已被记录在案的缺陷,DoLuaChecksum 会误报,把玩家挡在外面。运营者因此把这项检查关掉。这可以理解,但也去掉了一道用来挡住游戏文件被改过的客户端的关卡。必须关掉它的人,服务器密码、白名单和账号数量上限就要设得更严。
8. 服务器列表、UPnP 和自己的地址
这里值得实话实说,而不是自我安慰:您的 IP 地址保不了密。Public=true 会让服务器出现在游戏自带的浏览器里,而按照文档,接入了 Steam 的服务器本来就能在 Steam 服务器浏览器里看到。所以 Public=false 只是让新玩家看不到您,并不能让您隐身。
Public=true
PublicName=我的 Zomboid 服务器
UPnP=false
server_browser_announced_ip=
UPnP 出厂值是 true,会让服务器尝试自己在互联网网关上开一个端口映射。在一台租用的服务器上并没有这样的网关,这个尝试注定落空,应该关掉。server_browser_announced_ip 保持为空,除非您的服务器有多个地址、并且要指定用其中一个对外出现。以后改用专用防护 IP 时,您又会用到这个字段。
两个习惯比任何设置都管用。不要自己在任何地方公布裸的 IP 地址,Discord 频道里不要,项目网站上也不要,而是给玩家一个主机名。换地址时最经典的坑是旧的 DNS 记录:一条指向旧地址、被遗忘的 A 记录会让任何更换都失去意义。
9. 在一切正常时先做测量
最重要的一步是几乎没人事先做的那一步:在一切都平静的时候先建立基线。没有正常值,事后您就说不清每秒 4 万个数据包是很多,还是就是个普通的周六晚上。用 apt-get install -y vnstat sysstat 让测量常驻运行。事件发生时四条命令就够了:
sar -n DEV 1 10
ip -s link show eth0
tcpdump -ni eth0 "udp port 16261 or udp port 16262" -c 200 -q
journalctl -u zomboid --since "-15 min" | tail -50
前两条显示接口的数据包速率和丢包计数器,第三条是流量的一小段抽样,第四条是服务器自己的消息,前提是它作为 systemd 服务运行(请把服务名改成您自己的)。用 tcpdump 时有一条铁律:一定要用 -c 限制数量,满载状态下抓包会让本来已经过载的服务器更吃力。如何解读这些数值,见 在服务器上识别 DDoS 攻击。
这些措施到哪里为止:带宽和数据包速率
现在说没有任何配置文件能解决的那一部分。前面所有措施都跑在您的服务器上,也就是线路的末端。防火墙规则处理的是已经跑过网线的数据包。您可以把它丢弃,但没法让它没被发出来。
算一下就清楚了。一台典型的游戏服务器挂在 1 Gbit/s 上,也就是每秒 125 兆字节,只要有人发得比这更多,线路就满了。第二个量是数据包速率,而它往往比带宽更早出事:在 64 字节的小包情况下,1 Gbit/s 里能装进每秒约 149 万个数据包,而普通的服务器内核视 CPU 和网卡而定,只处理其中几十万个就会开始丢包。所以一次连您线路三分之一都没占满的攻击,照样能让您的服务器瘫掉。运营者的体验是“负载根本不高,可是什么都没了”。
| 指标 | 数值 |
|---|---|
| 1 Gbit/s 换算成字节 | 每秒 125 兆字节 |
| 64 字节时 1 Gbit/s 里能装进的数据包 | 每秒约 149 万个 |
| 服务器内核能处理其中多少 | 每秒几十万个 |
| 针对社群游戏服务器的常见攻击规模 | 5 到 50 Gbit/s |
| KernelHost 过滤过的、打向一台游戏服务器的 UDP 洪水攻击 | 超过 112.2 Gbit/s |
| KernelHost 服务器上有记录的最大攻击 | 超过 473.4 Gbit/s,每秒超过 4150 万个数据包 |
针对游戏服务器社群的常见攻击在 5 到 50 Gbit/s 之间,也就是一条普通线路的五倍到五十倍。对此没有任何本地设置可用。流量型攻击必须在服务器前面的网络里就被终结。
KernelHost 用什么应对针对游戏服务器的 DDoS 攻击
每台服务器都标配的持续防护
KernelHost 的 DDoS 防护分两级,持续生效,您不需要开启、订购或配置任何东西:
- 第 1 级:全球清洗网络中 17 Tbps 的清洗能力。流量型攻击在靠近来源的地方就被清洗掉,不会到达数据中心。
- 第 2 级:法兰克福的 Arbor 实时过滤,容量 3.2 Tbps。就在服务器前面,逐个数据包地识别并丢弃与协议相关的攻击特征。
有两点是关键。防护持续运行,不需要先对攻击做出反应,所以开头不会有服务器失联的那几分钟。而且不使用黑洞路由:您的 IP 地址留在网络里,被丢弃的只有恶意数据包。把 IP 地址从网络里撤下来的做法,对您而言和攻击者达到的结果一样。哪些游戏和协议在覆盖范围内,见 实时游戏服务器 DDoS 防护。
针对长期被攻击项目的 Advanced DDoS Protection
有些项目不是偶尔被打,而是被有针对性地连打几周。为此有 Advanced DDoS Protection,每月 50.00 欧元起,PrePaid 预付费,没有最低合约期,也没有开通费。区别不在于容量更大,而在于控制权:
- 专用防护 IP,来自法兰克福的核心网络,您的服务器会在我们自己的网络内切换到它。您这边不需要做任何改造,只要把新地址写到您玩家找服务器的那个地方就行。
- 按端口和协议自行管理的防护规则,就在客户中心里:您规定 16261 和 16262 UDP 上允许什么,其余一律保持关闭,而且不用为此写工单。
- 改动实时生效,因此您可以在攻击进行时随时调整。
- 与应用匹配的防护策略。常见游戏有现成的策略,经过修改的程序和自研程序则由您自己按端口和协议设置规则。Project Zomboid 在这里格外容易精确圈定,因为全部游戏流量都走两个相邻的 UDP 端口。
两级防护对比
| 对比项 | 标配的 DDoS 持续防护 | Advanced DDoS Protection |
|---|---|---|
| 价格 | 包含在每个服务器套餐中,不额外收费 | 每月 50.00 欧元起,PrePaid 预付费 |
| 过滤能力 | 17 Tbps 全球清洗,加上法兰克福 3.2 Tbps 的 Arbor 实时过滤 | 同样的两级过滤 |
| IP 地址 | 您服务器本身的 IP 地址 | 额外的专用防护 IP |
| 规则集 | 自动防护策略,无需配置 | 在客户中心里按端口和协议设置自己的规则 |
| 变更 | 自动跟进 | 实时生效,攻击进行时也可以 |
| 黑洞路由 | 否 | 否 |
| 合约期 | 与服务器套餐绑定 | PrePaid 预付费,没有最低合约期,没有退订通知期,也没有开通费 |
对大多数 Project Zomboid 服务器来说,标配的持续防护配上干净的配置就够了。Advanced DDoS Protection 针对的是有人把这件事当成私人恩怨的情况。
常见错误及解决办法
“我的玩家收到提示,说 16262 端口没有开放”:这不是攻击,而是少了一条放行。服务器需要两个端口,16261 UDP 和 16262 UDP,而且必须是 UDP 规则。在同样的端口号上放行 TCP 没有任何作用。请用 ufw status verbose 以及从外面做一次 UDP 扫描,确认两个端口真的都开着。
“我换了 IP 地址,两个小时后又掉线了”:攻击者拿到新地址的渠道和拿到旧地址的一样,多半是列表条目、一个带状态显示的 Discord 机器人,或者一条旧的 DNS 记录。在 Project Zomboid 上换地址还有额外代价:客户端会把地图数据按地址和端口存在本地,目录名形如 123.45.0.12_16261_...,位于 Zomboid/Saves 下。换过之后,每个玩家都要重新从服务器下载已探索过的地图。所以换地址是有额外代价的拖延时间,不是解决办法。
“我的 iptables 规则不起作用”:常见原因有三个。规则排在 UFW 的链后面,永远轮不到它;规则在上次重启后就没了(这时用 netfilter-persistent save,或者写进 /etc/ufw/before.rules);或者攻击是流量型的,而规则在一条已经满了的线路上正常工作。请用 iptables -L INPUT -n -v 检查命中计数器是否在增长。
“玩家在加入时被踢出去,服务器本身却照常运行”:这几乎总是比对的问题,不是攻击。原因可能是客户端和服务器的版本不一致、缺少或过期的创意工坊条目,或者校验和不匹配。客户端通常会指出哪些 Mod 不一致。请把 WorkshopItems 和 Mods 一行一行对过去。
“每隔几分钟就有延迟尖峰,然后又好了”:这是短时攻击的常见样子,它只打到玩家被烦得不玩为止。请先看网络计数器,不要看 CPU 负载。如果 sar -n DEV 1 10 和丢包计数器都没有异常,那就不是攻击,而是负载:同一个地图单元格里玩家太多、某个开销很大的 Mod,或者留给 Java 实例的内存太少。
“我原来的主机商把我的 IP 地址封了”:那就是黑洞路由。主机商用它保护自己的网络,对您来说结果和一次成功的攻击完全一样,而且通常在攻击结束后还要持续几个小时。有疑问时请直接问清楚:是过滤还是黑洞路由。这个答案对您可用性的影响,比任何硬件参数都大。
“我在 tcpdump 里看不到任何异常”:如果流量已经在前面的网络里被过滤掉了,服务器上当然就什么都收不到。这在过滤正常工作时是常态。反过来说:线路一旦被打满,您甚至可能连用来测量的那条 SSH 会话都进不来。这时请使用客户中心里的 VNC 控制台。
要点总结
- 一台独立的 Project Zomboid 服务器正好需要两个开放端口:16261 UDP(
DefaultPort)和 16262 UDP(UDPPort)。两者在servertest.ini中是分开的指令。 - RCON 运行在 27015 TCP 上,出厂配置里登记的密码是空的。这个端口不该暴露在公网上,而应限制到您自己的地址,或者干脆关闭。
- 连接时的 Mod 比对是最贵的一环:版本、校验和、创意工坊列表和地图数据都要花计算时间,每一次被拒绝的尝试也一样。
DenyLoginOnOverloadedServer和登录队列就是针对它的内置刹车。 - 服务器密码、
Open=false和MaxAccountsPerUser=1保护的是游戏逻辑。面对一条被打满的线路,这些设置一个都不起作用。 - 物理上限是定死的:1 Gbit/s 等于每秒 125 兆字节,在 64 字节包大小时约为每秒 149 万个数据包。针对游戏服务器的常见攻击在 5 到 50 Gbit/s。
- 流量型攻击必须在服务器前面的网络里就被终结。在 KernelHost,这是全球清洗网络中 17 Tbps 的清洗能力,加上法兰克福 3.2 Tbps 的 Arbor 实时过滤,不额外收费,也不使用黑洞路由。
- 长期被攻击的人可以用 Advanced DDoS Protection 自己掌控过滤:专用防护 IP、按端口和协议的规则、改动实时生效,每月 50.00 欧元起。
如果您的服务器已经放在 KernelHost,过滤就已经在工作,您什么都不用做。若仍然发现异常,请开一个 支持工单,以便为您的 IP 地址调整过滤规则。攻击正在进行时,您还可以通过 WhatsApp 紧急聊天联系我们:+43 650 8209883。
常见问题
我的 Project Zomboid 服务器刚刚离线了。这是 DDoS 攻击吗?
运行一台 Project Zomboid 服务器需要开放哪些端口?
16262 端口是做什么的,为什么我的客户端报告它没有开放?
我需要 8766 和 8767 端口吗?
Project Zomboid 的 RCON 端口 27015 有风险吗?
为什么连接时的 Mod 比对会让服务器变得可攻击?
现在赶紧换 IP 地址有用吗?
我能用 UFW 或 iptables 抵挡 DDoS 攻击吗?
攻击到多大规模,我的服务器就撑不住了?
在 KernelHost,我的服务器会在攻击期间离线吗?
KernelHost 的 DDoS 防护要额外付费吗?什么时候需要 Advanced DDoS Protection?
2026 KernelHost GmbH。保留所有权利。本教程受著作权法保护,未经我们书面同意,不得在其他网站上转载,节选转载或改写后转载同样不被允许。欢迎在注明出处并附上链接的前提下引用。

