保护 Arma 3 服务器免受 DDoS 攻击
Arma 3 服务器在 2302 到 2306 这五个 UDP 端口中真正需要哪些,如何加固 Steam 查询、BattlEye RCon 和 Headless Client,以及数据包速率到什么程度就只能靠服务器前面的网络过滤。
想为 Arma 3 服务器做好 DDoS 防护,要面对的正好是五个 UDP 端口:2302 到 2306。一台独立服务器如果在晚上任务进行到一半时对所有玩家同时掉线,问题很少出在硬件上。多数情况下是有人正在攻击这一段端口,而且时间恰好选在服务器列表显示玩家数最高的时候。本文先讲您不花额外费用就能自己加固的部分,然后讲这些措施在技术上到哪里为止,最后讲服务器前面的网络里必须发生什么。
本文所有内容针对运行在 Debian 12、Debian 13、Ubuntu 22.04 LTS 或 Ubuntu 24.04 LTS 上的独立 Arma 3 服务器(SteamCMD 应用编号 233780)。命令以 root 身份书写,普通用户请在前面加上 sudo。如果攻击正在进行:现在不要改动任何配置,也不要重启服务器,而是先保存“记录日志”一节中的测量数据。攻击结束后,这些数据就没有了。
Arma 3 服务器为什么会被攻击,什么时候需要 DDoS 防护
Arma 3 身上集中了好几个特点,使它的服务器成为称手的目标。第一,服务器会自己公开地址:它通过 2304 UDP 端口在 Steam 主服务器上注册,并在 2303 UDP 端口上用名称、地图、玩家数和 Mod 列表回答查询。没有这两个端口,谁也找不到您;有了它们,您的 IP 地址就会出现在每一个服务器浏览器里,以及每一个抓取服务器浏览器数据的状态页面上。
第二,玩家群体的在线时间很固定。Altis 和 Tanoa 上的 Life 角色扮演项目、Exile、Antistasi 和 King of the Hill 都是晚上和周末人最多,因此晚上 8 点的一次宕机最引人注目。第三,项目之间存在竞争,还有被封禁的玩家和内部矛盾,而发起一次攻击既不需要什么本事,也花不了多少钱。
技术上还有决定性的一点:Arma 3 完全走 UDP,游戏运行本身不需要 TCP。UDP 没有可以强制要求的连接建立过程,源地址也可以伪造。因此攻击者既不必进入您的服务器,也不必正确地跟它对话,就能制造负载。此外,Arma 3 服务器的模拟循环在核心上只跑在一个 CPU 核心上:谁发来的数据包足够多,就会吃掉这一个核心的计算时间,而且与这台机器另外还有多少核心无关。DDoS 攻击具体是什么,请看文章 什么是 DDoS 攻击?。
真正相关的那些端口
Arma 3 服务器默认占用 2302 到 2306 UDP 这一段端口。启动参数 -port=2302 只决定第一个端口,其余四个由它固定推导出来,即游戏端口加 1 到加 4。因此在同一台机器上运行多个实例时,请至少留出 100 个端口的间距(2302、2402、2502),否则实例之间会互相抢占后续端口。
| 端口 | 协议 | 用途 | 是否应对公网开放 |
|---|---|---|---|
| 2302(游戏端口) | UDP | 游戏流量和 VON,即内置的语音传输 | 是 |
| 2303(游戏端口加 1) | UDP | Steam 查询:用名称、地图、玩家数、Mod 列表和签名列表回答 A2S 查询 | 是,否则服务器浏览器里不会有条目 |
| 2304(游戏端口加 2) | UDP | Steam 主服务器:服务器在 Steam 主服务器上注册 | 是 |
| 2305(游戏端口加 3) | UDP | VON,据 Bohemia 说明为保留端口,目前未使用 | 否 |
| 2306(游戏端口加 4) | UDP | BattlEye 流量,其中包括 RCon 接口(beserver_x64.cfg 中的 RConPort) |
否,仅限您的管理员地址 |
| 2344 和 2345(出站) | TCP 和 UDP | 服务器到 arma31.battleye.com 的 BattlEye 连接 | 出站放行,入站不要开放任何端口 |
| 3306 | TCP | extDB3 使用的 MySQL,也就是各个 Life 框架的数据库连接 | 否,绑定到 127.0.0.1 |
| 22 | TCP | SSH 访问 | 否,仅限您自己的地址 |
这八行里只有三个端口应该对公网开放:2302、2303 和 2304 UDP。其余都属于管理用途,而管理端口对外开放是 Arma 3 服务器上最常见、也最容易避免的错误。
在花钱之前,您自己能做的事
这一节最长,而且是故意的。配置干净的 Arma 3 服务器能靠自己扛住小型和中型攻击,无论它放在谁那里。
1. 清点:服务器上有什么在监听?
在写下第一条规则之前,先看清楚您的服务器对外提供了什么。不要猜,要查:
ss -lntup
要看的是本地地址那一列。0.0.0.0:2302 表示“整个互联网都能访问”,127.0.0.1:3306 表示“仅本机”,不需要防火墙规则。在 Life 服务器上,除了游戏之外,这里经常还会出现 MariaDB、用于阵营网站的 Web 服务器、TeamSpeak 或其他语音服务,以及一个被遗忘的面板。从外面做一次端口扫描,就能看到攻击者眼中的样子:
nmap -Pn -sU -p 2300-2320 YOUR.SERVER.IP.ADDRESS
nmap -Pn -p- --min-rate 1000 YOUR.SERVER.IP.ADDRESS
第一条命令显示游戏的 UDP 端口段,第二条显示所有开放的 TCP 端口。Arma 3 服务器为了运行游戏,一个开放的 TCP 端口都不需要。
2. 只保留 Arma 3 真正需要的端口
对外三个 UDP 端口就够了,其余都要收紧。用 UFW 的写法如下,而且顺序必须完全照此执行,以免把自己关在门外:
ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'SSH'
ufw allow 2302:2304/udp comment 'Arma 3 游戏、Steam 查询、Steam 主服务器'
ufw allow from 203.0.113.10 to any port 2306 proto udp comment 'BattlEye RCon'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
请把 203.0.113.10 换成您自己的地址。2305 端口保持关闭,因为 Bohemia 把它列为保留且目前未使用。ufw default allow outgoing 这一行很重要:BattlEye 会从服务器向 arma31.battleye.com 建立连接,为此需要出站的 2344(TCP 和 UDP)以及 2345(TCP)。凡是把出站一律封掉的人,等于把自己的反作弊也封掉了。改完之后请真正加入一次游戏,确认 BattlEye 仍然放行您的玩家。包含自救办法的完整说明见 设置 UFW 防火墙而不把自己关在门外。
数据库在任何情况下都不该暴露在公网上。Altis Life 和其他 Life 框架通过扩展 extDB3 与 MySQL 数据库通信,而访问凭据以明文形式保存在 @extDB3/extdb3-conf.ini 中。请在 /etc/mysql/mariadb.conf.d/50-server.cnf 里确认其中写着:
bind-address = 127.0.0.1
3. 给 Steam 查询端口减压,又不从服务器浏览器里消失
2303 UDP 端口是公开 Arma 3 服务器上最脆弱的一点。它回答 A2S 查询,也就是 Steam 服务器浏览器的标准查询:A2S_INFO 返回名称、地图和玩家数,A2S_PLAYERS 返回玩家列表,A2S_RULES 返回 Mod 列表和签名列表。一次查询是一个很小的 UDP 包,回应却是它的好几倍。US-CERT 在 TA14-017A 公告中给出 Steam 协议的带宽放大系数为 5.5,而在 Arma 3 上回应格外大,因为整份 Mod 列表都会一起发出去。
由此得出两点。第一,如果攻击者用伪造的源地址发送查询,您的服务器就会被当作放大器去打别人。第二,对您来说更要紧的是:每一次查询都要消耗承载模拟的那一个核心的计算时间。Bohemia 从 2015 年起就有一个相关工单(T83469):发往游戏端口或 Steam 查询端口的伪造 UDP 包会把 CPU 推到 100%,让服务器冻住,而通过查询端口发动一次成功的攻击,4 Mbit/s 就够了。这就是为什么在 Arma 3 上数据包速率比带宽更危险。
第一个着手点是回应的大小。server.cfg 中的 steamProtocolMaxDataSize 指令规定服务器可以往查询回应里放多少字节。Mod 列表很长的运营者会把它提高到 2048 甚至更多,否则日志里会出现警告“Query data overflow, Mods/Signatures will not be correctly received by clients”。但每一次提高,都正好放大了攻击者要利用的那份回应。因此请把这个值设到 Mod 列表还能勉强容纳的最低水平,并把用不到的 Mod 从启动命令里清掉:
steamProtocolMaxDataSize = 2048;
第二个着手点是只针对查询端口、按源地址生效的速率限制。不要一刀切地封掉 2303 UDP:没有查询回应,您的服务器就会从服务器浏览器和各个状态页面上消失,新玩家再也找不到它。正规的服务器浏览器每分钟查询几次,而不是每秒几百次。
4. 把 BattlEye RCon 从公网上撤下来
BattlEye 是 Arma 3 的反作弊,在 server.cfg 中用 BattlEye = 1; 开启。与之配套的远程控制,即 BattlEye RCon,是一个独立的 UDP 协议,配置写在 BattlEye/beserver_x64.cfg 中(带 _x64 后缀的文件对应 arma3server_x64,也就是今天常用的服务器程序):
RConPassword YourAlphanumericPassword
RConPort 2306
RConIP 127.0.0.1
MaxPing 350
RestrictRCon 0
三点是关键。RCon 密码必须是纯字母数字,特殊字符会让 BattlEye 的协议解析器悄无声息地出错,而一个会静默失败的 RCon 通道,等于在关键时刻根本没有。RConIP 决定 RCon 在哪个地址上监听:写 127.0.0.1 时接口只能在本机访问,您的 RCon 工具通过 SSH 转发连上去。RConPort 必须位于游戏端口段之上,通常是游戏端口加 4,也就是 2306。必须把 RCon 对外开放的人,只为管理团队的固定地址放行这个端口。
有一点必须清楚:BattlEye 是反作弊,不是 DDoS 防护。它检查的是已经连上来的玩家。而向您的服务器灌包的攻击者根本不想进服。
5. 把 Headless Client 绑死
Headless Client(无头客户端)是第二个不带画面的 Arma 3 实例,它像玩家一样连到服务器上,替服务器承担 AI 的运算。在大型任务里,这是最重要的性能提升手段,因为 AI 否则会压在与模拟同一个核心上。它在 server.cfg 中开启:
headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};
好消息是:没有这两行,服务器根本不接受 Headless Client 连接。坏消息是:localClient[] 会给写进去的地址不受限制的带宽,并且几乎不做延迟检查。所以那里只填 127.0.0.1 或者您自己 Headless Client 服务器的固定地址,绝不要填一整个地址段。客户端用 -client -connect=127.0.0.1 -port=2302 -password=... 启动,并会占用 maxPlayers 中的一个槽位。请把这个算进去,否则您的玩家会看到一个满员的服务器。
6. 加固加入流程、签名校验和投票
这些设置保护不了您的线路,但能挡住所有走正规加入途径进来的东西:被改过的客户端、游戏内的脚本执行和投票滥用。下面这些行应该出现在每一台公开服务器的 server.cfg 里:
verifySignatures = 2;
BattlEye = 1;
kickDuplicate = 1;
allowedFilePatching = 0;
maxPlayers = 64;
disconnectTimeout = 30;
maxPing = 200;
maxDesync = 150;
maxPacketLoss = 50;
kickClientsOnSlowNetwork[] = {1, 1, 1, 1};
voteThreshold = 1.5;
voteMissionPlayers = 100;
onUnsignedData = "kick (_this select 0)";
onHackedData = "kick (_this select 0)";
verifySignatures = 2 对所有 Addon 强制执行第 2 版签名校验,是每一台带 Mod 的公开服务器的最低要求。allowedFilePatching = 0 拒绝以 -filePatching 启动的客户端加入(值为 1 时只允许 Headless Client,值为 2 时允许所有人)。kickDuplicate = 1 会把同一个标识的第二个连接踢掉。kickClientsOnSlowNetwork[] 按项决定 maxPing、maxPacketLoss、maxDesync 和 disconnectTimeout 这四个阈值只是记录(0)还是强制执行(1)。disconnectTimeout 接受 5 到 90 秒的值。voteThreshold 大于 1 会让投票永远无法通过,从而堵住不用发一个攻击包就能搅乱服务器的最常见办法:靠投票更换任务。
7. 按源地址限制数据包速率和连接速率
对付小型攻击和不讲究的机器人,按源地址设上限就有效。因为 Arma 3 走纯 UDP,所以要用 hashlimit,而且给查询端口的限制要明显比游戏端口严:
iptables -I INPUT -p udp --dport 2303 -m hashlimit --hashlimit-name a3_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 2302 -m hashlimit --hashlimit-name a3_game --hashlimit-mode srcip --hashlimit-above 900/sec --hashlimit-burst 1200 -j DROP
iptables -I INPUT -p udp --dport 2302:2306 -m length --length 0:27 -j DROP
第一条规则丢弃来自同一源地址、持续超过每秒十次的查询,第二条丢弃持续超过每秒 900 个的游戏数据包,第三条丢弃没有可用负载的 UDP 包。这三个数字都是起始值,不是真理:一台有 80 名玩家的满员 Life 服务器产生的数据包,比六个人的 Antistasi 局多得多,设得太严会把自己的玩家踢出去。请先在正常运行状态下测一周。
还有两点提示。纯 iptables 规则在重启后就没了,在 Debian 和 Ubuntu 下这样保存:
apt-get install -y iptables-persistent
netfilter-persistent save
在 UFW 下,这类规则应写进 /etc/ufw/before.rules,否则下一次 ufw reload 时就会消失。另一个常被忽视的瓶颈是内核的连接跟踪:UDP 也会在那里留下条目,而来自大量伪造地址的查询洪水攻击几秒钟就能把表填满。表一满,服务器连正常的数据包也会丢弃,日志里会出现“nf_conntrack: table full”。当前数量和上限用这条命令查看:
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
8. basic.cfg:带宽、数据包大小和附加文件
Arma 3 服务器的第二个配置文件叫 basic.cfg,用 -cfg= 加载,而 -config= 加载的是 server.cfg。它控制网络行为,其中恰好有一个值直接关系到安全:
MaxMsgSend = 1024;
MaxSizeGuaranteed = 512;
MaxSizeNonguaranteed = 256;
MinBandwidth = 15000000;
MaxBandwidth = 100000000;
MinErrorToSend = 0.001;
MinErrorToSendNear = 0.01;
MaxCustomFileSize = 0;
class sockets { maxPacketSize = 1400; };
MaxCustomFileSize 是玩家自带、并由服务器分发给其他所有人的头像和声音文件的最大字节数。值为 0 时关闭这种分发。这样就少了一条路:单个客户端不需要任何攻击设施,就能占满您服务器的带宽。MinBandwidth 是服务器假定有保障的带宽,参考值是玩家数乘以 256 kbit/s,即 64 个槽位约 16 Mbit/s。过于乐观的值会提高负载和失同步,因为服务器会产生随后又被自己丢弃的消息。MaxMsgSend 限制每个模拟步骤的数据包数量,是对付失同步的第一个着手点,默认值 128 对现代服务器来说定得太低。
9. 记录日志,让您在攻击中不必猜
最重要的一步是几乎没人事先做的那一步:在一切正常的时候先建立基线。没有正常值,事后您就说不清每秒 4 万个数据包是很多,还是就是个普通的周六晚上。用 apt-get install -y vnstat sysstat 让测量常驻运行,再在 server.cfg 里写上 logFile = "arma3server.log";,您就同时有了服务器一侧的视角。事件发生时四条命令就够了:
sar -n DEV 1 10
ip -s link show eth0
dmesg -T | tail -50
tcpdump -ni eth0 udp portrange 2302-2306 -c 200 -q
有价值的是端口之间的对比。如果负载几乎全部落在 2303 上,那是查询洪水攻击,打的是计算时间。如果它均匀分布在 2302 到 2306 上,而且源地址不断变化,那是伪造源地址的 UDP 洪水攻击,打的是线路。用 tcpdump 时有一条铁律:一定要用 -c 限制数量,满载状态下抓包会让本来已经过载的服务器更吃力。如何解读这些数值,见 识别 DDoS 攻击。服务器本身怎样干净地安装和更新,见 用 SteamCMD 安装游戏服务器。
这些措施到哪里为止
现在说没有任何配置文件能解决的那一部分。前面所有措施都跑在您的服务器上,也就是线路的末端。防火墙规则处理的是已经跑过网线的数据包。您可以把它丢弃,但没法让它没被发出来。
算一下就清楚了。一台典型的游戏服务器挂在 1 Gbit/s 上,也就是每秒 125 兆字节,只要有人发得比这更多,线路就满了。第二个量是数据包速率,而在 Arma 3 上几乎总是它先出事。在 64 字节的小包情况下,1 Gbit/s 的线路里能装进每秒约 149 万个数据包。普通的服务器内核视 CPU 和网卡而定,处理其中几十万个之后就会开始丢包,而 Arma 3 的模拟还额外挂在单独一个核心上。
| 指标 | 数值 |
|---|---|
| 默认端口段 | 2302 到 2306 UDP,运行游戏不需要 TCP |
| 查询端口 | 游戏端口加 1,默认 2303 UDP |
| RCon 端口(BattlEye) | 可通过 RConPort 自由选择,通常是游戏端口加 4,即 2306 UDP |
| 多实例时的端口间距 | 至少 100(2302、2402、2502) |
| 正常运行时的带宽参考值 | 玩家数乘以 256 kbit/s,即 64 个槽位约 16 Mbit/s |
| Steam 协议的放大系数 | 5.5,依据 US-CERT 公告 TA14-017A |
| 有记录的有效攻击下限 | 对查询端口 4 Mbit/s 就足以让一台 Arma 3 服务器冻住(Bohemia 工单 T83469) |
| 1 Gbit/s 换算成数据包 | 64 字节包大小时约为每秒 149 万个数据包 |
| KernelHost 过滤过的峰值 | 473.4 Gbit/s,每秒 4150 万个数据包,另有一次 112.2 Gbit/s 的 UDP 洪水攻击 |
4 Mbit/s 那一行最难受。在 Arma 3 上,攻击不需要大就能奏效:只要把足够多的数据包发到正确的端口上。运营者的体验是“负载根本不高,可是什么都没了”。反过来,对流量型攻击适用简单的物理:在 473.4 Gbit/s 面前,任何本地设置都毫无意义,因为您玩家的数据包在更早的地方就已经过不来了。流量型攻击必须在服务器前面的网络里就被终结。
KernelHost 用什么来应对
每台服务器都标配的持续防护
KernelHost 的 DDoS 防护分两级,持续生效,您不需要开启、订购或配置任何东西:
- 第 1 级:全球清洗网络中 17 Tbps 的清洗能力。流量型攻击在靠近来源的地方就被清洗掉,不会到达数据中心。
- 第 2 级:法兰克福的 Arbor 实时过滤,容量 3.2 Tbps。就在服务器前面,逐个数据包地识别并丢弃与协议相关的攻击特征。
有两点是关键。防护持续运行,不需要先对攻击做出反应,所以开头不会有服务器失联的那几分钟。而且不使用黑洞路由:您的 IP 地址留在网络里,被丢弃的只有恶意数据包。把 IP 地址从网络里撤下来的做法,对您而言和攻击者达到的结果一样。哪些游戏和协议在覆盖范围内,见 实时游戏服务器 DDoS 防护。
针对长期被攻击项目的 Advanced DDoS Protection
有些项目不是偶尔被打,而是被有针对性地连打几周。一台有固定玩家群体、又处在竞争环境中的 Life 服务器,属于常态而不是例外。为此有 Advanced DDoS Protection,每月 50.00 欧元起,PrePaid 预付费,没有最低合约期,也没有开通费。区别不在于容量更大,而在于控制权:
- 专用防护 IP,来自法兰克福的核心网络,您的服务器会在我们自己的网络内切换到它。您这边不需要做任何改造。
- 按端口和协议自行管理的防护规则,就在客户中心里:您可以分别设置 2302 UDP 上允许什么、2303 UDP 上允许什么,从而把查询端口管得比游戏端口严得多。
- 改动实时生效,因此您可以在攻击进行时随时调整,而不用等维护窗口。
- 与具体游戏匹配的防护策略,同样适用于任意 TCP 或 UDP 端口上经过修改的程序和自研程序。
两级防护对比
| 对比项 | 标配的 DDoS 持续防护 | Advanced DDoS Protection |
|---|---|---|
| 价格 | 包含在每个服务器套餐中,不额外收费 | 每月 50.00 欧元起,PrePaid 预付费 |
| 过滤能力 | 17 Tbps 全球清洗,加上法兰克福 3.2 Tbps 的 Arbor 实时过滤 | 同样的两级过滤 |
| IP 地址 | 您服务器本身的 IP 地址 | 额外的专用防护 IP |
| 规则集 | 自动防护策略,无需配置 | 在客户中心里按端口和协议设置自己的规则,例如 2302 和 2303 分开 |
| 变更 | 自动跟进 | 实时生效,攻击进行时也可以 |
| 游戏策略 | 针对常见游戏的优化策略 | 与游戏匹配的策略,也适用于经过修改的程序 |
| 黑洞路由 | 否 | 否 |
| 合约期 | 与服务器套餐绑定 | PrePaid 预付费,没有最低合约期,没有退订通知期,也没有开通费 |
对大多数 Arma 3 项目来说,标配的持续防护配上干净的服务器配置就够了。Advanced DDoS Protection 针对的是有人把这件事当成私人恩怨的情况。
常见错误及解决办法
“我把端口从 2302 改到 2402,攻击还在继续”:这是可以预料的。服务器会自己把新端口注册到 Steam 主服务器上,服务器列表立刻又把它公布出去。换端口只对那些拿着旧截图里旧地址的人有用。
“我把 2303 完全封掉了,现在没人找得到我们”:这正是会发生的事。Steam 查询端口不回应,服务器浏览器里就没有条目,每个状态页面和每个 Discord 机器人都会把服务器显示为离线。正确的做法是按源地址限速,而不是封禁。
“日志里写着 NetServer::SendMsg: cannot find channel”:这条提示出现在服务器想往一个已经不存在的连接写数据时。它通常伴随玩家连接中断和性能下降(Bohemia 把它记在 T83936 下),并不一定代表有攻击。请先看网卡的数据包速率到底是否异常。
“我的 iptables 规则不起作用”:常见原因有三个。规则排在 UFW 的链后面,永远轮不到它;规则在上次重启后就没了(这时用 netfilter-persistent save,或者写进 /etc/ufw/before.rules);或者攻击是流量型的,而规则在一条已经满了的线路上正常工作。用 iptables -L INPUT -n -v 检查命中计数器是否在增长。如果一直是零,说明规则没有被匹配到。
“换了新防火墙之后 BattlEye 把所有玩家都踢了”:服务器连不上 arma31.battleye.com 了。出站的 2344(TCP 和 UDP)以及 2345(TCP)必须保持放行,否则服务器的反作弊连接就会断掉。
“我原来的主机商把我的 IP 地址封了”:那就是黑洞路由。主机商用它保护自己的网络,对您来说结果和一次成功的攻击完全一样,而且通常在攻击结束后还要持续几个小时。有疑问时请直接问清楚:是过滤还是黑洞路由。这个答案对您可用性的影响,比任何硬件参数都大。
“我在 tcpdump 里看不到任何异常”:如果流量已经在前面的网络里被过滤掉了,服务器上当然就什么都收不到。这在过滤正常工作时是常态。反过来说:线路一旦被打满,您甚至可能连用来测量的那条 SSH 会话都进不来。这时请使用客户中心里的 VNC 控制台,它独立于虚拟机自身的网络运行。
要点总结
- Arma 3 服务器对外只需要三个 UDP 端口:2302 用于游戏和语音,2303 用于 Steam 查询,2304 用于在 Steam 主服务器上注册。游戏不需要 TCP。
- 2306 UDP 端口承载 BattlEye 和 RCon 接口,只应对您自己的管理员地址开放,通过
beserver_x64.cfg中的RConPort和RConIP设置。 - Steam 查询端口 2303 是最脆弱的一点:按 US-CERT TA14-017A,Steam 协议的放大系数为 5.5,而且每一次查询都要消耗承载模拟的那个核心的计算时间。要限速,不要封禁。
- 把
steamProtocolMaxDataSize控制在 Mod 列表允许的最小值,并在basic.cfg中设置MaxCustomFileSize = 0;:两者都能减少您服务器主动发出的数据量。 - 在 Arma 3 上决定胜负的是数据包速率,不是带宽。Bohemia 从 2015 年起在 T83469 中记录:对查询端口 4 Mbit/s 就足以让一台服务器冻住。
- 本地措施到线路为止。攻击流量达到 1 Gbit/s,或者每秒几十万个数据包以上时,唯一起作用的就是服务器前面网络中的过滤。
- 在 KernelHost,两级持续防护包含在每个服务器套餐中,不额外收费,自服务器开通起即生效,并且不使用黑洞路由。Advanced DDoS Protection 在此之上每月 50.00 欧元起,提供专用防护 IP 和可按端口自行管理的规则。
如果您的项目已经放在 KernelHost,过滤就已经在工作,您什么都不用做。若仍然发现异常,请开一个 支持工单,以便为您的 IP 地址调整过滤规则。攻击正在进行时,您还可以通过 WhatsApp 紧急聊天联系我们:+43 650 8209883。
常见问题
我的 Arma 3 服务器刚刚离线了。怎么判断是不是 DDoS 攻击?
Arma 3 服务器真正需要哪些端口?
可以直接封掉 Steam 查询端口 2303 吗?
什么是 Steam 查询反射攻击,它为什么会打到 Arma 3 服务器?
BattlEye 能保护我的 Arma 3 服务器免受 DDoS 攻击吗?
现在赶紧换 IP 地址或端口有用吗?
用 iptables 或 UFW 能挡住 DDoS 攻击吗?
攻击到多大规模,我的 Arma 3 服务器就撑不住了?
怎样正确地加固 Headless Client?
在 KernelHost,我的服务器会在攻击期间离线吗?
KernelHost 的 DDoS 防护要额外付费吗?什么时候需要 Advanced DDoS Protection?
2026 KernelHost GmbH。保留所有权利。本教程受著作权法保护,未经我们书面同意,不得在其他网站上转载,节选转载或改写后转载同样不被允许。欢迎在注明出处并附上链接的前提下引用。

