Sto eseguendo DNSMasq come server DNS locale, quindi posso risolvere *.local.pcfdev.io (come discusso qui Utilizzo di PCF Dev offline con Mac OS X ). Tutto ha funzionato quando ho impostato per la prima volta.
Un paio di giorni dopo, dopo alcuni riavvii del mio MacBook, mentre offline non posso più risolvere cose come api.local.pcfdev.io usando curl o ping . Tuttavia, dig fa la cosa giusta.
$ 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
Ho provato ad aggiungere -AlwaysAppendSearchDomains come argomento a /usr/sbin/mDNSResponder in /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist e ho riavviato mDNSResponder con launchctl , ma senza alcun risultato.
UPDATE 1
C'è sicuramente qualcosa in ascolto sull'IP locale giusto:
$ 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.
UPDATE 2
Dopo aver provato il seguente suggerimento di rimuovere tutti i server DNS da Preferenze di rete ad eccezione di 127.0.0.1 , non riesco a risolvere nulla. Sono riuscito a ottenere il log di debug di 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)
Ho anche osservato che, come spiegato nella risposta proposta, nslookup e dig non fanno in modo che nulla venga registrato da mDNSResponder , ma altri strumenti ( ping , curl ) fanno.
Quindi sembra che per qualsiasi motivo sia dnsmasq non funzioni (posso stabilire una connessione TCP a 127.0.0.1:53 ) o mDNSResponder non la sta usando.
UPDATE 3
etc/resolve.conf cessa di esistere quando il mio adattatore wifi è attivo, ma non sono connesso a una rete. Questo potrebbe essere il motivo per cui gli strumenti CLI non utilizzano il server dnsmasq locale?