家庭网关与云上的安全组,都会改写地址端口。对应用开发者而言,「公网 IP」只是故事的一半;另一半是 NAT 如何建立并维持映射。

映射行为决定打洞难度

讨论时常提到 endpoint-independent / address-dependent / address-and-port-dependent 等类别。直觉上:

  • 映射越「宽松」,对端越容易复用已有外部端口打入;
  • 映射越「严格」,越依赖双方协同探测,失败率上升,最终常落到 TURN 中继。

工程上的务实策略

  1. 优先设计服务器中继与直连双路径,不要赌用户 NAT 友好。
  2. 用 STUN 发现外部映射,用连通性检查决定是否升级到 P2P。
  3. 关注绑定寿命与 keepalive,移动网络下映射失效非常常见。
连通性是协商出来的,不是「有公网入口」一句话能保证的。