3 votos

MacOS, launchctl y dnsmasq para la suplantación de dominios localhost

Normalmente soy un usuario de Linux, pero me gustaría probar mi aplicación web mojolicious en un sistema MacOS. *.test *.*.test y *.*.*.test todo para resolver a 127.0.0.1, donde mi webapp está escuchando ansiosamente en el puerto 80 .

Entiendo que la mejor manera de hacerlo es instalando dnsmasq. Para MacOS,

# brew install dnsmasq

y luego

# echo "address=/test/127.0.0.1" >> /usr/local/dnsmasq.conf
# launchctl start dnsmasq
# launchctl list | grep dns
89254   0   homebrew.mxcl.dnsmasq

así que, si entiendo esto correctamente, ping abc.test debería ahora hacer ping a localhost. por desgracia, no lo hace. (o, ¿hay una mejor manera de probar?)

Tampoco entiendo cómo apagar y reiniciar dnsmasq. launchctl restart dnsmasq , launchctl kill dnsmasq.mxcl.dnsmasq y launchctl disable 89254 (y muchas permutaciones de las mismas) parecen provocar desprecio pero no resultados.

8voto

tstaylor7 Puntos 301

No has dicho en qué versión de MacOS estás; mi respuesta aquí es de la versión 10.12.5 de MacOS Sierra. (La estoy usando para hacer pruebas contra una instalación VMWare de ADCS...)

En primer lugar los comandos para detener e iniciar dnsmasq son:

sudo launchctl stop homebrew.mxcl.dnsmasq
sudo launchctl start homebrew.mxcl.dnsmasq

ETA Si launchctl stop no la detiene, es probable que la .plist archivo (presumiblemente /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist contiene las líneas

<key>KeepAlive</key>
<true/>

Si no quieres que esté siempre encendido, cámbialo por

<key>KeepAlive</key>
<false/>

en su lugar. O puede desactivarlo con

sudo launchctl disable homebrew.mxcl.dnsmasq

La próxima vez que quieras encenderlo, ejecuta

sudo launchctl enable homebrew.mxcl.dnsmasq

Segundo , debería comprobar los otros valores de su archivo dnsmasq.conf. Aquí está el mío:

[jenny@temeraire ~] $ grep -v ^# /usr/local/etc/dnsmasq.conf | grep -v ^$
domain-needed
bogus-priv
resolv-file=/usr/local/etc/resolv.conf
server=/ad.dybedahl.se/192.168.226.10
server=/226.168.192.in-addr.arpa/192.168.226.10
listen-address=127.0.0.1
no-negcache

Observe la línea resolv-file . Le dice a dnsmasq qué servidores de nombres usar para los hosts que no están en la configuración de dnsmasq. En mi caso, se ve así:

[jenny@temeraire ~] $ more /usr/local/etc/resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.8.4

Así que todas las búsquedas de DNS que no sean respondidas por mi servidor virtual de AD serán manejadas por los servidores de nombres de Google, lo que significa que todavía puedo conectarme a hosts que no están en mi configuración.

Tercero para depurar si dnsmasq actúa correctamente, no use ping. En su lugar, use dig, así:

dig @127.0.0.1 abc.test

Para comprobar si su sistema está utilizando dnsmasq como resolvedor, utilice de nuevo dig:

dig abc.test

Te dirá qué servidor de nombres está utilizando, entre otras cosas.

Dig le dará información sobre cómo se realiza realmente la búsqueda.

Cuarto para usar dnsmasq como su resolvedor, necesita también cambiar /etc/resolv.conf para que apunte a 127.0.0.1 en lugar de a lo que apunta ahora. Debería empezar por copiar su actual /etc/resolv.conf a /usr/local/etc/resolv.conf para que dnsmasq sepa qué servidores de nombre utilizar. Entonces cambie /etc/resolv.conf para que diga

nameserver 127.0.0.1

En mi portátil, lo hago en Preferencias del Sistema -> Red -> DNS. No estoy seguro de cómo se hace en un servidor; quizás simplemente editando el archivo funcione.

0 votos

Hola Jenny esto fue genial. [0] (/etc/resolv.conf afirma que ya no se utiliza en OS X.) [1] mi macbook se mueve, también, por lo que necesita para recoger la dirección IPv4 a través de DHCP. por desgracia, creo que DHCP también rellena Red->DNS. ¿cómo se fija DNS a 127.0.0.1, pero todavía recoger / repoblar la IP? [2] Acabo de notar que launchctl stop relanza automáticamente dnsmasq. así que ¿cómo se detiene realmente esta cosa?

0 votos

@ivoWelch He añadido información sobre cómo detener el servicio de forma más permanente. En cuanto al DHCP, si entras y editas la configuración como escribí, eso anulará la configuración del DNS mientras sigue recogiendo el resto de la configuración del DHCP.

0 votos

@ivoWelch Añadir un giro adicional como conseguir que dnsmasq en varias redes DHCP funcione (su punto 1) está más allá del alcance de su pregunta original. Por favor, haz una nueva pregunta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X