【发布时间】:2018-12-02 21:31:32
【问题描述】:
我有一些节点。每个节点都属于其他网络。每个节点都有像 192.168.0.2 这样的私有 IP,并保持在 NAT 后面。
节点之间是否有可能进行通信?实际上,我需要在这些独立节点之间传输文件。
我尝试使用这个项目 - https://github.com/libp2p/go-libp2p。但是 libp2p 有一些限制:
- 两个节点都有私有 IP 地址(同一网络)
- 其中至少有一个具有公共 IP 地址。
但是我有私有IP地址的节点,它们属于不同的网络。
更新。
有这样的解决方案:
- https://en.wikipedia.org/wiki/Hole_punching_(networking)
- https://en.wikipedia.org/wiki/Universal_Plug_and_Play
- https://stackoverflow.com/a/8524609/1756750
- UDP/TCP hole punching vs UPnP vs STUN vs?
- https://stackoverflow.com/a/31623109/1756750
- Behind NAT to behind NAT connection
- http://www.brynosaurus.com/pub/net/p2pnat/
【问题讨论】:
-
这不是围棋题,而是网络题。 Go 不能覆盖计算机所在的网络环境设置的限制。
-
@BertVerhees 我同意你的看法。但是我使用 go 标签只是为了解释,如果有人想给我一些 github 库。
-
没有可以解决由网络设置创建的限制的 go-library。当没有到 IP 地址的路由时,没有 go-library 可以让您到达该计算机。是TCPIP/路由问题,需要找网管解决。
-
@BertVerhees 我的意思是,也许有一些方法可以解决我的问题。像动态 dns 或某种服务网格。
-
您需要另一台服务器,您知道该服务器的 IP/端口,以便您可以在 NAT 框中交换端口和 IP,从而建立 P2P 连接。
标签: go p2p file-transfer nat upnp