Risoluzione DNS non riesce a pingare e arricciare, ma non a scavare

8

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?

    
posta EngineerBetter_DJ 06.09.2016 - 11:21
fonte

2 risposte

4

dig da una parte e curl / ping dall'altra parte stanno recuperando dati da diversi host:

dig richiede un server DNS - nel tuo caso il tuo localhost (127.0.0.1) - per una voce del database: l'indirizzo IP relativo al FQDN api.local.pcfdev.io. L'host non deve essere eseguito o addirittura esistere affatto.

curl / ping prova a risolvere un indirizzo IP con mDNSResponder o con altri mezzi e infine a operare su / interagire con l'host remoto. Se l'host 192.168.11.11 non viene eseguito o non esiste affatto, entrambi falliranno.

Ora, la voce DNS è errata (api.local.pcfdev.io ha un altro IP rispetto a 192.168.11.11) o la voce DNS è corretta ma l'host 192.168.11.11 non è in esecuzione.

L'aggiunta di -AlwaysAppendSearchDomains come argomento a / usr / sbin / mDNSResponder in /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist non è raccomandata. Invece dovresti aggiungerlo a /Library/Preferences/com.apple.mDNSResponder.plist (fonte: man mDNSResponder ):

To cause mDNSResponder to run with these optional arguments when it launches on OS X 10.11 (El Capitan) and later, set the AlwaysAppendSearchDomains or NoMulticastAdvertisements boolean keys to true in /Library/Preferences/com.apple.mDNSResponder.plist and reboot.

Nel tuo caso non è affatto necessario impostare questa chiave, perché non è la causa del tuo problema.

Dopo aver scavato in VirtualBox, PCF Dev (fallendo ripetutamente con alcune "credenziali sbagliate" che tentano di accedere alla VM) e dnsmasq mi raccomando di deviare le query DNS solo a dnsmasq:

  • In Preferenze di Sistema > Rete > Interfaccia > Il server DNS rimuove tutti i server DNS eccetto 127.0.0.1 e applica le modifiche. Puoi anche configurare una seconda posizione con un solo 127.0.0.1 e mantenere il tuo attuale server DNS nell'altra configurazione.
  • aggiungi un file /usr/local/etc/resolv.dnsmasq.conf con il contenuto

    #use your preferred DNS servers here. In the example I use some Google name servers
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    
  • aggiungi resolv-file=/usr/local/etc/resolv.dnsmasq.conf alla riga ~ 46 di /usr/local/etc/dnsmasq.conf
  • aggiungi o sposta address=/.local.pcfdev.io/192.168.11.11 a / alla riga ~ 80 di /usr/local/etc/dnsmasq.conf
  • riavvia dnsmasq con:

    sudo launchctl stop homebrew.mxcl.dnsmasq
    sudo launchctl start homebrew.mxcl.dnsmasq
    
risposta data 06.09.2016 - 12:47
fonte
2

Ho avuto questo stesso problema. Penso che la cache DNS locale abbia dati errati dai miei precedenti test. È stato riparato rapidamente da:

sudo killall -HUP mDNSResponder
    
risposta data 21.10.2018 - 04:54
fonte

Leggi altre domande sui tag