我要做的是,将数据从我的PC(本地IP)发送到互联网上的另一台PC(私有IP)。我写了一个java程序,用stun resolver发送/接收消息。
Resolve stun and get public IP and port
Send message with same socket(resolve stun) to another program.
Receiving with same socket(resolve stun) in different thread.
我们正在通过stun解析彼此的公共IP /端口数据。我不确定其他目的,但我的网络有Port restricted clone NAT
。我做错了吗?
注意: NAT已经过测试。我通过昏迷的决心与服务器和本地移动设备进行了沟通。
我没有防火墙。我也停止了ufw
服务。
Ubuntu 14.04
Mac 10.10.3
答案 0 :(得分:2)
简短摘要:在发现你的套接字的STUN ip / port之后,你需要发送一个1字节的"打孔数据包"到远程端点的IP和端口。这将允许来自该地址的传入流量。另一方应该做同样的事情。
答案 1 :(得分:1)
你需要在两侧的NAT上打一个洞,以便NAT允许传入的数据包。你应该用低ttl值打洞。因此,您发送的用于打孔的数据包不会到达其他端NAT。如果它确实比你之后所有的数据包从你的IP到NAT可能被阻止。并非所有NAT都配置如下。这可能是你们两个都没有收到任何东西的原因。
还有另一个原因。您的其他NAT可能是对称NAT。在这种情况下,您将需要TURN服务器来建立连接。
如果其他方的NAT是Full Cone,你也不需要打洞。所以你真的需要知道对方的NAT类型来找到你的问题。