客户端无需更新:本版本改动全部在服务端,pf-client 客户端代码零变化。现有 1.0.0
客户端可继续使用;重新发布的客户端压缩包仅随版本号刷新,内容与 1.0.0 一致。
修复
- 全代理突然失联、重启服务器才恢复的根因修复:服务器上的 ufw/宝塔等防火墙工具在
reload 或增删规则时会整表清空 iptables,把隧道回程只在启动时装配一次的内核规则
连带清掉——症状为控制面照常、玩家入站照常、所有透明代理静默失联、日志零痕迹。
现由守护协程每 30 秒幂等校验,缺失自动补装,并在日志留下「规则何时被清」的时间戳- 隧道日志「丢弃源地址不匹配(疑似伪造)」不再误报:客户端 Windows 网卡的 IPv6 等
非 IPv4 后台流量降为 debug 记录;真实源地址伪造嫌疑仍保持 warn
v1.1.0
两端必须成对升级:本版本包含隧道协议 v4(安全修复)。旧客户端连新服务端、新客户端连旧服务端都会被明确拒绝并提示升级(不再误报「服务端无应答」),但混用版本无法建立隧道。
升级方式
- 服务端:下载对应架构 tar.gz,解压替换二进制后重启(配置文件 config.yaml 首次启动会自动补全新增配置项并备份原文件为 config.yaml.v<N>.bak)
- 客户端:下载 pf-client zip,解压后整体替换(pf-client.exe 与 wintun.dll 必须同目录);直接覆盖安装即可,接入码与配置自动沿用
安全
- 隧道协议升级到 v4:修复 v3 两个方向共用一把密钥导致的每包 (key, nonce) 重用——已知明文即可伪造任一方向的数据包。现改为 HKDF 派生 c2s/s2c 两把方向密钥 +...
本版本服务端与客户端可各自独立升级、任意混用(隧道协议无变化,无需成对升级)。
服务端:透明模式跨规则共享绑定
修复透明模式最疼的一个问题:同一条隧道下的多条透明规则现在可以同时服务同一批玩家。
透明转发为每个玩家会话以「玩家 IP:端口」为源绑定 IP_TRANSPARENT socket(源地址保真,后端零插件看到玩家真实 IP),该绑定在内核层面全机独占。旧实现每条规则各自 bind、没有跨规则协调——两条透明规则服务同一批玩家时(EIM NAT 端口复用 + 基岩版加服器 ping 全列表会把同一玩家的探测包打到多个透明端口),后到者 bind: address already in use 被丢弃,且绑定被赢家的会话持续刷新,输家在玩家持续探测期间永久断流(2026-09-02/09-03 两次现形,表现为某条规则的玩家全部进不去、客户端「上行恒 0、下行有动」)。
- 新增全机唯一的「玩家元组 → 透明 socket」注册表:每个玩家元组全机只绑一个...
本版本服务端与客户端可各自独立升级、任意混用(隧道协议兼容:v5 服务端接受 v4 客户端;
推荐先升级服务端再升级客户端)。同网多台克隆虚拟机部署是本版重点处理的场景。
克隆虚拟机指纹去重:设备指纹 v2 + 握手 Hello v5
同一镜像克隆的虚拟机共享 Windows MachineGuid,设备指纹(派生自它)完全相同——
「一码绑一设备」的防线对克隆机失效:码可复制到任何克隆机上使用,服务端无法区分、无法
按机器吊销。
- 客户端:设备指纹 v2 = MachineGuid 掺入 SMBIOS 系统UUID 再派生。UUID 由宿主机
注入,Hyper-V/VMware 克隆虚拟机时主动更换(Proxmox/KVM 默认带 vmgenid),两台克隆机
的指纹 v2 天然不同;SMBIOS UUID 不可用时自动经 CIM(Win32_ComputerSystemProduct)
兜底读取,再不行回落主指纹(行为与旧版一致)。来源与失败诊断写入客户端运行日志。...
[MD] # v1.3.0 > ⚠️ **本版隧道协议硬切换 v4 → v5,旧客户端一律不被接受,两端必须成对升级。** > 升级顺序:**先服务端,再客户端**。客户端未升级期间只会握手失败并每 3 秒自动重试, > 服务端升级完成后把客户端升到本版即自动恢复,无需人工干预。 > > 本版同时包含 CHANGELOG 中 `v1.2.0` 条目的全部内容(NetherNet 透明代理,此前未单独发版)。 ## 亮点 - **Minecraft 基岩版 NetherNet(WebRTC)透明代理**:透明模式下新增开关,由信令网关 (重写 SDP candidate 为中转机公网地址)+ 数据多路复用器(按 `ice-ufrag` 用一个 UDP 端口承载全部玩家、以**透明源**转发)组成——后端 BDS 零改动、零插件,且**仍然看到 玩家真实 IP**。HTTP/HTTPS 双模式同端口嗅探;证书由用户粘贴 PEM 内容并在保存时用 `tls.X509KeyPair` 实配校验。新增配置项...[/MD]