Ich verwende DNSMasq als lokalen DNS-Server, damit ich das Problem beheben kann *.local.pcfdev.io
(wie hier beschrieben. Verwenden von PCF Dev Offline mit Mac OS X ). Alles hat funktioniert, als ich die Dinge zum ersten Mal eingerichtet habe.
Ein paar Tage später, nach einigen Neustarts meines MacBook, kann ich im Offline-Modus Dinge wie die api.local.pcfdev.io
Verwendung von curl
oder nicht mehr lösen ping
. Tut dig
jedoch das Richtige.
$ 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
Ich habe versucht, -AlwaysAppendSearchDomains
als Argument zu /usr/sbin/mDNSResponder
in hinzuzufügen /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
und den mDNSResponder mit neu zu starten launchctl
, aber ohne Erfolg.
UPDATE 1
Auf der richtigen lokalen IP ist definitiv etwas zu hören:
$ 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
Nachdem 127.0.0.1
ich den folgenden Vorschlag ausprobiert habe, alle DNS-Server aus den Netzwerkeinstellungen zu entfernen , kann ich nichts auflösen. Ich habe es geschafft, eine Debug-Abmeldung zu erhalten 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)
Ich habe dies auch beobachtet, wie in der vorgeschlagenen Antwort erläutert, nslookup
und dig
nicht dazu geführt, dass etwas protokolliert wird mDNSResponder
, sondern andere Tools ( ping
, curl
).
Aus irgendeinem Grund dnsmasq
funktioniert es entweder nicht (ich kann eine TCP-Verbindung herstellen 127.0.0.1:53
) oder es mDNSResponder
wird nicht verwendet.
UPDATE 3
etc/resolve.conf
hört auf zu existieren, wenn mein WLAN-Adapter aktiv ist, aber ich bin nicht mit einem Netzwerk verbunden. Könnte dies der Grund sein, warum CLI-Tools den lokalen dnsmasq
Server nicht verwenden ?
curl
oderwget
oder sie in Instrumente erhalten / Profiler / Debugger und sehen , was wirklich passiert das könnte verursachen keine Fehler beheben.Antworten:
Hatte das gleiche Problem. Ich denke, der lokale DNS-Cache hatte schlechte Daten aus meinen vorherigen Tests. Es wurde schnell behoben durch:
quelle
ping
unddig
manchmal unterschiedliche IP-Adressen zurückgegeben (normalerweise mit Split-Horizon-DNS), und dieser Befehl behebt das Problem. Was die Grundursache ist, bin ich mir leider nicht sicher.dig einerseits und curl / ping andererseits rufen Daten von verschiedenen Hosts ab:
dig fragt einen DNS-Server - in Ihrem Fall Ihren localhost (127.0.0.1) - nach einem Datenbankeintrag ab: Die IP-Adresse des FQDN api.local.pcfdev.io. Der Host selbst muss nicht ausgeführt werden oder überhaupt nicht existieren.
Curl / Ping versuchen, eine IP-Adresse mit mDNSResponder oder auf andere Weise aufzulösen und schließlich mit dem Remote-Host zu arbeiten / zu interagieren. Wenn der Host 192.168.11.11 nicht ausgeführt wird oder überhaupt nicht vorhanden ist, schlagen beide fehl.
Jetzt ist entweder der DNS-Eintrag falsch (api.local.pcfdev.io hat eine andere IP als 192.168.11.11) oder der DNS-Eintrag ist korrekt, aber der Host 192.168.11.11 wird nicht ausgeführt.
Das Hinzufügen von -AlwaysAppendSearchDomains als Argument zu / usr / sbin / mDNSResponder in /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist wird nicht empfohlen. Stattdessen sollten Sie es zu /Library/Preferences/com.apple.mDNSResponder.plist hinzufügen (Quelle :)
man mDNSResponder
:In Ihrem Fall ist es überhaupt nicht erforderlich, diesen Schlüssel festzulegen, da dies nicht die Ursache für Ihr Problem ist.
Nach dem Einstieg in VirtualBox, PCF Dev (wiederholt fehlgeschlagen mit einigen "falschen Anmeldeinformationen" beim Versuch, sich bei der VM anzumelden) und dnsmasq empfehle ich, DNS-Abfragen nur an dnsmasq zu übertragen:
Fügen Sie eine Datei /usr/local/etc/resolv.dnsmasq.conf mit dem Inhalt hinzu
resolv-file=/usr/local/etc/resolv.dnsmasq.conf
Fügen Sie in Zeile ~ 46 von /usr/local/etc/dnsmasq.conf hinzuaddress=/.local.pcfdev.io/192.168.11.11
in / zu Zeile ~ 80 von /usr/local/etc/dnsmasq.confStarten Sie dnsmasq neu mit:
quelle
192.168.11.11
; Der tatsächliche öffentliche DNS-Eintrag für*.local.pcfdev.io
verweist immer auf dieselbe lokale IP-Adresse. Sobald ich eine Verbindung zu den Inforwebs herstelle,curl
muss dieser DNS-Server eine Antwort erhalten und kann herausfinden, welche IP-Adresse verwendet werden soll.curl
,ping
und die anderen Binärdateien, die ich auf dieses Ding treffen möchte, verwenden eine Methode zum Nachschlagen von DNS-Einträgen (die dendnsmasq
Server auf localhost nicht verwendet)nslookup
unddig
verwenden eine andere Methode. Ich muss wohl mehr über mDNSResponder erfahren!Ich habe viel länger gebraucht, um das zu lösen, als es hätte sein sollen. Nach dem dutzende Male Neustart von mDNSResolver, wie in anderen Threads empfohlen:
Ich habe endlich etwas anderes ausprobiert. Ich habe Wi-Fi deaktiviert und alle meine bevorzugten Netzwerke gelöscht. Dann habe ich die Wi-Fi-Verbindung wiederhergestellt und alles hat gut funktioniert:
YMMV, aber das hat endlich für mich funktioniert. Es hätte wahrscheinlich das erste sein sollen, was ich versucht habe.
quelle