Chapter 9.9: 访问控制
摘要: 配置谁可以连接你的 DayZ 服务器、封禁如何工作、如何启用远程管理,以及 mod 签名验证如何阻止未授权内容。本章涵盖服务器运营者可用的所有访问控制机制。
目录
通过 serverDZ.cfg 进行管理员访问
serverDZ.cfg 中的 passwordAdmin 参数设置服务器的管理员密码:
passwordAdmin = "YourSecretPassword";此密码有两种使用方式:
- 游戏内 -- 打开聊天并输入
#login YourSecretPassword以获得该会话的管理员权限。 - 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.dll | BattlEye 反作弊引擎二进制文件 |
| beserver_x64.cfg | 配置文件(RCON 端口、RCON 密码) |
| bans.txt | BattlEye 特有的封禁(基于 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 2305BattlEye 没有固定的默认 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 签名:
verifySignatures = 2;| 值 | 行为 |
|---|---|
0 | 禁用 -- 任何人可以携带任何 mod 加入,不进行签名检查 |
2 | 完全验证 -- 客户端加载的所有 mod 必须有有效签名(默认) |
在生产服务器上始终使用 verifySignatures = 2。设为 0 允许玩家携带修改过的或未签名的 mod 加入,这是严重的安全风险。
keys/ 目录
服务器根目录中的 keys/ 目录保存 .bikey 文件。每个 .bikey 对应一个 mod,告诉服务器"此 mod 的签名是可信的。"
当 verifySignatures = 2 时:
- 服务器检查连接客户端加载的每个 mod。
- 对于每个 mod,服务器在
keys/中查找匹配的.bikey。 - 如果缺少匹配的密钥,玩家被踢出。
你在服务器上安装的每个 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 的封禁 |
