Skip to content

核心节点服务器

核心节点服务器就是 CoreServer。它通常部署在有公网 IP 或公网域名的 Linux 主机上,用来提供终端可以接入的 VNT 节点。

当前 CoreServer 已是 Rust 实现,并在同一进程内嵌 vendored vnts。它不再依赖外部 vnts 可执行文件。

它负责什么

  • 生成本次运行的 server_id、端口、令牌和密码。
  • 启动嵌入式 vnts
  • 持续向 ConfigServer 上报节点配置和心跳。
  • 异常退出时按配置自动重启嵌入式运行时。
  • 接收 ServicePublisher 的服务清单心跳,并向 Client 透传服务能力元数据。
  • 为接入的客户端和服务发布器分配 PNC 虚拟 IP,并校验手动请求的固定 IP 是否在虚拟网段内且未被占用。
  • 记录 HTTP 入口访问的客户端版本、VNT 内核版本和访问时间。

SERVER_NAME 是配置下发服务器识别同一逻辑节点的唯一依据。容器重启后,server_id、运行端口、令牌和密码都可能变化;只要 SERVER_NAME 不变,新实例会替换旧实例。多个核心节点同时在线时必须使用不同的 SERVER_NAME

ServicePublisher 启用内置代理后,会在服务清单中上报 accessMode: "proxy" 和可选 proxy 元数据。CoreServer 会保持旧字段兼容,并通过 /api/services 原样返回这些元数据,供 Client 代理页面发现在线出口。

访问日志

CoreServer 的访问审计只覆盖 HTTP 入口,不修改 vendored VNT 协议。当前会记录 ServicePublisher 服务清单心跳,以及 Client 请求 /api/services 服务目录。

新版终端会携带 X-PNC-Client-VersionX-PNC-Client-KindX-PNC-VNT-Version。ServicePublisher 心跳 body 也会带 clientVersionfullVersioncomponentPatchvntVersion,旧心跳缺失这些字段时仍兼容。

缺失、不可解析或早于 0.4.6-beta 的客户端基线版本会记录为 <0.4.6-beta>。审计日志默认写入 logs/core_access.log,包含访问时间、路径、客户端类型、客户端版本、完整组件版本、组件补丁号、VNT 版本、机器码摘要、设备名和结果。

CoreServer 自身构建版本来自根目录 pnc-version.toml,格式为 <client_version>+core.<patch>,并会通过 WebSocket 上报 fullVersioncomponentPatch

常见问题

ConfigServer 看不到节点

检查 CONFIG_SERVER_URL 是否正确,反向代理是否支持 WebSocket,CoreServer 是否能访问配置服务器。

客户端获取到节点但连不上

检查 SERVER_IP 是否是客户端真正能访问的公网地址,并确认服务器防火墙放行运行时端口。

如果问题发生在 CoreServer 容器重启后,请确认客户端和服务发布器已升级到支持按节点名称重新解析的版本,并确认同一逻辑节点的 SERVER_NAME 没有变化。

容器运行异常

确认使用 host 网络、privileged: true,并挂载日志目录便于排查。

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