没有IP地址的IPFS在线节点

IPFS online node without IP address

在 IPFS 节点浏览器开发过程中,我们在 Addresses 字段中发现了一些没有有效 IP 的异常在线节点。例如:QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV

通过ipfs id命令获取节点信息。

查询:

root@tux:~# ipfs id QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV

响应:

{
"ID": "QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV",
"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFhgftYoqapg+Y7wlWq67HA4O2c37jelJxUJqai0DyZMEeyQBzw4+Jc0VxPuXJNovb3SRIz9XCq3tyibbBs2JcZkHF+i9t8WERJth7c3rnLsEddPHAagW9nnBd+XxT4l9guZZtYOQ/YFZBTicZEdyKdc4fithz4QaweZqj/sa5lWYuaTTEA9y4Zikhh2NkM6gs0Suhamtym2boBrFaIJMfS7I1GLJecg1ap/fGTBsdmncQ4cEKnxpUAtGzLcsqukr9qkTYKeXP5imGvrm077A1mXwbPTKP1st5zmtZduRayIfOWvWtwhrfm1CrTpUzhu+XZsAn5sTO/Dk2QWnTiuNzAgMBAAE=",
"Addresses": [
    "/ip6/::1/tcp/4001"
],
"AgentVersion": "go-ipfs/0.4.17/",
"ProtocolVersion": "ipfs/0.1.0"
}

只有 IPv6 环回地址,没有 public。

现在使用 ipfs ping ping 节点:

查询:

root@tux:~# ipfs ping -n 4 QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV

响应:

PING QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV.
Pong received: time=8.28 ms
Pong received: time=5.98 ms
Pong received: time=6.27 ms
Pong received: time=6.20 ms
Average latency: 6.68ms

没有IP地址怎么办?如何获取此类节点的IP地址?

您可以通过 ipfs dht findpeer <PeerID> 询问 DHT 如何看待对等点,而不是 ipfs id <PeerID>。在 QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV 的情况下,我看到以下内容:

$ ipfs dht findpeer QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV

/ip4/192.168.10.11/tcp/4001
/ip4/127.0.0.1/tcp/4001
/ip6/::1/tcp/4001
/ip4/83.162.192.96/tcp/31885
/ip4/83.162.192.96/tcp/16803

如果您想查看如何连接到对等点,您可以使用ipfs swarm peers(您当前连接到的对等点)以及grep(过滤输出)

$ ipfs swarm peers | grep QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV

/ipfs/QmZSe5GZJb5jcKQZzQmdWaFtimTHafjvtxyMMTJy5nZ6hN/p2p-circuit/ipfs/QmRBRUCPY8saqzsLRyHexza3qUL8Wn9Zt59TcLMNnXF6zV