dnsmasq se cierra con "abortar"

3

Instalé dnsmasq utilizando brew, e intenté ejecutarlo como un servicio sin éxito. Así es como lo instalé:

brew install dnsmasq
sudo brew services start dnsmasq

system.log solo muestra 2 líneas una y otra vez:

dnsmasq[52260]: setting --bind-interfaces option because of OS limitations
com.apple.xpc.launchd[1] (homebrew.mxcl.dnsmasq): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

Intenté ejecutarlo manualmente y obtuve resultados similares:

itsadok@mpb ~$ /usr/local/sbin/dnsmasq -d --interface=lo0 --port=50003                                                                                                                              [2.2.4]
dnsmasq: started, version 2.76 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt no-DBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack no-ipset auth no-DNSSEC loop-detect no-inotify
dnsmasq: setting --bind-interfaces option because of OS limitations
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 192.168.1.1#53
[1]    53009 abort      /usr/local/sbin/dnsmasq -d --interface=lo0 --port=50003

El estado de salida es 134, que es consistente con el mensaje de cancelación que estoy viendo. Agregar sudo no ayuda.

Si configuro el número de puerto en 0, deshabilitando efectivamente el DNS, entonces el proceso se ejecuta de forma indefinida, pero obviamente con mucho de hacer cualquier cosa.

¿Alguna idea de lo que está pasando o de cómo puedo depurar esto?

Estoy en Mac OS Sierra, 10.12.4

    
pregunta itsadok 01.05.2017 - 09:11

3 respuestas

1

Tuve los mismos síntomas que se describieron en la pregunta, así como un archivo PID nuevo y obsoleto en /var/run/dnsmasq.pid cada 10 segundos. Estoy trabajando con dnsmasq 2.77 instalado a través de Homebrew, y macOS 10.12.5. Tenía más de 29,000 hosts definidos en /etc/hosts , lo cual estaba bien hasta cierto punto: actualizar macOS o dnsmasq, quizás.

Hice una copia de seguridad de /etc/hosts y luego eliminé todas las líneas del archivo de hosts, excepto lo siguiente.

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

255.255.255.255 broadcasthost

Después de intentarlo con el archivo de hosts mínimos, encontré que dnsmasq funcionaba.

ps aux | grep dnsmasq
sudo lsof -n -i4TCP:53 | grep 'LISTEN'

Pero no perdí las definiciones de hosts para bloquear. Fueron migrados al archivo de configuración dnsmasq. Una definición de host en /etc/hosts se parece al siguiente ejemplo.

0.0.0.0 analytics.google.com

La definición correspondiente en dnsmasq.conf se parece a la siguiente muestra.

address=/analytics.google.com/0.0.0.0

Animado, luego agregué al archivo de hosts todas mis propias definiciones para mi LAN doméstica, mi LAN de trabajo, algunos apodos de hosts remotos y hosts virtuales locales.

    
respondido por el Christopher 13.06.2017 - 21:32
1

La respuesta de Christopher me puso en el camino correcto: de hecho, el problema fue / etc / hosts.

Después de algunas pruebas y errores, determiné que dnsmasq se bloquearía si / etc / hosts contiene un nombre de dominio con más de 49 caracteres.

Como en realidad no quería usar / etc / hosts en primer lugar, pude solucionar el problema simplemente agregando -h a la línea de comandos, o descomentar la línea que dice no-hosts en /usr/local/etc/dnsmasq.conf

    
respondido por el itsadok 20.06.2017 - 18:18
0

El daemon de inicio se reinicia porque olvidó el paso inicial para crear un archivo dnsmasq.conf. El archivo conf está referenciado en el plist!

Solución:

sudo brew services stop dnsmasq
cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf

Modifique el archivo de configuración (por ejemplo, puerto de escucha / interfaces / nombres de dominio, etc.). Luego recomiendo copiar e iniciar la lista del daemon de inicio manualmente. Este paso debe ejecutarse solo una vez:

sudo cp /usr/local/opt/dnsmasq/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons/
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist 

No tengo ninguna explicación de por qué el proceso se aborta al iniciarlo manualmente.

    
respondido por el klanomath 01.05.2017 - 11:20

Lea otras preguntas en las etiquetas