为了我的学术项目,我正在尝试实现以下内容。一个监听在3000端口的web服务器Node JS应用程序。因此,如果您
现在我在本地机器上运行上述Web服务器。我的调制解调器位于NAT后面。假设我在调制解调器中进行端口转发到
现在我的要求是任何来自网络的人都可以访问我的Web服务器
我正在尝试编写另一个客户端-它打开到第三方服务器的连接。假设它在端口
现在,任何人都可以在互联网上启动此命令
任何人再次curl到
我的两个问题是-
1.是否有比我提出的更好的方法?
2.是否有任何著名的node-js库可用于此类操作,我可以使用UDP punch hole。或者我正在考虑编写一个通用的Lib来执行此操作-这听起来像重新发明轮子吗?
注-
在这个学术项目中,我们正在尝试学习如何使任何本地应用程序在调制解调器中无需端口转发即可开放给世界。
curl http://localhost:3000
,您将获得Hello World!
(一个简单的网页)。现在我在本地机器上运行上述Web服务器。我的调制解调器位于NAT后面。假设我在调制解调器中进行端口转发到
myip:3000
,那么它就会对外开放。但这里我遇到了最大的问题-我不想使用调制解调器进行端口转发,而是要使用第三方服务器进行UDP打洞。现在我的要求是任何来自网络的人都可以访问我的Web服务器
curl http://third-party-server-ip:3000
。我正在尝试编写另一个客户端-它打开到第三方服务器的连接。假设它在端口
41234
上进行了打洞。该端口已经打开。第三方主机可以向该端口发送一些内容。现在,任何人都可以在互联网上启动此命令
curl http://third-party-ip:3000
到第三方主机。因此,第三方返回myip:udpPunchHolePort即myip:41234
。任何人再次curl到
myip:41234
,它将被node js UDP punch应用程序接收,因此它将重定向到localhost:3000
。最后,anyone
将从localhost:3000
接收响应。我的两个问题是-
1.是否有比我提出的更好的方法?
2.是否有任何著名的node-js库可用于此类操作,我可以使用UDP punch hole。或者我正在考虑编写一个通用的Lib来执行此操作-这听起来像重新发明轮子吗?
注-
在这个学术项目中,我们正在尝试学习如何使任何本地应用程序在调制解调器中无需端口转发即可开放给世界。
我们在Skype协议分析中阅读到了内容,这也是我们的灵感来源。
ssh -R 80:localhost:3000 user@thirdpartyip
。 - Magnus