由于这次更新的NAT检测工具可以轻松获得NAT后的端口,之前beta帖子提及的手动打洞方法变得简单。
原测试方法需要1台公网+2台内网,并且需要监视公网机器看到的端口。
现在利用测试工具,只需要两台内网机器分别在25秒内发起uTP连接即可。
测试结果如下:
两台机器均是NAT3,各自只需向对方的公网端口直接发起一次uTP连接。
第一次尝试会失败断开,然后几秒后会重试,可正常建立连接!
上面的截图中,219开头的机器映射前后的端口一致,但防火墙仍然是端口受限型的,因此不影响测试结果。
并且,最终接受连接的是14开头的机器。它是完全的内网环境,本地端口与公网端口不一致,但可以成功接受来自外部的连接。
另外测试时需先把uTP设为“优先”或“强制”,否则会先尝试TCP连接,当失败重试uTP时,映射端口可能已经发生变化导致失败。
这个测试表明,只要解决NAPT后的端口问题,BEP 55的方案能够实现真正的内网穿透。
尽管目前使用信使节点中转的方法效率可能不高,但还有上升的空间。
比如让DHT等UDP连接在25秒内至少发起一次,以保证映射关系不会被清理。也可以定期自动检测端口是否变更。
比如在向Tracker提交信息时,自动把监听端口替换成NAPT后的端口。
然而不借助信使节点的话,只有NAT1才能直接建立连接,其他类型除非碰巧能在25秒内各自向对方发起连接,否则仍然会被防火墙阻挡。