Skip to content

配置下发服务器

配置下发服务器是整套 PNC 的控制平面,负责设备绑定、在线节点缓存、管理后台和加密配置分发。

它负责什么

  • 保存机器码、设备名称和启用状态。
  • 控制是否允许新设备绑定。
  • 接收 CoreServer 的节点心跳和动态配置。
  • ClientServicePublisher 返回在线节点列表。
  • 对节点连接配置进行加密后下发。
  • 提供一个简单的 Web 管理后台。
  • 记录设备最近访问的客户端版本、最后访问时间和公网 IP。

在线节点会按 server_name.trim() 识别同一逻辑节点。CoreServer 重启后即使生成了新的 server_id、端口和令牌,只要节点名称相同,配置下发服务器会立即用新实例替换旧实例,并在进程内保留旧 server_id 到新 server_id 的兼容映射。需要并行运行多个核心节点时,请使用不同节点名称。

机器码认证

生产环境需要设置 PNC_MACHINE_CODE_SALT。这个值必须和新版 Client、ServicePublisher 构建时使用的值一致,用于解密 X-PNC-Machine-Code-Token

新版终端访问需要设备身份的接口时,会携带客户端版本、客户端类型和加密机器码 token,不再明文发送机器码。ServicePublisher 会额外携带完整组件版本和组件补丁号。旧版本的 X-Machine-Code、旧 JSON body 和旧 /machine-codes/{machine_code} 查询路径仍保留兼容。

缺失、不可解析或早于 0.4.6-beta 的客户端版本会记录为 <0.4.6-beta>

ConfigServer 自身构建版本来自根目录 pnc-version.toml,格式为 <client_version>+config.<patch>。客户端更新发布文件 versions.toml 独立维护,不由版本同步工具修改。

访问日志

设备访问后,ConfigServer 会更新数据库中的客户端版本、最后访问时间和公网 IP,并在管理后台设备表显示这些字段。公网 IP 优先取 X-Forwarded-ForX-Real-IPCF-Connecting-IP,取不到时使用连接对端地址。

访问审计日志默认写入 logs/config_access.log。日志为 JSON 行文本,包含时间、客户端类型、客户端版本、完整组件版本、组件补丁号、公网 IP、机器码摘要、设备名、路径、认证方式和结果。

常见问题

节点列表为空

通常是 CoreServer 没有成功连接 /ws/config,或心跳超过 CONFIG_TTL 后被清理。请检查 CoreServer 日志、反向代理 WebSocket 配置和网络连通性。

新设备无法绑定

请在管理后台开启新设备绑定,或手动启用对应机器码。

重启后节点都不见了

在线节点缓存和旧 id 兼容映射都保存在内存中。ConfigServer 重启后需要等待 CoreServer 重新上报,这是正常行为。

Developed by SleepyCelery & subtlyrabbit. Thanks to VNT & Tauri.