frp 引入 wire protocol v2

来源: https://github.com/fatedier/frp/releases/tag/v0.69.0

兼容性政策

从 v0.69.0 开始,每个次要版本都将得到支持,直到有九个更新的次要版本发布为止。例如,v0.69.0 将一直得到支持,直到 v0.78.0 发布。在此期间,frpc v0.69.0 保证与 v0.61.0 到 v0.77.0 之间的所有 frps 版本兼容,反之亦然。同一次要版本内的补丁版本始终兼容。超出支持范围的版本可能仍会尽力继续工作,但不再保证兼容性。

对于混合版本部署,请先升级 frps,然后再升级 frpc。这样可以确保服务器端在客户端开始使用新的客户端协议行为之前就已做好准备。

note

此版本引入了 wire protocol v2,作为未来 frpc/frps 协议变更的过渡方案。现有的 wire protocol 难以扩展而不存在兼容性风险,而即将进行的变更(包括替换已弃用的流加密方法)需要使用版本化的协议。

此版本中transport.wireProtocol 保留了默认值v1 。用户目前可以继续使用默认值。要提前测试 v2 版本,请将 frpc 和 frps 都升级到支持 v2 的版本,然后transport.wireProtocol = "v2" 在 frpc 中进行设置。启用 v2 的 frpc 无法连接到旧版本的 frps。

启用此功能后transport.wireProtocol = "v2" ,控制通道将在登录握手后使用协商的 AEAD 加密。要使用 v2 版本,frpc 和 frps 都必须升级到此版本。

当 v2 在未来的版本中成为默认版本时,v1 将被弃用。v1 将继续得到支持,直到 v0.78.0 发布,并可能在 v0.78.0 或更高版本中移除。

Features

  • 为 frpc添加了transport.wireProtocol 用于选择 frpc 和 frps 之间使用的内部消息协议的功能。支持的值为v1v2
  • 在 frps 控制面板和/api/clients API 中增加了客户端协议可见性。在线客户端现在会将协商的协议报告为v1v2
  • Wire 协议 v2 现在支持 AEAD 控制通道加密。支持的算法包括xchacha20-poly1305aes-256-gcm ;frpc 会根据本地 AES-GCM 硬件支持情况通告其首选算法顺序,而 frps 则会从该列表中选择第一个支持的算法。

个人点评:
有时间测试看看升级协议有什么独特的地方