针对 NAT 穿越中「易 NAT 端不知晓难 NAT 端口」的核心难题,本文引入生日悖论机制:在难 NAT 侧预开 256 个端口,易 NAT 侧随机探测,将最坏 10 分钟的全端口扫描压缩至 20 秒内 99.9% 成功率,显著逼近 100% 穿越目标。
核心难点与暴力破解局限
STUN 可获取难 NAT 侧公网 IP(RFC 4787 REQ-2 保证其可靠性),但端口仍是 65,535 个未知。若易 NAT 侧以 100 包/秒顺序探测,最坏耗时 10 分钟,且流量特征酷似端口扫描,极易触发入侵检测系统告警,工程上不可取。
生日悖论优化探测模型
改为难 NAT 侧同时开启 256 个 Socket 向易 NAT 侧发包(占用 256 个源端口),易 NAT 侧随机探测目标端口。两组端口集合的碰撞概率遵循生日悖论变体:探测 174 次即达 50% 成功率,1024 次达 98%,2048 次达 99.90%。按 100 探测/秒计算,中位耗时 1.74 秒,20 秒内基本必中,仅遍历 3.1% 搜索空间。
组合策略逼近全穿越
单一技巧无法独立解决 NAT 穿越,需与前文的回退机制、协议层面优化等组合。生日悖论法在对称 NAT 等硬 NAT 场景下提供概率性突破,配合 ICE 候选优先级调度、TURN 兜底,可在保持低延迟的前提下将整体成功率推向 100%。原文未给出具体组合后的量化成功率数据。
对运维与网络工程师而言,该模型提供了可落地的概率计算框架:在 UDP 打洞模块中引入多端口并发与随机探测,即可用极低资源开销换取数量级的连接建立加速,是实现高可靠 P2P 通信的关键拼图。
原文: APNIC Blog(2022-04-26)|编译自 APNIC Blog,事实以原文为准。
来源:APNIC Blog