7

我正在使用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 对等体时,我遇到以下错误:

connect failure: dial attempt failed: context deadline exceeded.

但是当我在所有端口都打开的亚马逊 AWS 上尝试时,它可以工作,因此 swarm 连接以成功结束。

[Q]为了ipfs swarm connect工作,API 和网关端口应该开放吗?还是我应该做点别的?

例如应该:端口 5001 和 8080 无论如何都要开放?

.ipfs/config文件:

"API": "/ip4/127.0.0.1/tcp/5001",
"Gateway": "/ip4/127.0.0.1/tcp/8080",
4

1 回答 1

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
于 2018-09-23T16:33:09.927 回答