本版本
服务端与客户端可各自独立升级、任意混用(隧道协议兼容:v5 服务端接受 v4 客户端;
推荐先升级服务端再升级客户端)。同网多台克隆虚拟机部署是本版重点处理的场景。
克隆虚拟机指纹去重:设备指纹 v2 + 握手 Hello v5
同一镜像克隆的虚拟机共享 Windows MachineGuid,设备指纹(派生自它)完全相同——
「一码绑一设备」的防线对克隆机失效:码可复制到任何克隆机上使用,服务端无法区分、无法
按机器吊销。
- 客户端:设备指纹 v2 = MachineGuid 掺入 SMBIOS 系统UUID 再派生。UUID 由宿主机
注入,Hyper-V/VMware 克隆虚拟机时主动更换(Proxmox/KVM 默认带 vmgenid),两台克隆机
的指纹 v2 天然不同;SMBIOS UUID 不可用时自动经 CIM(Win32_ComputerSystemProduct)
兜底读取,再不行回落主指纹(行为与旧版一致)。来源与失败诊断写入客户端运行日志。
- 协议:Hello v5(在 v4 布局上追加 32 字节指纹 v2,进 MAC)。只动 Hello——
Accept/Reject/会话/数据面零变化;v5 服务端接受 v4 客户端。
- 服务端:绑定自动迁移。存量用户升级客户端后首次重连即完成迁移,零手动操作;
迁移后旧指纹立即失效——把码拷到另一台克隆机会被拒绝。
- 面板:同一指纹绑定在多个访问码上时显示「疑似克隆机」黄色警告。
升级须知:① 先升级服务端(对存量客户端无感),再升级客户端;② 每个访问码的
「绑定设备」码会在客户端升级后
变更一次(面板与客户端 UI 同步显示新码),这是预期
行为不是异常;③ 同指纹的第二台克隆机在第一台迁移后会收到「设备不匹配」→ 面板解绑
一次即绑定自己的新指纹。
同网络多台客户端:握手串线自愈,不再误报「接入码可能已失效」
NAT(EIM)端口复用/重映射会把一台机器的握手应答串到另一台机器的握手窗口。客户端现在:
- 验签失败/结构非法的 Accept 一律排空、继续等本次自己的应答(串线提示进运行日志);
- 握手整轮失败后自动更换本地端口重建 NAT 映射——「重启路由器/客户端」变成每轮
自动动作;
- 服务端对「同一来源地址已被另一访问码的会话占用」打限频 warn(排障锚点)。
服务端面板「往返延迟」恒为空(修复)
TypePong 分支从未调用 RTT 观测(心跳注释写了「被动测量 RTT」但实现遗漏)。现在
Ping 发出记基线、Pong 验证后观测(EWMA)——对旧客户端即时生效。
其他改进
- 接入码弹窗显示隧道密钥独立字段(带复制;密钥本就内含于接入码,便于核对与手动配置)
- 隧道子网广播(客户端固有噪音)的隔离丢弃从 warn 降为 debug,单播越界尝试保留 warn
- 面板「连接数」列标注「活跃/累计」语义并加悬停说明