Estoy ejecutando DNSMasq como un servidor DNS local, por lo que puedo resolver *.local.pcfdev.io
(como se explica aquí Uso de PCF Dev Offline con Mac OS X ). Todo funcionó cuando configuré las cosas por primera vez.
Un par de días después, después de algunos reinicios de mi MacBook, sin conexión ya no puedo resolver cosas como api.local.pcfdev.io
usar curl
o ping
. Sin embargo, dig
hace lo correcto.
$ 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
He intentado añadir -AlwaysAppendSearchDomains
como argumento para /usr/sbin/mDNSResponder
en /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
y se reinicia el mDNSResponder con launchctl
, pero fue en vano.
ACTUALIZACIÓN 1
Definitivamente hay algo escuchando en la IP local correcta:
$ 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.
ACTUALIZACIÓN 2
Después de probar la siguiente sugerencia de eliminar todos los servidores DNS de las Preferencias de red 127.0.0.1
, excepto , no puedo resolver nada. Logré sacar algunos registros de depuración de 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)
También observé eso como se explica en la respuesta propuesta, nslookup
y dig
no hago que se registre nada mDNSResponder
, pero otras herramientas ( ping
, curl
) lo hacen.
Por lo tanto, parece que, por cualquier motivo, dnsmasq
no funciona (puedo establecer una conexión TCP 127.0.0.1:53
) o mDNSResponder
no lo está utilizando.
ACTUALIZACIÓN 3
etc/resolve.conf
deja de existir cuando mi adaptador wifi está activo, pero no estoy conectado a una red. ¿Podría ser esta la razón por la cual las herramientas CLI no usan el dnsmasq
servidor local ?
curl
owget
o recibirlos en los instrumentos / perfilador / depurador y ver lo que está sucediendo realmente a hacer que el error no podía resolver.Respuestas:
Tuve este mismo problema. Creo que el caché de DNS local tenía datos incorrectos de mis pruebas anteriores. Fue arreglado rápidamente por:
fuente
ping
y, adig
veces, devuelvo diferentes direcciones IP (generalmente con DNS de horizonte dividido) y este comando lo soluciona. Cuál es la causa raíz, no estoy seguro, desafortunadamente.dig por un lado y curl / ping por otro lado están recuperando datos de diferentes hosts:
dig consulta un servidor DNS, en su caso su localhost (127.0.0.1), para una entrada en la base de datos: la dirección IP relacionada con el FQDN api.local.pcfdev.io. El host en sí no tiene que ejecutarse ni existir en absoluto.
curl / ping intenta resolver una dirección IP con mDNSResponder o por otros medios y finalmente operar o interactuar con el host remoto. Si el host 192.168.11.11 no se ejecuta o no existe, ambos fallarán.
Ahora, o la entrada DNS es incorrecta (api.local.pcfdev.io tiene una IP diferente a 192.168.11.11) o la entrada DNS es correcta pero el host 192.168.11.11 no se está ejecutando.
No se recomienda agregar -AlwaysAppendSearchDomains como argumento para / usr / sbin / mDNSResponder en /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist . En su lugar, debe agregarlo a /Library/Preferences/com.apple.mDNSResponder.plist (fuente:)
man mDNSResponder
:En su caso, no es necesario establecer esta clave, porque no es la causa de su problema.
Después de excavar en VirtualBox, PCF Dev (fallando repetidamente con algunas "credenciales incorrectas" tratando de iniciar sesión en la VM) y dnsmasq recomiendo transferir las consultas DNS solo a dnsmasq:
agregue un archivo /usr/local/etc/resolv.dnsmasq.conf con el contenido
resolv-file=/usr/local/etc/resolv.dnsmasq.conf
en la línea ~ 46 de /usr/local/etc/dnsmasq.confaddress=/.local.pcfdev.io/192.168.11.11
a / a la línea ~ 80 de /usr/local/etc/dnsmasq.confreiniciar dnsmasq con:
fuente
192.168.11.11
; la entrada real de DNS público para*.local.pcfdev.io
siempre apunta a la misma IP local, por lo que tan pronto como me conecte a las web informativas,curl
debo obtener una respuesta de ese servidor DNS y poder averiguar qué dirección IP usar.curl
,ping
y los otros binarios que quiero usar están usando un medio para buscar entradas DNS (que no está usando eldnsmasq
servidor en localhost),nslookup
ydig
están usando otros medios. ¡Creo que necesito aprender más sobre mDNSResponder!Me llevó mucho más tiempo resolver esto de lo que debería. Después de reiniciar mDNSResolver docenas de veces como se recomienda en otros subprocesos:
Finalmente intenté algo más. Inhabilité Wi-Fi y eliminé todas mis redes preferidas. Luego restablecí la conexión Wi-Fi y todo funcionó bien:
YMMV, pero esto es lo que finalmente funcionó para mí. Probablemente debería haber sido lo primero que intenté.
fuente