获取验证码
处于不同内网、多层路由器NAT后的两台客户端无法直接建立UDP连接,UDP打洞(UDP Hole Punching)依靠公网STUN服务端做中继协调,配合两端客户端主动向对方公网端口发送数据包打通NAT映射表,最终实现两端内网设备点对点直连,省去全程流量中继转发,大幅降低公网服务器带宽消耗。
UDP打洞穿透NAT整体分为两大核心环节:服务端中继协调与客户端双向打洞。公网STUN服务负责收集两端客户端公网IP+端口映射并互相转发,两端内网客户端主动向对方公网地址发包,在各自路由器NAT表中生成临时放行规则,完成内网设备点对点UDP直连通信。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
1. NAT映射机制
内网设备访问公网时,路由器会生成一条临时映射记录:内网IP:端口 ↔ 公网IP:端口,仅允许外部数据包回复对应会话;陌生公网IP主动向内网端口发包会被路由器直接丢弃。
2. 内网P2P通信阻碍
A、B两台设备分别在不同家庭/公司内网,双方无公网IP,无法主动向对方内网发起连接;路由器默认拒绝外部陌生入站UDP报文,天然隔离两端点对点流量。
3. NAT类型影响打洞成功率
全锥型、受限锥型NAT可稳定打洞;端口受限锥型成功率下降;对称型NAT每次对外请求分配不同公网端口,UDP打洞极易失败,需依赖中继转发兜底。
1. 客户端A、客户端B分别主动建立UDP长连接,注册至拥有独立公网IP的STUN服务端;
2. 路由器为A、B分别分配公网映射端口,服务端通过数据包读取,记录A的公网IP+端口、B的公网IP+端口;
3. A向服务端发送请求,希望与B建立点对点通信;
4. 服务端充当中继中转站,将B的公网地址转发给A,同时把A的公网地址转发给B;
5. 该阶段仅交换地址信息,业务流量不经过服务端转发,中继仅做信令协调。
1. A、B同时收到对方公网IP与端口,两端同步启动循环UDP发包,持续向对方公网地址发送探测报文;
2. A向B公网发包时,A侧路由器生成一条出站映射记录,放行目标为B公网IP的回程报文;同理B侧路由器生成对应映射;
3. 探测报文抵达对方路由器时,路由器识别存在主动出站会话映射,不再拦截入站数据包,报文顺利穿透NAT抵达对端内网设备;
4. 双向NAT通道同时打通后,停止探测报文,两端直接点对点收发业务UDP数据,不再经过公网服务端中转。
若两端存在对称型NAT、多层级联路由器、防火墙拦截等场景,双向打洞无法建立直连通道,则自动切换为纯中继模式:
1. A所有业务UDP数据包统一发送至公网STUN服务端;
2. 服务端接收后,将数据包完整转发给B;
3. 双向流量全部经由公网服务器中转,牺牲带宽换取连通性,作为打洞失败的降级兜底方案。
1. 客户端A、B连接公网STUN服务端,完成地址注册;
2. 服务端中继交换双方公网IP与映射端口;
3. A、B并发向对方公网地址发送UDP探测包(双向打洞);
4. 两端路由器生成NAT放行规则,打通点对点传输通道;
5. 直连通道生效后,两端内网设备直接UDP通信;
6. 直连失败则切换服务端全程中继转发流量。
1. 实时音视频通话:微信、视频会议、直播连麦内网设备互通;
2. 游戏联机对战:局域网游戏跨内网P2P联机;
3. 内网文件高速传输:P2P文件分发、网盘点对点传输;
4. 物联网设备远程直连:摄像头、工控设备内网穿透访问。
1. 误区:仅单向发包就能完成UDP打洞
纠正:必须两端同时主动向外发包生成双向NAT映射,单向探测无法打通入站放行规则。
2. 误区:所有路由器NAT都支持UDP打洞
纠正:对称NAT端口随机分配,打洞成功率极低,只能依靠服务端中继兜底。
3. 误区:打通后通道永久有效
纠正:路由器NAT映射存在超时时间,长时间无报文会自动清除通道,需定时发送心跳包维持映射。
4. 误区:TCP也能简单复用UDP打洞逻辑
纠正:TCP面向连接握手机制受NAT限制极大,TCP打洞实现复杂,行业主流穿透方案均使用UDP。
5. 误区:STUN服务端会持续转发业务流量
纠正:打洞成功后流量点对点直连,服务端仅做前期信令中继,不承载业务数据流。
UDP打洞穿透NAT依靠服务端中继协调与客户端双向打洞两大核心流程实现内网P2P互通:公网STUN服务作为中继交换两端公网映射地址,两端客户端同步向对方公网地址发送UDP探测包,在各自路由器生成临时放行规则,穿透NAT建立点对点直连通道;针对对称NAT、多层路由等打洞失败场景,可降级使用服务端全程中继转发流量保障连通,广泛用于音视频、游戏、内网传输等低延迟P2P业务。