我将DNSMasq作为本地DNS服务器运行,因此可以解析*.local.pcfdev.io
(如此处所讨论,在Mac OS X中使用PCF Dev Offline)。当我第一次进行设置时,一切正常。
几天后,重新启动MacBook后,离线时我无法再解决诸如api.local.pcfdev.io
使用curl
或的问题ping
。但是,dig
做正确的事。
$ dig api.local.pcfdev.io
; <<>> DiG 9.8.3-P1 <<>> api.local.pcfdev.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46877
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;api.local.pcfdev.io. IN A
;; ANSWER SECTION:
api.local.pcfdev.io. 0 IN A 192.168.11.11
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Sep 6 10:17:44 2016
;; MSG SIZE rcvd: 53
$ curl api.local.pcfdev.io
curl: (6) Could not resolve host: api.local.pcfdev.io
我尝试将添加-AlwaysAppendSearchDomains
为/usr/sbin/mDNSResponder
in 作为参数,/System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
并使用重启了mDNSResponder launchctl
,但无济于事。
更新1
在正确的本地IP上肯定有一些监听:
$ nslookup api.local.pcfdev.io
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: api.local.pcfdev.io
Address: 192.168.11.11
$ ping api.local.pcfdev.io
ping: cannot resolve api.local.pcfdev.io: Unknown host
$ telnet 192.168.11.11 80
Trying 192.168.11.11...
Connected to 192.168.11.11.
Escape character is '^]'.
HTTP/1.1 400 Bad Request
Connection closed by foreign host.
更新2
尝试了以下建议从“网络首选项”中删除所有DNS服务器后127.0.0.1
,我无法解决任何问题。我设法从中注销了一些调试记录mDNSResponder
:
mDNSResponder[91]: 74: DNSServiceCreateConnection START PID[32612](ping)
mDNSResponder[91]: 74: Error socket 75 created 00000000 00000001
mDNSResponder[91]: 74: DNSServiceQueryRecord(15000, 0, api.local.pcfdev.io., Addr) START PID[32612]()
mDNSResponder[91]: 74: Error socket 75 closed 00000000 00000001 (0)
mDNSResponder[91]: 74: DNSServiceQueryRecord(api.local.pcfdev.io., Addr) ADD 0 api.local.pcfdev.io. Addr
mDNSResponder[91]: 74: Cancel 00000000 00000001
mDNSResponder[91]: 74: DNSServiceQueryRecord(api.local.pcfdev.io., Addr) STOP PID[32612]()
mDNSResponder[91]: 74: DNSServiceCreateConnection STOP PID[32612](ping)
我也注意到,在所提出的答案解释,nslookup
并dig
不会引起任何事情由被记录mDNSResponder
,但其他工具(ping
,curl
)做的。
因此,无论出于何种原因,这似乎都dnsmasq
不起作用(我可以建立与的TCP连接127.0.0.1:53
)或mDNSResponder
没有使用它。
更新3
etc/resolve.conf
当我的wifi适配器处于活动状态但不再连接到网络时,它便不再存在。这可能是CLI工具不使用本地dnsmasq
服务器的原因吗?
curl
或者wget
或让他们在仪器/分析器/调试器,看看什么是真正发生的事情引起无法解决的错误。