我正在使用IPFS version 0.4.4.
我的目标是连接两个对等体,以防止IPFS对等体在从共享对等体读取IPFS哈希时停止。为了实现它,我使用ipfs swarm connect
将peer-A连接到peer-B,其中peer-B可以访问peer-A上的ipfs-file。
我的问题与:
有关 ipfs swarm connect /ip4/x.x.x.x/tcp/4003/ipfs/QmXXXXXXXXXXXXXXXXXXX
当我尝试将笔记本电脑连接到另一个IPFS-peer时,我面临以下错误:
connect failure: dial attempt failed: context deadline exceeded.
但是当我尝试在所有端口都处于打开状态的亚马逊AWS上运行时,群集连接就会成功。
[问] 为了使ipfs swarm connect
工作,应该打开API和网关端口吗?或者我应该做些什么?
例如:端口5001和8080无论什么都打开?
.ipfs/config
档案:
"API": "/ip4/127.0.0.1/tcp/5001",
"Gateway": "/ip4/127.0.0.1/tcp/8080",
答案 0 :(得分:1)
我相信您不必打开API
和Gateway
端口即可连接到您的对等方。而是尝试从外部检查您的连接性:
telnet x.x.x.x yyyy
#Trying x.x.x.x...
#Connected to x.x.x.x.
#Escape character is '^]'.
#/multistream/1.0.0
您可以在IPFS配置的Addresses
部分中看到端口,在我的情况下为4001
:
"Addresses": {
"Swarm": [
"/ip4/0.0.0.0/tcp/4001",
"/ip6/::/tcp/4001"
],
但是由于主机位于NAT之后,所以IPFS守护程序无法检测到可以访问该主机的实际IP,因此我不得不将其放在Announce
部分,例如
"Announce": ["/ip4/z.z.z.z/tcp/4001"],
找到正确的IP和端口后,我可以连接:
ipfs swarm connect /ip4/z.z.z.z/tcp/4001/ipfs/QmXXX_my_peer_id_XXX
#connect QmXXX_my_peer_id_XXX success