1. 当前网络拓扑
- 手机和电脑都主动出站连接中转,不需要家庭宽带公网 IP或路由器端口映射。
- 公网通常只开放 80/443;SSH 端口只供管理员运维,不参与 Woodox 数据转发。
woodox-relayd建议只监听127.0.0.1:8890,由反向代理提供可信 WSS。- 用户电脑的
127.0.0.1:8787不对公网、云安全组或 Windows 网卡开放。
2. E2EE 与中转边界
应用层协议为 woodox-e2ee/1,使用 Noise_XX_25519_ChaChaPoly_BLAKE2s。中转解析路由外层头,不解析、反序列化或记录 Noise 密文字节。
中转不能读取
消息正文、项目路径、终端输入输出、历史、附件、设备名称、任务内容和控制命令。
中转仍能观察
IP、连接时间、route ID、connection ID、连接数量、重连频率、密文长度和总流量。
E2EE 不保护已经被入侵或解锁的手机和电脑,也不能替代服务器更新、最小权限、终端安全和备份。
3. 准备服务器和域名
- 准备一台持续在线的 Linux 服务器、sudo 权限和固定公网地址。
- 为
relay.example.com配置 A/AAAA 记录,并确认外部解析正确。 - 云安全组与系统防火墙开放 80/443;不要开放 8787、8890 或账户服务的回环端口。
- 使用 Caddy 或 Nginx 为公网入口配置自动续期 TLS 证书和 WebSocket 代理。
- 使用与客户端版本配套构建出的
woodox-relayd,不要沿用旧 Node/SSH 中转脚本。
4. 开通自建路由
路由目录只能由中转服务账户读取。开通命令只在标准输出中返回一次原始 route 密钥:
sudo install -d -m 0700 /var/lib/woodox-relay/routes
woodox-relayd provision-route \
--routes-dir /var/lib/woodox-relay/routes5. 启动中转并配置 TLS
woodox-relayd serve \
--bind 127.0.0.1:8890 \
--routes-dir /var/lib/woodox-relay/routes反向代理把 wss://relay.example.com/v1/relay/* 转到回环端口。访问日志不要包含 query、Authorization、Cookie、route 密钥或完整请求行;配置后执行 Caddy/Nginx 自检并验证证书链。
手机 URL 只有非秘密 route ID;电脑在 WSS 握手的 Authorization 请求头发送 route 密钥。配对票据位于 Noise 加密握手中,两者都不应进入 URL。
6. 电脑端接入
- 打开自建 E2EE 中转服务
在 Windows 客户端进入“公网访问”,选择自建 E2EE 中转服务。
- 填写三项信息
填写
wss://relay.example.com、route ID 和一次性交付的 route 密钥。 - 确认电脑在线
电脑把 route 密钥写入 Current User DPAPI;普通设置与 SQLite 不保存明文。
- 扫码并批准手机
手机固定二维码中的电脑静态公钥,Noise 握手后仍需在电脑端批准该设备。
7. 撤销与轮换
woodox-relayd revoke-route \
--routes-dir /var/lib/woodox-relay/routes \
--route-id route_替换为实际标识中转每两秒热加载路由目录。撤销后会关闭该路由的电脑和手机连接。需要恢复时新建路由并重新配置;不要尝试从摘要恢复旧密钥。
8. 上线验收
- 确认公网证书可信、WSS 握手成功且
woodox-relayd不直接监听公网地址。 - 完成首次扫码、电脑审批、加密控制、断线重连和撤销后的拒绝测试。
- 用错误 route 密钥、替换电脑公钥、重复配对票据和重放旧密文进行负向验证,均应失败。
- 检查代理与服务日志,确认没有 Authorization、route 密钥、配对票据或密文字节。
- 为路由目录和服务配置设置最小权限、升级、备份、监控与故障恢复流程。