使用Java进行NAT遍历

我想连接到计算机,每个计算机都在NAT路由器后面。 我读到STUN只适用于NAT路由器后面的一台计算机。 真的吗? 如果是这样,我该如何解决双NAT问题?

谢谢,托马斯

UDP打孔和TCP打孔

TURN是STUN的一组扩展, 有助于解决双NAT问题。 您仍然需要云中的服务器,客户端需要注册。 一些免费服务器的源可用 。

来自TURN网络草案:

如[RFC5128]和[RFC4787]中所述,打孔技术
如果两个主机都位于不良的NAT之后,则会失败。 例如,如果两个主机都位于具有“地址相关映射”或“地址和端口相关映射”的映射行为的NAT之后,则打孔技术通常会失败。

如果您没有中央服务器,您可以考虑使用upnp(如果可用)在路由器中创建一个洞。 Azureus / vuze就是这样做的。