在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环回地址,没有公共地址。
现在使用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 id <PeerID>
你可以通过做ipfs dht findpeer <PeerID>
向DHT询问它如何看待同伴。在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