保护 DayZ 服务器免受 DDoS 攻击
一台 DayZ 服务器真正需要哪些端口,如何加固 Steam 查询端口、BattlEye RCon、登录队列以及重启之后的启动阶段,以及攻击规模到什么程度就只能靠服务器前面的网络过滤。
一台 DayZ 服务器如果在晚上游戏进行到一半时把所有玩家踢下线,接着又从服务器浏览器里消失好几分钟,问题很少出在硬件上。多数情况下是有人正在攻击,而且时间恰好选在玩家最多的时候,或者恰好赶上计划好的重启。所以想为 DayZ 服务器做好 DDoS 防护,两件事都需要:服务器上干净的端口放行,以及服务器前面网络里的过滤。本文先讲您不花额外费用就能自己加固的部分,然后讲这些措施在技术上到哪里为止,最后讲服务器前面必须发生什么。
本文所有内容针对使用 serverDZ.cfg 的自有 DayZ 独立服务器,无论它跑在 Windows Server 上,还是通过兼容层跑在 Debian 和 Ubuntu 上。Bohemia Interactive 并没有为 Stable 分支提供可用于生产环境的原生 Linux 服务器程序,实验性的 Linux 构建只接受实验性客户端。Linux 命令以 root 身份书写,普通用户请在前面加上 sudo。
如果攻击正在进行:现在不要改动 serverDZ.cfg,也不要重启服务器。DayZ 重启会重新加载 Mod 和中央经济系统,要花掉好几分钟,而这几分钟里服务器一定是离线的。请先保存测量数据(见“记录日志”一节),攻击结束后这些数据就没有了。
DayZ 服务器为什么经常成为 DDoS 攻击的目标
DayZ 身上集中了好几个特点,使一台服务器成为称手的目标。第一,社区服务器会自己公开地址:为了出现在游戏内置的服务器浏览器和 DZSA Launcher 里,它必须回答 Steam 查询,而这个回应里明文包含 IP 地址和端口。所以攻击者不需要查出任何东西,他只需要读一份列表。
第二,一台 DayZ 服务器的作息是公开的。几乎所有项目都每三到四小时自动重启一次,用聊天消息提前通知,并把时间表写进 Discord。正好落在这个时间窗口里的攻击有双重效果:服务器本来就刚好不可用,而卡在等待界面上的玩家会转去别处。
第三,玩家的投入很高。在 DayZ 里,一次时机不巧的宕机不只是让人窝火,而是丢掉的装备、中断的突袭,以及一座毫无防护地留在世界里的基地。正因如此,被封禁的玩家、结仇的团伙和竞争项目是最常见的幕后主使。通过常见的 booter 服务发动一次攻击,既不需要什么本事,也花不了多少钱。
第四,DayZ 的全部流量都走 UDP。UDP 没有可以强制要求的连接建立过程,源地址也可以伪造。因此攻击者既不必进入您的服务器,也不必正确地跟它对话,就能制造负载。连厂商自己都受影响,2025 年 2 月就是例子:Bohemia Interactive 为 DayZ 和 Arma Reforger 提供的在线服务被 DDoS 攻击打了一个多星期,2025 年 2 月 3 日得到确认,到 2025 年 2 月 6 日仍未结束,社区服务器也一同受到影响。DDoS 攻击具体是什么,请看文章 什么是 DDoS 攻击?。
DayZ 服务器的端口:事实表
DayZ 服务器只说 UDP,没有 TCP 游戏端口。在 DayZ 上真正固定下来的唯一数值是作为游戏端口的 2302/UDP,其余都可以配置,而且随主机商不同而不同。所以请查看您自己的启动命令行和您自己的 serverDZ.cfg,不要指望某个默认值。
| 端口 | 协议 | 用途 | 设置位置 | 是否对公网开放 |
|---|---|---|---|---|
| 2302 | UDP | 游戏端口,包含语音传输在内的全部游戏流量 | 启动命令行中的 -port=2302 |
是 |
| 2303 到 2305 | UDP | 游戏端口之上被引擎一并占用的端口段 | 由 -port 推导得出 |
通常是 |
| 2305 或 27016 | UDP | Steam 查询端口:在服务器浏览器和 DZSA Launcher 里的条目 | serverDZ.cfg 中的 steamQueryPort |
是,否则服务器不可见 |
| 可自由选择,常见 2305 或 2310 | UDP | BattlEye RCon,供 BEC 或 DaRT 这类管理工具使用 | BEServer_x64.cfg 中的 RConPort |
否 |
| 22 | TCP | 操作系统的 SSH 访问 | sshd_config |
仅限您自己的地址 |
| 3389 | TCP | Windows 服务器上的远程桌面 | 系统设置 | 否 |
| 8080 和 2022 | TCP | 游戏面板的网页界面和 SFTP,这里以 Pterodactyl 为例 | 面板配置 | 否 |
有两个数值经常引起混乱,所以这里说清楚。Steam 查询端口:Bohemia 随附的示例配置写的是 steamQueryPort = 2305;,而很大一部分主机商使用 27016/UDP。两个值都有效,唯一起决定作用的是您文件里的那个值。BattlEye RCon 端口:这里根本没有强制标准。流传很广的经验法则是游戏端口加三,也就是 2305,另一些主机商设成 2310。从 DayZ 1.13 起,BattlEye 会可靠地读取 BEServer_x64.cfg 中的 RConPort 参数,在那之前这个端口很难预测。
由此产生一个很多运营者都会踩的坑:绝对不要把 steamQueryPort 和 RConPort 设成同一个值。如果您的配置把 2305 用于 Steam 查询,RCon 就该放到另一个端口上,例如 2310。
为什么 Steam 查询端口是最脆弱的端口
Steam 查询端口回答三种查询:A2S_INFO、A2S_PLAYERS 和 A2S_RULES。A2S_INFO 返回服务器名称、地图、玩家数和版本,A2S_PLAYERS 返回已连接玩家的名字,A2S_RULES 返回设置好的服务器变量。这些回应中的每一个都明显大于触发它的请求,而这正是这个端口双重危险的原因。
对作为目标的您来说,这意味着:攻击者每个请求只用几个字节就能让您的查询端口忙起来,而您的服务器每次都要组装并发出一份完整的回应。对第三方来说,这意味着:攻击者可以用伪造的源地址查询您的服务器,把回应引向他真正的目标。这时您的服务器不只是受害者,还是放大器。正因如此,Valve 在 2020 年 12 月为 A2S_INFO 增加了一次挑战值查询:服务器先回一个随机数,提问方必须把它送回来。这削弱了放大效果,但没有终结它,因为远不是每一次查询都走这条路。
DayZ 在这里有一个别的游戏没有的特点:向您发起查询的是两份互相独立的服务器列表,一份是内置的社区服务器浏览器,另一份是流传很广的 DZSA Launcher。所以把查询端口直接关掉不是一个选项,因为那样您的项目会同时从两份列表里消失,尽管直连仍然能用。正确的答案是限速,而不是封禁。
在花钱之前,您自己能做的事
这一节最长,而且是故意的。配置干净的 DayZ 服务器能靠自己扛住小型和中型攻击,无论它放在谁那里。
1. 清点:您的 DayZ 服务器到底开了哪些端口
在写下第一条防火墙规则之前,先看清楚您的服务器对外提供了什么。不要猜,要查。在 Linux 下:
ss -lnup
ss -lntup
在 Windows Server 上,命令提示符给出同样的画面:
netstat -ano -p UDP | findstr "2302 2303 2304 2305 27016"
要看的是本地地址那一列。0.0.0.0:2302 表示“整个互联网都能访问”,127.0.0.1:2310 表示“仅本机”,不需要放行。接着请直接从您的配置文件里读出真实数值,而不要依赖某篇教程:
grep -iE "steamQueryPort|maxPlayers|password|enableWhitelist|verifySignatures" serverDZ.cfg
grep -iE "RConPort|RestrictRCon" battleye/BEServer_x64.cfg
攻击者眼中的样子,由一次从外面、用另一台机器执行的 UDP 端口扫描给出:
nmap -Pn -sU -p 2302-2310,27015-27020 YOUR.SERVER.IP.ADDRESS
2. 只放行启动命令行和 serverDZ.cfg 真正需要的端口
DayZ 对外只需要两项放行:游戏端口段和查询端口。其余都限制到您自己的地址上,或者干脆不要对外公开。用 UFW 的写法如下,而且顺序必须完全照此执行,以免把自己关在门外:
ufw allow 22/tcp comment 'SSH'
ufw allow 2302:2305/udp comment 'DayZ 游戏端口'
ufw allow 27016/udp comment 'DayZ Steam 查询'
ufw allow from 203.0.113.10 to any port 2310 proto udp comment 'BattlEye RCon'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
请把 203.0.113.10 换成您自己的地址,把 27016 换成您 steamQueryPort 那一行里真正写着的值。包含自救办法的完整说明见 设置 UFW 防火墙而不把自己关在门外。在 Windows 服务器上原则相同:每个端口组一条入站规则,远程桌面限制到自己的地址,其余全部封掉。
3. 限制 Steam 查询端口,而不是把它关掉
按源地址设一个上限,就能把真正的服务器列表和查询洪水攻击区分开。服务器浏览器以秒为间隔查询您,攻击者以毫秒为间隔:
iptables -I INPUT -p udp --dport 27016 -m hashlimit --hashlimit-name dayz_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 2302 -m hashlimit --hashlimit-name dayz_game --hashlimit-mode srcip --hashlimit-above 600/sec --hashlimit-burst 900 -j DROP
第一条规则丢弃来自同一来源、持续每秒超过十次的 Steam 查询,第二条丢弃每秒超过 600 个的游戏数据包。这两个数字都是起始值,不是真理。一台有 60 名玩家的满员服务器产生的数据包比空服多得多,设得太严会把自己的玩家踢出去,或者让自己从服务器列表里掉下去。请先在正常运行状态下测一周。
纯 iptables 规则在重启后就没了。在 Debian 和 Ubuntu 下这样保存:
apt-get install -y iptables-persistent
netfilter-persistent save
在 UFW 下,这类规则应写进 /etc/ufw/before.rules,否则下一次 ufw reload 时就会消失。此外 Steam 的服务器库自带一个针对无连接数据包的刹车:只要某个地址在 200 毫秒的窗口内发来的 A2S 包超过设定值,环境变量 STEAM_GAMESERVER_RATE_LIMIT_200MS 就会把这个地址的全部 A2S 包丢弃。
第三点完全不花钱:如果您的 Discord 机器人或项目网站显示在线人数,请不要让每位访客各自去查询服务器,而是按固定间隔把结果缓存下来。这样一个访问量很大的状态页面每个间隔只产生一次查询,而不是每位访客一次。
4. 把 BattlEye RCon 从公网上撤下来
BattlEye 是 DayZ 的反作弊组件,在 serverDZ.cfg 中用 BattlEye = 1; 开启。远程管理则放在一个单独的文件里,也就是 BattlEye 目录中与 BEServer_x64.dll 并列的 BEServer_x64.cfg,这个目录由启动命令行中的 -BEpath= 指定:
RConPassword ALongRandomPassword
RConPort 2310
RestrictRCon 0
为此有三条规则。第一,RCon 端口是 UDP,不是 TCP。一条不小心写成 proto tcp 的防火墙规则什么都过滤不到,同时还让管理工具跑空。第二,请把这个端口限制到管理员的地址上。没有固定地址的人,就把这个端口从外面完全封掉,直接在服务器上运行管理工具,通过 SSH 或远程桌面进去。第三,RestrictRCon 1 会限制可通过 RCon 执行的命令,一旦有不止一个人拥有访问权,这就是正确的设置。
一个开放的 RCon 端口同时是两样东西:一份逐个试密码的邀请,以及又一个可以被灌包的 UDP 端口。只要放行范围缩小到少数几个地址,这两样就都没了。
5. 登录队列、白名单和槽位耗尽
DayZ 不会同时处理所有连接,而是通过一个队列来处理。serverDZ.cfg 中有五个值控制它:
maxPlayers = 60;
loginQueueConcurrentPlayers = 5;
loginQueueMaxPlayers = 100;
guaranteedSlots = 10;
maxPing = 200;
loginQueueConcurrentPlayers 规定同时被放进来的玩家数(默认 5),loginQueueMaxPlayers 限制队列本身(常见值在 100 到 500 之间)。槽位耗尽正是从这里下手:攻击者不需要带宽,他只需要足够多的账号或连接尝试来占住队列。真正的玩家于是再也进不来,尽管服务器在技术上运行得完好无损。guaranteedSlots 为您的团队保留位置,让您在正是这种局面下还能自己上服。
对付这种情况,内置的白名单有用。它用 enableWhitelist = 1; 激活,随后读取文件 profiles/whitelist.txt,每行一个 Steam64 ID。任何没有列入的 ID 在连接时都会被拒绝。这个文件在服务器启动时读入,因此改动需要重启一次。serverDZ.cfg 里额外设一个 password 效果类似,但更弱,因为密码会被转手传开,而 Steam64 ID 不会。
有一点必须清楚:白名单保护的是您的玩家位置,不是您的线路。灌包攻击您服务器的人根本不想进服。他的数据包会被拒绝,但已经到达了,而这才是关键。
6. Mod、签名校验和重启之后的时间窗口
在 DayZ 上,Mod 不只是个舒适度话题,它们是攻击面的一部分。serverDZ.cfg 中有四个设置无论如何都该设上:
verifySignatures = 2;
forceSameBuild = 1;
allowFilePatching = 0;
BattlEye = 1;
verifySignatures = 2 会用对应的 .bisign 签名校验每一个 PBO 文件,为此需要 keys 目录中配套的 .bikey 文件。forceSameBuild = 1 要求客户端的游戏版本与服务器完全一致。allowFilePatching = 0 拒绝以改动过的游戏文件启动的客户端。这些设置没有一个能挡住流量型攻击,但这三条都堵住了经过改动的客户端把您服务器搞乱的那条路。
第二点更重要,而且几乎总被忽略:启动阶段。DayZ 服务器启动时先从启动命令行加载它的 Mod 列表,然后加载带全部战利品表的中央经济系统。在一台重度改装的服务器上,这轻易就是好几分钟,而这几分钟里服务器对任何一次 Steam 查询都不作回应:
./DayZServer -config=serverDZ.cfg -port=2302 -profiles=./profiles -BEpath=./battleye -mod=@CF;@YourMod;@AnotherMod -cpuCount=4 -dologs -adminlog -netlog -freezecheck
因为几乎每个项目都每三到四小时重启一次,还把这个计划公布出去,所以对攻击者来说这个时间窗口太容易踩准了。有三个对策有效,而且不花钱。把 Mod 列表尽量控制得短,每多一个 Mod 都会延长正好这个窗口。把重启时间放在不整的时刻,而不是整点。还有,实测一次您的启动到底要多久,不要估计:设上 timeStampFormat = "Full"; 和一个 logFile,之后日志里就有这个时长。
7. 连接跟踪、接收缓冲区和内核参数
一个常被忽视的瓶颈是内核的连接跟踪。UDP 虽然没有连接,内核仍然会为每一对源地址和目标地址建立一个条目。表一满,服务器连正常的数据包也会丢弃,日志里会出现“nf_conntrack: table full”。当前数量和上限用这条命令查看:
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
对一台纯游戏服务器来说,干净的解决办法是干脆不去跟踪游戏流量,另外把网卡的接收缓冲区和队列加大:
iptables -t raw -A PREROUTING -p udp --dport 2302 -j NOTRACK
iptables -t raw -A OUTPUT -p udp --sport 2302 -j NOTRACK
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.rmem_default=1048576
sysctl -w net.core.netdev_max_backlog=5000
sysctl -w net.netfilter.nf_conntrack_max=524288
注意:NOTRACK 和带状态的规则互相排斥。把游戏端口从跟踪中排除的人,就不能再为这个端口使用带 -m conntrack --ctstate 的规则,否则放行就不再生效。要长期有效,sysctl 的值应放进 /etc/sysctl.d/,否则下次重启后就没了。
8. 您的 IP 地址就写在服务器浏览器里
这里值得诚实,而不是想当然:一台公开 DayZ 服务器的 IP 地址是保不住密的。每个连过一次的玩家都知道它,服务器浏览器把它公布出去,DZSA Launcher 还会把它缓存下来。换地址给您争取到的是几小时,很少有几天。
更有效的是两个习惯。不要在别处额外公布裸的 IP 地址,也就是不要写在置顶的 Discord 帖子里,也不要放在项目网站上。还要清理您的 DNS 记录:一条指向前一个地址、被遗忘的 A 记录会让任何更换都失去意义,而大多数更换正是败在这上面。谁要是在旧服务器上还留着一个状态服务,就等于把新地址也一起告诉了别人。
9. 记录日志,让您在攻击中不必猜
最重要的一步是几乎没人事先做的那一步:在一切正常的时候先建立基线。没有正常值,事后您就说不清每秒 4 万个数据包是很多,还是就是个普通的周六晚上。在服务器一侧,为此请打开内置的日志:
timeStampFormat = "Short";
logAverageFps = 300;
logPlayers = 300;
logFile = "server_console.log";
其中 logAverageFps 是 DayZ 给出的最诚实的数值。如果服务器帧率下降而玩家数不变,那是 Mod 或经济系统的问题。如果帧率保持稳定而玩家不断掉线,那问题在网络上。在系统一侧,用 apt-get install -y vnstat sysstat 让测量常驻运行,事件发生时四条命令就够了:
sar -n DEV 1 10
ip -s link show eth0
dmesg -T | tail -50
tcpdump -ni eth0 udp port 2302 -c 200 -q
用 tcpdump 时有一条铁律:一定要用 -c 限制数量,满载状态下抓包会让本来已经过载的服务器更吃力。如何解读这些数值,见 在服务器上识别 DDoS 攻击。
自我防护到哪里为止:带宽和数据包速率
现在说没有任何配置文件能解决的那一部分。前面所有措施都跑在您的服务器上,也就是线路的末端。防火墙规则处理的是已经跑过网线的数据包。您可以把它丢弃,但没法让它没被发出来。
| 指标 | 数值 | 这对您的 DayZ 服务器意味着什么 |
|---|---|---|
| 典型游戏服务器的接入带宽 | 1 Gbit/s | 每秒 125 兆字节,再多线路就满了 |
| 64 字节包大小时的数据包速率 | 1 Gbit/s 里约为每秒 149 万个数据包 | 普通的服务器内核只能处理其中的几十万个 |
| 针对游戏服务器项目的常见攻击规模 | 5 到 50 Gbit/s | 是您接入带宽的五到五十倍 |
| KernelHost 服务器上过滤过的峰值 | 超过 473.4 Gbit/s,每秒超过 4150 万个数据包 | 在这个量级上任何本地设置都不再起作用 |
| KernelHost 上针对一台游戏服务器过滤过的 UDP 洪水攻击 | 超过 112.2 Gbit/s | 必须在服务器前面的网络里就被终结 |
| serverDZ.cfg 中 maxPlayers 的默认值 | 60 | 您自己每秒数据包的正常值必须自己测,它随项目而异 |
在 DayZ 上,数据包速率常常比带宽先出事,原因很简单:游戏流量由很多小的 UDP 包组成,而不是少数几个大包。所以一次连您线路的三分之一都填不满的攻击,仍然可能让您的服务器瘫掉,因为算力都花在丢包上了。运营者的体验是“负载根本不高,可是所有人都有延迟尖峰,一个接一个被踢下线”。
流量型攻击必须在服务器前面的网络里就被终结。这不是产品说法,而是物理。
DayZ 的 DDoS 防护:KernelHost 用什么来应对
每台服务器上都在运行的持续防护
KernelHost 的 DDoS 防护分两级,持续生效,您不需要开启、订购或配置任何东西:
- 第 1 级:全球清洗网络中 17 Tbps 的清洗能力。流量型攻击在靠近来源的地方就被清洗掉,不会到达数据中心。
- 第 2 级:法兰克福的 Arbor 实时过滤,容量 3.2 Tbps。就在服务器前面,逐个数据包地识别并丢弃与协议相关的攻击特征。
有两点是关键。防护持续运行,不需要先对攻击做出反应,所以开头不会有服务器失联的那几分钟。而且不使用黑洞路由:您的 IP 地址留在网络里,被丢弃的只有恶意数据包。把 IP 地址从网络里撤下来的做法,对您而言和攻击者达到的结果一样。哪些游戏和协议在覆盖范围内,见 实时游戏服务器 DDoS 防护。
针对长期被攻击项目的 Advanced DDoS Protection
有些项目不是偶尔被打,而是被有针对性地连打几周。为此有 Advanced DDoS Protection,每月 50.00 欧元起,PrePaid 预付费,没有最低合约期。区别不在于容量更大,而在于控制权:
- 专用防护 IP,来自法兰克福的核心网络,您的服务器会在我们自己的网络内切换到它。您这边不需要做任何改造。
- 按端口和协议自行管理的防护规则,就在客户中心里:您可以分别设置 2302/UDP 上允许什么、查询端口上允许什么、RCon 端口上允许什么。在 DayZ 上,正是这种区分才是抓手,因为游戏流量和查询流量看起来完全不同。
- 改动实时生效,因此您可以在攻击进行时随时调整,而不用等一张工单。
- 与具体游戏匹配的防护策略,同样适用于重度改装的服务器,以及任意 TCP 或 UDP 端口上的自研程序。
两级防护对比
| 对比项 | 标配的 DDoS 持续防护 | Advanced DDoS Protection |
|---|---|---|
| 价格 | 包含在每个服务器套餐中,不额外收费 | 每月 50.00 欧元起,PrePaid 预付费 |
| 过滤能力 | 17 Tbps 全球清洗,加上法兰克福 3.2 Tbps 的 Arbor 实时过滤 | 同样的两级过滤 |
| IP 地址 | 您服务器本身的 IP 地址 | 额外的专用防护 IP |
| 规则集 | 自动防护策略,无需配置 | 在客户中心里按端口和协议设置自己的规则 |
| 变更 | 自动跟进 | 实时生效,攻击进行时也可以 |
| 游戏策略 | 针对常见游戏的优化策略,DayZ 也在其中 | 与游戏匹配的策略,也适用于重度改装的服务器 |
| 黑洞路由 | 否 | 否 |
| 合约期 | 与服务器套餐绑定 | PrePaid 预付费,没有最低合约期,没有退订通知期,也没有开通费 |
对大多数 DayZ 项目来说,标配的持续防护配上干净的服务器配置就够了。Advanced DDoS Protection 针对的是有人把这件事当成私人恩怨的情况。目前把 DayZ 服务器放在别处的人无法后加这套防护:它是网络的一部分,只对放在 KernelHost 的服务器生效。通往它的路是迁移,而不是一个附加产品。
常见错误及解决办法
“我的服务器从 DZSA Launcher 和服务器浏览器里消失了,但直连还能进”:多数情况下这不是攻击,而是查询端口。要么 steamQueryPort 里的值和防火墙里的不一致,要么过严的速率限制把服务器列表的查询丢掉了。在怀疑有攻击之前,请先把这两个值对照一遍。
“自从我过滤了端口,RCon 就连不上了”:BattlEye RCon 走 UDP。在同一个端口上用 proto tcp 放行什么用也没有。另外请检查 RConPort 和 steamQueryPort 是不是不小心设成了同一个值。
“我换了 IP 地址,两小时后又离线了”:攻击者拿到新地址的来源和旧地址一样,多半是服务器浏览器、某个 Discord 状态机器人,或者一条旧的 DNS 记录。换地址是争取时间,不是解决办法。
“攻击每天都恰好在重启时到来”:这不是巧合。重启计划写在 Discord 里,还在游戏内通知,而在 Mod 和经济系统加载的时候服务器本来就不作回应。更短的 Mod 列表、不整的重启时间,以及一套持续运行而不是等攻击来了才反应的过滤,能让这个套路失效。
“所有玩家都有延迟尖峰,可网络很平静”:那就不是 DDoS 攻击。请先看 logAverageFps,确认服务器帧率是否下降,然后再看中央经济系统和 Mod 列表。如果 sar -n DEV 1 10 没有异常,问题就不在网络上。
“我的 iptables 规则不起作用”:常见原因有三个。规则排在 UFW 的链后面,永远轮不到它;规则在上次重启后就没了(这时用 netfilter-persistent save,或者写进 /etc/ufw/before.rules);或者攻击是流量型的,而规则在一条已经满了的线路上正常工作。用 iptables -L INPUT -n -v 检查命中计数器是否在增长。如果一直是零,说明规则没有被匹配到。
“我原来的主机商把我的 IP 地址封了”:那就是黑洞路由。主机商用它保护自己的网络,对您来说结果和一次成功的攻击完全一样,而且通常在攻击结束后还要持续几个小时。有疑问时请直接问清楚:是过滤还是黑洞路由。这个答案对您可用性的影响,比任何硬件参数都大。
“我在 tcpdump 里看不到任何异常”:如果流量已经在前面的网络里被过滤掉了,服务器上当然就什么都收不到。这在过滤正常工作时是常态。反过来说:线路一旦被打满,您甚至可能连用来测量的那条 SSH 会话都进不来。这时请使用客户中心里的 VNC 控制台,它独立于客户机系统的网络运行。
要点总结
- DayZ 服务器对外只需要两样东西:从 2302/UDP 起的游戏端口段,以及您
steamQueryPort那一行里的 Steam 查询端口。其余都该受限或关闭。 - BattlEye RCon 端口没有强制标准,走 UDP,并在
BEServer_x64.cfg中用RConPort设置。它绝不该进公网,也绝不该和查询端口设成同一个值。 - 查询端口要限速,不要关闭:把它关掉的人会从服务器浏览器和 DZSA Launcher 里消失,尽管直连仍然能用。
- 白名单、
guaranteedSlots和登录队列保护的是您的玩家位置,挡得住槽位耗尽,但挡不住冲向您线路的带宽。 - DayZ 服务器最危险的时间窗口是每三到四小时一次的计划重启,因为 Mod 和中央经济系统要加载好几分钟,而这个时刻是公开的。
- 攻击量约达 1 Gbit/s,或者每秒几十万个数据包以上时,起决定作用的只有服务器前面的网络,而不再是您的防火墙。
- 在 KernelHost,两级持续防护包含在每个服务器套餐中,不额外收费,也不使用黑洞路由。当您想自己掌控按端口设置的规则时,再加上每月 50.00 欧元起的 Advanced DDoS Protection。
如果您的项目已经放在 KernelHost,过滤就已经在工作,您什么都不用做。若仍然发现异常,请开一个 支持工单,以便为您的 IP 地址调整过滤规则。攻击正在进行时,您还可以通过 WhatsApp 紧急聊天联系我们:+43 650 8209883。
常见问题
我的 DayZ 服务器刚刚离线了。怎么判断是不是 DDoS 攻击?
DayZ 服务器真正需要哪些端口?
DayZ 的 Steam 查询端口是 2305 还是 27016?
BattlEye RCon 端口在哪里设置,它该进公网吗?
DayZ 里的白名单对 DDoS 攻击有用吗?
为什么针对 DayZ 服务器的攻击常常恰好在重启时到来?
用 iptables 或 UFW 能挡住 DDoS 攻击吗?
攻击到多大规模,我的 DayZ 服务器就撑不住了?
在 KernelHost,我的 DayZ 服务器会在攻击期间离线吗?
KernelHost 的 DDoS 防护要额外付费吗?什么时候需要 Advanced DDoS Protection?
2026 KernelHost GmbH。保留所有权利。本教程受著作权法保护,未经我们书面同意,不得在其他网站上转载,节选转载或改写后转载同样不被允许。欢迎在注明出处并附上链接的前提下引用。

