5 votes

Dnsmasq quitte avec "abandon"

J'ai installé dnsmasq en utilisant Brew et j'ai essayé de le faire fonctionner en tant que service sans succès. Voici comment je l'ai installé :

brew install dnsmasq
sudo brew services start dnsmasq

system.log montre simplement 2 lignes en boucle :

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.

J'ai essayé de le lancer manuellement et j'ai obtenu des résultats similaires :

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

Le statut de sortie est 134, ce qui est cohérent avec le message d'abandon que je vois. Ajouter sudo ne résout pas le problème.

Si je définis le numéro de port sur 0, désactivant ainsi effectivement le DNS, alors le processus s'exécute indéfiniment, mais évidemment sans rien faire de particulier.

Avez-vous une idée de ce qui se passe, ou comment je peux déboguer cela plus en profondeur ?

Je suis sur Mac OS Sierra, 10.12.4

2voto

Christopher Points 965

J'avais les mêmes symptômes qui ont été décrits dans la question ainsi qu'un fichier PID nouveau et obsolète dans /var/run/dnsmasq.pid toutes les 10 secondes. Je travaille avec dnsmasq 2.77 installé via Homebrew, et macOS 10.12.5. J'avais plus de 29 000 hôtes définis dans /etc/hosts, ce qui était bien jusqu'à un certain point - peut-être la mise à niveau de macOS ou de dnsmasq.

J'ai fait une sauvegarde de /etc/hosts puis j'ai supprimé toutes les lignes du fichier d'hôtes sauf celles-ci.

127.0.0.1      localhost
255.255.255.255 broadcasthost
::1            localhost

255.255.255.255 broadcasthost

Après avoir essayé avec le fichier d'hôtes minimal, j'ai constaté que dnsmasq fonctionnait.

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

Mais je n'ai pas perdu les définitions des hôtes à bloquer. Elles ont été migrées dans le fichier de configuration de dnsmasq. Une définition d'hôte dans /etc/hosts ressemble à l'exemple suivant.

0.0.0.0 analytics.google.com

La définition correspondante dans dnsmasq.conf ressemble à l'exemple suivant.

address=/analytics.google.com/0.0.0.0

Encouragé, j'ai ensuite ajouté à nouveau dans le fichier d'hôtes toutes mes propres définitions pour mon réseau domestique LAN, mon réseau de travail LAN, certains surnoms d'hôtes distants et des hôtes virtuels locaux.

2voto

D-Wa Points 91

La réponse de Christopher m'a mis sur la bonne voie : le problème était en effet /etc/hosts.

Après plusieurs essais, j'ai déterminé que dnsmasq plantait si /etc/hosts contient un nom de domaine de plus de 49 caractères.

Comme je ne voulais pas vraiment utiliser /etc/hosts en premier lieu, j'ai pu résoudre le problème en ajoutant simplement -h à la ligne de commande, ou en décommentant la ligne qui dit no-hosts dans /usr/local/etc/dnsmasq.conf

1voto

klanomath Points 63400

Le démon de lancement est redémarré car vous avez oublié l'étape initiale de création d'un fichier dnsmasq.conf. Le fichier de configuration est référencé dans le plist!

Solution:

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

Modifiez le fichier de configuration (par exemple le port d'écoute/interfaces/noms de domaine etc). Ensuite, je vous recommande de copier et de lancer manuellement le plist du démon de lancement - cette étape ne doit être exécutée qu'une seule fois:

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

Je n'ai pas d'explication pourquoi le processus est interrompu lors de son démarrage manuel!

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X