`ipfs swarm connect:`connect failure:拨号尝试失败:超出了上下文截止时间

时间:2018-03-18 11:11:19

标签: ipfs

我正在使用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",

1 个答案:

答案 0 :(得分:1)

我相信您不必打开APIGateway端口即可连接到您的对等方。而是尝试从外部检查您的连接性:

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