macOS, launchctl y dnsmasq para la falsificación del dominio localhost

2

Normalmente soy un usuario de Linux, pero me gustaría probar mi aplicación web mojolicious en un sistema macOS. por lo tanto, me gustaría que *.test *.*.test y *.*.*.test todos se resuelvan en 127.0.0.1, donde mi aplicación web está escuchando con entusiasmo en el puerto 80.

Entiendo que esto se hace mejor 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

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

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

    
pregunta ivo Welch 13.07.2017 - 10:32

1 respuesta

6

No has dicho en qué versión de MacOS estás; Mi respuesta aquí es de macOS Sierra versión 10.12.5. (Lo estoy usando para ejecutar pruebas en una instalación VMWare de ADCS ...)

Primero , los comandos para detener e iniciar dnsmasq son:

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

ETA Si launchctl stop realmente no lo detiene, es probable que el archivo .plist (probablemente /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist contenga las líneas

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

Si no desea que esté siempre encendido, cámbielo a

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

en su lugar. O puedes desactivarlo con

sudo launchctl disable homebrew.mxcl.dnsmasq

La próxima vez que quieras encenderlo, ejecuta

sudo launchctl enable homebrew.mxcl.dnsmasq

Segundo , debe verificar los otros valores de su archivo dnsmasq.conf. Aquí está la mía:

[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

Note la línea resolv-file . Le indica 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.

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

dig @127.0.0.1 abc.test

Para probar si su sistema está usando dnsmasq como su resolutor, nuevamente use dig:

dig abc.test

Le dirá qué servidor de nombres está usando, entre otras cosas.

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

Cuarto , para usar dnsmasq como su resolución, también necesita cambiar /etc/resolv.conf para que apunte a 127.0.0.1 en lugar de lo que ahora apunta. Debes comenzar copiando tu actual /etc/resolv.conf a /usr/local/etc/resolv.conf , para que dnsmasq sepa qué servidores de nombres usar. Luego cambie /etc/resolv.conf para leer

nameserver 127.0.0.1

En mi computadora portátil, hago esto en Preferencias del sistema - > Red - > DNS. No estoy seguro de cómo lo haces en un servidor; quizás simplemente editar el archivo funcionará.

    
respondido por el Jenny D 13.07.2017 - 11:00

Lea otras preguntas en las etiquetas