dnsmasq si chiude con "abort"

3

Ho installato dnsmasq usando brew, e ho cercato di eseguirlo come un servizio senza successo. Ecco come l'ho installato:

brew install dnsmasq
sudo brew services start dnsmasq

system.log mostra solo 2 righe più e più volte:

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.

Ho provato a eseguirlo manualmente e ho ottenuto risultati simili:

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

Lo stato di uscita è 134, che è coerente con il messaggio di interruzione che sto vedendo. L'aggiunta di sudo non aiuta.

Se imposto il numero di porta su 0, disabilitando in modo efficace il DNS, il processo viene eseguito a tempo indeterminato, ma ovviamente con molto di tutto.

Qualche idea su cosa sta succedendo, o su come posso eseguire il debugging ulteriormente?

Sono su Mac OS Sierra, 10.12.4

    
posta itsadok 01.05.2017 - 09:11
fonte

3 risposte

1

Ho avuto gli stessi sintomi descritti nella domanda e un file PID nuovo e aggiornato in /var/run/dnsmasq.pid ogni 10 secondi. Sto lavorando con dnsmasq 2.77 installato tramite Homebrew e macOS 10.12.5. Avevo più di 29.000 host definiti in /etc/hosts , il che andava bene fino ad un certo punto: l'aggiornamento di macOS o dnsmasq, forse.

Ho fatto un backup di /etc/hosts e poi ho rimosso tutte le linee dal file hosts eccetto quanto segue.

127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

255.255.255.255 broadcasthost

Dopo aver provato con il file degli host minimi, ho trovato che dnsmasq funziona.

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

Ma non ho perso le definizioni di host da bloccare. Sono stati migrati al file di configurazione dnsmasq. Una definizione host in /etc/hosts è simile al seguente esempio.

0.0.0.0 analytics.google.com

La definizione corrispondente in dnsmasq.conf è simile al seguente esempio.

address=/analytics.google.com/0.0.0.0

Incoraggiato, ho quindi aggiunto al file host tutte le mie definizioni per la mia LAN di casa, la mia LAN di lavoro, alcuni nickname degli host remoti e host virtuali locali.

    
risposta data 13.06.2017 - 21:32
fonte
1

La risposta di Christopher mi ha messo sulla strada giusta: il problema era effettivamente / etc / hosts.

Dopo alcuni tentativi ed errori ho determinato che dnsmasq si sarebbe bloccato se / etc / hosts contiene un nome di dominio con più di 49 caratteri.

Dato che non volevo davvero utilizzare / etc / hosts in primo luogo, sono stato in grado di risolvere il problema semplicemente aggiungendo -h alla riga di comando, o decommentando la riga che dice no-hosts in /usr/local/etc/dnsmasq.conf

    
risposta data 20.06.2017 - 18:18
fonte
0

Il daemon di avvio viene riavviato perché hai dimenticato il passaggio iniziale per creare un file dnsmasq.conf. Il file conf è referenziato nel plist!

Soluzione:

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

Modifica il file di configurazione (ad esempio porta di ascolto / interfacce / nomi di dominio ecc.). Quindi ti consiglio di copiare e lanciare il demone di avvio plist manualmente - questo passaggio deve essere eseguito una sola volta:

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

Non ho alcuna spiegazione sul perché il processo venga interrotto avviando manualmente!

    
risposta data 01.05.2017 - 11:20
fonte

Leggi altre domande sui tag