对称NAT后的Alice与强制使用TURN中继的Bob能否建立WebRTC连接?
WebRTC连接可行性分析:对称NAT+全锥形NAT+STUN/TURN组合
一、能否建立连接?
不能。具体原因如下:
- Alice处于对称NAT后,仅配置STUN服务器,因此仅能收集两类候选:内网本地候选、STUN反射候选(对称NAT分配的公网地址端口,仅允许STUN服务器的回包通过,其他外部地址的入站流量会被对称NAT直接丢弃)。
- Bob处于全锥形NAT后,仅配置了强制中继模式的TURN服务器,因此仅能收集TURN中继候选(所有流量必须通过TURN服务器转发)。
ICE协商阶段,所有候选对的连通性检查均无法满足双向可达要求:
- Alice本地候选 ↔ Bob TURN候选:Bob的TURN中继无法访问Alice的内网地址,直接不通。
- Alice STUN反射候选 ↔ Bob TURN候选:
- Alice向Bob的TURN中继候选发送绑定请求时,对称NAT会创建一个仅针对该TURN中继端口的临时映射,TURN服务器可将请求转发给Bob,Bob的回复也能通过这个映射回到Alice——这是单向可达。
- 但Bob向Alice的STUN反射候选发送绑定请求时,请求的源是TURN中继端口,而Alice的STUN反射候选对应的映射仅允许STUN服务器的流量通过,对称NAT会直接丢弃该请求,Bob无法收到响应——反向不可达。
由于WebRTC需要双向通信的候选对,因此双方无法建立连接。
二、关于“拥有TURN服务器是否就能无视网络架构保证连接”?
不能。TURN服务器能解决大部分NAT穿透问题,但有明确前提:
- 通信双方均需将该TURN服务器配置到自己的
iceServer列表中,这样双方才能生成TURN中继候选,通过TURN服务器完成双向中继通信。 - 若其中一方未配置TURN服务器,就无法生成中继候选,即便另一方使用了TURN,也无法建立双向的中继通路,最终可能因NAT规则限制导致连接失败。
内容的提问来源于stack exchange,提问作者progquester
相关产品推荐
相关产品推荐

