NAT 穿透与连接策略——直连优先、Forwarder 兜底
为什么需要 NAT 穿透
在理想环境下,两台设备都有公网 IP,直接建立连接即可。但现实中绝大多数设备处于 NAT 后面:
互联网
│
┌─┴────────────────────┐
│ NAT 路由器 192.168.1.1 │ ← 家庭路由器
└─┬──────────┬─────────┘
│ │
▼ ▼
设备 A 设备 B
192.168.1.2 192.168.1.3
设备 A 和 B 都只有内网 IP(192.168.x.x),从互联网上无法直接访问。要让它们互相连接,有几种传统方案:
| 方案 | 实现方式 | 问题 |
|---|---|---|
| 端口映射 | 在 NAT 路由器上配置端口转发 | 需要管理员权限;运营商级 NAT(CGNAT)下完全不可用 |
| VPN | 两台设备加入同一个 VPN 网络 | 需要 VPN 服务;增加延迟;配置复杂 |
| 云中转 | 数据上传到云再下载 | 绕路、慢、占用额外存储 |
GoodSync Connect 的目标就是在用户零配置的情况下,自动处理这些网络障碍。
连接建立的完整流程
当设备 A(客户端)想连接设备 B(服务器)时,GoodSync Connect 按以下步骤操作:
第一步:查询 Mediator
A → Mediator:我想连接 B(UserId: john@gmail.com, ComputerName: Office-PC)
Mediator → A:B 最后上报的公网 IP 是 1.2.3.4,端口是 50000
Mediator 本身只负责地址协调,不转发任何业务流量。
第二步:尝试直连
A → 1.2.3.4:50000:发起到 B 的直接 GSTP 连接
如果 B 也在 NAT 后面,这个直连请求到达 NAT 时会被丢弃——因为 NAT 不知道要把这个入站请求转发给内网的 B。
第三步:NAT 穿透尝试(STUN-like)
GoodSync 内置了类似 STUN 的 NAT 穿透逻辑,尝试打洞:
- GoodSync Connect 的 NAT 穿透基于 UDP hole punching
- 同时尝试 TCP 的 NAT 穿透
- 如果 A 和 B 都在 cone NAT(最常见的家庭路由器类型)后面,有一定概率直接打通
第四步:启用 Forwarder 转发
如果直连和 NAT 穿透都失败:
A → Forwarder:建立加密隧道
B → Forwarder:建立加密隧道
Forwarder ↔ Forwarder:在两个加密隧道之间转发加密数据
Forwarder 是 GoodSync 运营的服务器。它不读取转发的数据(数据是端到端加密的),只做字节级别转发。
连接策略的配置
GoodSync Connect 的连接策略可以在 Tools → GoodSync Connect Setup → Advanced 中配置:
| 选项 | 说明 | 推荐 |
|---|---|---|
| Allow Direct Connection | 允许直连尝试 | 开启 |
| Allow Auto Forwarder | 直连失败时自动走 Forwarder | 开启(最省心) |
| Forwarder Required | 强制走 Forwarder,不尝试直连 | 关闭(仅调试用) |
什么时候可以关闭 Forwarder
如果你确认两端设备之间一定能直连(比如在同一个局域网内),可以关闭 Forwarder 来提高速度和降低延迟。但 GoodSync 在这种场景下本身就会优先直连,关闭 Forwarder 的收益不大,反而可能在意外情况下失去连接兜底。
连接类型的判断与显示
GoodSync 在主界面右下角或作业状态中显示当前使用的连接类型:
| 图标/状态 | 含义 | 速度 |
|---|---|---|
| 绿色连接 | 直连(Direct) | 最快,延迟最低 |
| 黄色连接 | NAT 穿透成功(P2P) | 接近直连 |
| 橙色连接 | Forwarder 转发(Relayed) | 稍慢,取决于 Forwarder 位置 |
| 红色叉号 | 连接失败 | 不可用 |
Forwarder 转发的连接质量取决于转发服务器的地理位置——GoodSync 在全球多个地区部署了 Forwarder,会自动选择距离两端较近的节点。
手动指定连接方式(进阶)
在某些场景下可以手动指定连接方式:
直接 IP 地址连接
如果你知道对方设备的公网 IP(且对方配置了端口映射),可以在端点配置中直接使用 GSTP URL:
gstps://1.2.3.4:50000/files/path
这种方式跳过 Mediator 查找和 NAT 穿透,直接连接。适用于:
- 双方都有固定公网 IP 的专业环境
- 已配置好端口映射的场景
- GoodSync Connect 服务不可用时的应急方案
自定义 Mediator
GoodSync 支持企业版用户部署自己的 Mediator 服务器:
- 所有协调流量走企业内部 Mediator
- 完全自主控制连接协调逻辑
- 适用于对数据隔离有严格要求的企业
防火墙与端口
GoodSync Connect 对防火墙的要求:
| 组件 | 方向 | 默认端口 | 说明 |
|---|---|---|---|
| Mediator | 出站 | 443 (HTTPS) | 访问 GoodSync 协调服务器 |
| Forwarder | 出站 | 443 (HTTPS) | 访问 Forwarder 转发服务器 |
| GSTP 直连 | 出站/入站 | 动态(默认 >1024) | 直连使用的端口 |
关键:只需要出站端口 443 可达即可——几乎所有企业和家庭网络都允许出站 HTTPS 流量。入站端口不需要手动配置,NAT 穿透和 Forwarder 会处理好连接问题。
连接失败时的排查顺序
当 GoodSync Connect 显示「连接失败」时,按以下顺序排查:
- 两端 GoodSync 都在运行吗?(移动端需要 Server 模式启动)
- 两端是否在同一个 GoodSync Connect 账户下?
- 是否能访问 GoodSync 官网?(确认出站 HTTPS 没被拦截)
- 手动试试 Forwarder 模式:设置中强制要求 Forwarder,看能不能通
- 检查公司/学校网络的安全策略:某些网络环境会拦截 P2P 流量
大多数连接问题都可以归结为上面几条,尤其是第 4 条——强制 Forwarder 能覆盖几乎所有 NAT 和防火墙场景。