Skip to content

Chapter 9.9: 访问控制 ​


摘要: 配置谁可以连接你的 DayZ 服务器、封禁如何工作、如何启用远程管理,以及 mod 签名验证如何阻止未授权内容。本章涵盖服务器运营者可用的所有访问控制机制。


目录 ​


通过 serverDZ.cfg 进行管理员访问 ​

serverDZ.cfg 中的 passwordAdmin 参数设置服务器的管理员密码:

cpp
passwordAdmin = "YourSecretPassword";

此密码有两种使用方式:

  1. 游戏内 -- 打开聊天并输入 #login YourSecretPassword 以获得该会话的管理员权限。
  2. RCON -- 使用 BattlEye RCON 客户端通过此密码连接(见下面的 RCON 部分)。

保持管理员密码长且唯一。拥有此密码的任何人都可以完全控制运行中的服务器。


ban.txt ​

ban.txt 文件位于你的服务器根目录中。它每行包含一个玩家 UID:

kBmDmSc4S3uVuKAJsBZTrh-jLWNJ3eX0_VsT2eXyV1Y=
DCV63zXcS_oWzPfED-PWAJVnJ3wOQ4_jE4WnZdfBkW8=
  • 每行是一个 44 位字符的 DayZ 玩家 UID -- 而不是 17 位的 SteamID64。你可以在 *.ADM 和 *.RPT 日志中找到玩家的 UID。
  • 你可以在同一行使用 // 前缀在 ID 之后添加注释,或在单独的注释行中添加。
  • UID 出现在此文件中的玩家在加入时被拒绝连接。
  • 是否使用 ban.txt 可以通过 serverDZ.cfg 中的 disableBanlist 切换(默认 false)。
  • 你可以在服务器运行时编辑此文件;更改在下次连接尝试时生效。

whitelist.txt ​

whitelist.txt 文件位于同一服务器根目录中。当你启用白名单时(serverDZ.cfg 中的 enableWhitelist = 1),只有 UID 列在此文件中的玩家才能连接:

kBmDmSc4S3uVuKAJsBZTrh-jLWNJ3eX0_VsT2eXyV1Y=
DCV63zXcS_oWzPfED-PWAJVnJ3wOQ4_jE4WnZdfBkW8=

格式与 ban.txt 相同 -- 每行一个 44 位字符的玩家 UID,可选带 // 注释。

白名单适用于私人社区、测试服务器或需要受控玩家列表的活动。


BattlEye 反作弊 ​

BattlEye 是集成在 DayZ 中的反作弊系统。其文件位于服务器目录内的 BattlEye/ 文件夹中:

文件用途
BEServer_x64.dllBattlEye 反作弊引擎二进制文件
beserver_x64.cfg配置文件(RCON 端口、RCON 密码)
bans.txtBattlEye 特有的封禁(基于 GUID,不是 SteamID)

BattlEye 默认启用。你使用 DayZServer_x64.exe 启动服务器,BattlEye 自动加载。要显式禁用它(不推荐用于生产环境),在 serverDZ.cfg 中设置 BattlEye = 0;。

BattlEye/ 文件夹中的 bans.txt 文件使用 BattlEye GUID,这与 SteamID64 不同。通过 RCON 或 BattlEye 命令发出的封禁会自动写入此文件。


RCON(远程控制台) ​

BattlEye RCON 让你无需在游戏中即可远程管理服务器。在 BattlEye/beserver_x64.cfg 中配置:

RConPassword yourpassword
RConPort 2305

BattlEye 没有固定的默认 RCON 端口 -- 如果你省略 RConPort,它会监听一个随机端口。请显式设置它。推荐值是游戏端口加 3,因此运行在端口 2302 的服务器为 2305。它不得与游戏端口或 Steam 查询端口冲突。

可用的 RCON 命令 ​

命令效果
kick <player> [reason]将玩家从服务器踢出
ban <player> [minutes] [reason]封禁玩家(写入 BattlEye bans.txt)
say -1 <message>向所有玩家广播消息
#shutdown正常关闭服务器
#lock锁定服务器(不接受新连接)
#unlock解锁服务器
players列出已连接的玩家

你使用 BattlEye RCON 客户端连接到 RCON(有多个免费工具可用)。连接需要 IP、RCON 端口和 beserver_x64.cfg 中的密码。


签名验证 ​

serverDZ.cfg 中的 verifySignatures 参数控制服务器是否检查 mod 签名:

cpp
verifySignatures = 2;
值行为
0禁用 -- 任何人可以携带任何 mod 加入,不进行签名检查
2完全验证 -- 客户端加载的所有 mod 必须有有效签名(默认)

在生产服务器上始终使用 verifySignatures = 2。设为 0 允许玩家携带修改过的或未签名的 mod 加入,这是严重的安全风险。


keys/ 目录 ​

服务器根目录中的 keys/ 目录保存 .bikey 文件。每个 .bikey 对应一个 mod,告诉服务器"此 mod 的签名是可信的。"

当 verifySignatures = 2 时:

  1. 服务器检查连接客户端加载的每个 mod。
  2. 对于每个 mod,服务器在 keys/ 中查找匹配的 .bikey。
  3. 如果缺少匹配的密钥,玩家被踢出。

你在服务器上安装的每个 mod 都附带一个 .bikey 文件(通常在 mod 的 Keys/ 或 Key/ 子文件夹中)。你将该文件复制到服务器的 keys/ 目录中。

DayZServer/
├── keys/
│   ├── dayz.bikey              <- 原版(始终存在)
│   ├── MyMod.bikey             <- 从 @MyMod/Keys/ 复制
│   └── AnotherMod.bikey        <- 从 @AnotherMod/Keys/ 复制

如果你添加了新 mod 但忘记复制其 .bikey,运行该 mod 的每个玩家在连接时都会被踢出。


游戏内管理工具 ​

在聊天中使用 #login <password> 登录后,你可以访问管理工具:

  • 玩家列表 -- 查看所有已连接玩家及其 SteamID。
  • 踢出/封禁 -- 直接从玩家列表中移除或封禁玩家。
  • 传送 -- 使用管理地图传送到任何位置。
  • 管理日志 -- 服务器端的玩家操作日志(击杀、连接、断开连接),写入配置目录中的 *.ADM 文件。
  • 自由摄像机 -- 从你的角色脱离并在地图上飞行。

这些工具内置在原版游戏中。第三方 mod(如 Community Online Tools)显著扩展了管理功能。


常见错误 ​

这些是服务器运营者最常遇到的问题:

错误症状修复
keys/ 中缺少 .bikey玩家加入时被踢出,显示签名错误将 mod 的 .bikey 文件复制到服务器的 keys/ 目录
在 ban.txt 中使用 SteamID64 而不是玩家 UID封禁不起作用使用 44 位字符的玩家 UID,每行一个(允许 // 之后的注释)
RCON 端口冲突RCON 客户端无法连接确保 RCON 端口未被其他服务使用;检查防火墙规则
生产环境中 verifySignatures = 0任何人可以携带篡改过的 mod 加入在任何面向公众的服务器上设为 2
忘记在防火墙中开放 RCON 端口RCON 客户端超时在防火墙中开放 RCON UDP 端口(你用 RConPort 设置的端口,例如 2305)
用玩家 UID 编辑 BattlEye/ 中的 bans.txt封禁不起作用BattlEye 的 bans.txt 使用 GUID,不是 UID;使用服务器根目录中的 ban.txt 进行基于 UID 的封禁

Released under CC BY-SA 4.0 | Code examples under MIT License