跳至主要內容

could not dial endpoint 'orderer-api.127-0-0-1.nip.io:8080' 问题解决

Chiichen大约 2 分钟杂谈Debug杂谈网络问题Debug网络问题

could not dial endpoint 'orderer-api.127-0-0-1.nip.io:8080open in new window'

今天完成区块链实验的时候,在用 IBM-BlockChain-Platform vscode 插件完成实验内容的时候,在部署服务到 Local Docker 时出现了如下错误

could not dial endpoint 'orderer-api.127-0-0-1.nip.io:8080'

刚开始的时候一直在想这个域名是什么,看起来是某个服务的端口,但是似乎这个过程中又没有让我登录,不可能不登陆就能访问这种 API 服务的吧。后来上网搜索发现 .nip.io 会被 DNS 服务器 rebind 成一个特殊的地址,例如 hello.192.168.199.12.nip.io 就会变成 192.168.199.12 ,那么这个原来的地址理应是 127.0.0.1 也就是 Localhost ,我 ping 了一下

ping orderer-api.127-0-0-1.nip.io

发现是能 ping 通的,但是我执行

nslookup orderer-api.127-0-0-1.nip.io

却发现输出为

服务器:  UnKnown
Address:  198.18.0.2

名称:    orderer-api.127-0-0-1.nip.io
Address:  198.18.0.147

这 DNS 服务器地址怎么看都不对劲啊,而且解析出来的也不对。为什么 DNS 会出错呢,因为这是在我个人电脑上运行的,我就换到平时实验室的开发环境里试一下,同样运行

nslookup orderer-api.127-0-0-1.nip.io

输出却是

Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   orderer-api.127-0-0-1.nip.io
Address: 127.0.0.1

相关信息

127.0.0.53 是 Linux 的 systemd-resolve 机制的一个虚拟 DNS 服务器

后来我想了一下,这个东西应该跟我 Windows 上开启的 Clash for Windows , 有关系,它可能把这些流量都劫持了,用来做一些域名分流之类的工作,所以就无法实现 DNS rebind

我只要把 Clash for Windows 退出,这个问题就不存在了

nslookup orderer-api.127-0-0-1.nip.io

返回

服务器:  dns.google
Address:  8.8.8.8

非权威应答:
名称:    orderer-api.127-0-0-1.nip.io
Address:  127.0.0.1

不过 新版本的 Clash Core 应该解决了这个问题,因为我看到 这里open in new window有针对这种情况的测试用例,不过是两个月前加上的,因为本人用的是 2022.11 版本的,所以才出现了这个问题。