J'exécute DNSMasq en tant que serveur DNS local, donc je peux résoudre *.local.pcfdev.io
(comme indiqué ici Utilisation de PCF Dev hors ligne avec Mac OS X ). Tout a fonctionné quand j'ai mis les choses en place.
Quelques jours plus tard, après quelques redémarrages de mon MacBook, hors ligne, je ne peux plus résoudre des problèmes comme l' api.local.pcfdev.io
utilisation de curl
ou ping
. Cependant, dig
fait la bonne chose.
$ 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
J'ai essayé d'ajouter -AlwaysAppendSearchDomains
comme argument à /usr/sbin/mDNSResponder
in /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
et redémarré le mDNSResponder avec launchctl
, mais en vain.
MISE À JOUR 1
Il y a certainement quelque chose à écouter sur la bonne IP locale:
$ 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.
MISE À JOUR 2
Après avoir essayé la suggestion ci-dessous de supprimer tous les serveurs DNS des préférences réseau sauf 127.0.0.1
, je ne peux rien résoudre. J'ai réussi à me déconnecter du débogage 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)
J'ai également observé cela comme expliqué dans la réponse proposée, nslookup
et dig
ne cause rien à enregistrer mDNSResponder
, mais d'autres outils ( ping
, curl
) le font.
Il semble donc que pour une raison quelconque, cela dnsmasq
ne fonctionne pas (je peux établir une connexion TCP 127.0.0.1:53
) ou mDNSResponder
ne l'utilise pas.
MISE À JOUR 3
etc/resolve.conf
cesse d'exister lorsque mon adaptateur wifi est actif, mais je ne suis pas connecté à un réseau. Serait-ce la raison pour laquelle les outils CLI n'utilisent pas le dnsmasq
serveur local ?
curl
ouwget
ou les obtiendrais dans des instruments / profileur / débogueur et verrais ce qui se produit réellement pour causer l'erreur ne pourrait pas résoudre.Réponses:
Eu ce même problème. Je pense que le cache DNS local contenait de mauvaises données de mes tests précédents. Il a été rapidement corrigé par:
la source
ping
etdig
parfois renvoyer des adresses IP différentes (généralement avec un DNS à horizon divisé) et cette commande le corrige. Quelle est la cause profonde, je ne suis pas sûr, malheureusement.creuser d'une part et curl / ping d'autre part récupèrent les données de différents hôtes:
dig interroge un serveur DNS - dans votre cas, votre hôte local (127.0.0.1) - pour une entrée de base de données: l'adresse IP liée au nom de domaine complet api.local.pcfdev.io. L'hôte lui-même n'a pas besoin de fonctionner ni même d'exister.
curl / ping essaie de résoudre une adresse IP avec mDNSResponder ou par d'autres moyens et enfin fonctionne sur / interagit avec l'hôte distant. Si l'hôte 192.168.11.11 ne fonctionne pas ou n'existe pas du tout, les deux échoueront.
Maintenant, soit l'entrée DNS est incorrecte (api.local.pcfdev.io a une autre IP que 192.168.11.11) ou l'entrée DNS est correcte mais l'hôte 192.168.11.11 n'est pas en cours d'exécution.
Il n'est pas recommandé d' ajouter -AlwaysAppendSearchDomains comme argument à / usr / sbin / mDNSResponder dans /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist . Au lieu de cela, vous devez l'ajouter à /Library/Preferences/com.apple.mDNSResponder.plist (source:)
man mDNSResponder
:Dans votre cas, il n'est pas nécessaire de définir cette clé, car ce n'est pas la cause de votre problème.
Après avoir creusé dans VirtualBox, PCF Dev (échec répété avec des "informations d'identification erronées" essayant de se connecter à la machine virtuelle) et dnsmasq, je recommande de déléguer les requêtes DNS à dnsmasq uniquement:
ajouter un fichier /usr/local/etc/resolv.dnsmasq.conf avec le contenu
resolv-file=/usr/local/etc/resolv.dnsmasq.conf
à la ligne ~ 46 de /usr/local/etc/dnsmasq.confaddress=/.local.pcfdev.io/192.168.11.11
à / vers la ligne ~ 80 de /usr/local/etc/dnsmasq.confredémarrez dnsmasq avec:
la source
192.168.11.11
; l'entrée DNS publique réelle pour*.local.pcfdev.io
toujours pointe vers la même adresse IP locale, donc dès que je me connecte à l'inforwebscurl
doit recevoir une réponse de ce serveur DNS et est en mesure de déterminer quelle adresse IP utiliser.curl
,ping
et les autres fichiers binaires que je veux utiliser, utilisent un moyen de rechercher les entrées DNS (qui n'utilise pas lednsmasq
serveur sur localhost)nslookup
etdig
utilisent un autre moyen. Je suppose que je dois en savoir plus sur mDNSResponder!Il m'a fallu beaucoup plus de temps pour résoudre ce problème qu'il n'aurait dû. Après avoir redémarré mDNSResolver des dizaines de fois comme recommandé sur d'autres threads:
J'ai finalement essayé autre chose. J'ai désactivé le Wi-Fi et supprimé tous mes réseaux préférés. Ensuite, j'ai rétabli la connexion Wi-Fi et tout a bien fonctionné:
YMMV, mais c'est ce qui a finalement fonctionné pour moi. Cela aurait probablement dû être la première chose que j'essayais.
la source