运营商为缓解 IPv4 枯竭部署 CGNAT,形成双层 NAT 拓扑,导致传统端口转发失效、STUN 无法获取中间网络映射,需结合穿透技术与端口映射协议解决同 CGNAT 下不同家庭 NAT 间的直连问题。
CGNAT 双层拓扑与穿透现状:
CGNAT 通过递归 SNAT 实现:家庭路由器将设备映射到中间 IP,ISP 网络再将中间 IP 汇聚到少量公网 IP。这种双层 NAT 打破了用户在家庭路由器配置端口转发的传统对策,因为无法重新配置运营商侧 CGNAT 设备。不过,双层 NAT 本质仍属常规 NAT 链,除端口映射协议外,既有穿透技术包基本可用,ISP 也能以此提供商业服务。
同 CGNAT 下异家庭 NAT 直连难点:
核心难题是连接位于同一 CGNAT 但不同家庭 NAT 后的两个节点。STUN 服务器位于公网,返回的是穿透 CGNAT 后的公网 IP:端口,而非中间网络的 IP:端口。中间网络相当于微型互联网,若能获取其映射则直连简单。若任一家庭 NAT 支持 UPnP、NAT-PMP 或 PCP,可直接获得类服务器映射;但运营商常在家庭设备关闭这些协议,避免软件因“错误结果”困惑,导致不可依赖。
无端口映射时的 STUN 回退策略:
当端口映射协议不可用时,需回退到基于 STUN 的技术。原文未给出具体后续方案细节,但逻辑指向利用 STUN 发现的公网映射配合打洞技术,或通过中继服务器中转。关键在于识别双方是否处于同一 CGNAT,以及能否预测中间网络的端口分配规律。
对网络工程师而言,CGNAT 使穿透不再依赖用户可控的单层 NAT,必须在协议栈层面集成多重回退机制:优先尝试端口映射,失败则用 STUN 探测配合打洞,最终兜底中继。理解中间网络拓扑与运营商策略,是提升直连成功率的前提。
原文: APNIC Blog(2022-05-03)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog