所有NAT类型上的P2P连接

问题描述

最近我正在研究一个p2p应用程序,我发现了如何使用ICE和STUN协议使用c#编程UDP穿孔。

这很好,但是对称NAT和使用对称NAT的路由器存在一些限制。\

我正在寻找一种通过任何NAT类型连接两个系统的方法

无论如何,我也尝试过UPNP和端口转发,但是由于防火墙和路由器黑名单,这个选项不在我的脑海中,如果您的回答是正确的,请说明我该如何使用此方法

谢谢。

解决方法

Upnp和NAT-PMP对于支持这些协议的路由器非常有用,我还没有遇到“防火墙和路由器黑名单”之类的问题。

在路由器不支持这些协议的情况下,我使用的是ICE。如您所说,对称NAT是一种具有最高安全性的类型,如果端口随机增加,则很难打孔。使用服务器作为中继(ICE可以做到)比克服随机算法要容易得多。

如果您对对称NAT的源代码感兴趣,它位于nf_nat_core.c之类的文件中,可以轻松跟踪和了解其工作原理。