J'exécute Debian Jessie et j'essaie de configurer dnsmasq comme serveur DNS de mise en cache. J'ai utilisé un guide pour trouver les éléments suivants /etc/dnsmasq.conf
:
listen-address=127.0.0.1
bind-interfaces
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
neg-ttl=3600
resolv-file=/etc/resolv.dnsmasq
no-poll
Faire sudo service dnsmasq restart
échoue et ça ne commencera pas, me disant
Mar 26 17:13:01 user dnsmasq[26743]: dnsmasq: syntax check OK.
Mar 26 17:13:01 user dnsmasq[26746]: dnsmasq: only one resolv.conf file allowed in no-poll mode.
Ok, assez étrange qu'une configuration directement sortie d'un guide ait échoué. Je vais juste supprimer l' no-poll
option pour voir si cela fonctionne. Cette fois, cela démarre très bien, mais la résolution DNS échoue clairement. Fichiers pertinents:
/etc/resolv.conf
:
nameserver 127.0.0.1
/etc/resolv.dnsmasq
:
nameserver 8.8.8.8
/var/run/dnsmasq/resolv.conf
:
nameserver 127.0.0.1
Le troisième fichier semble être le fichier resolv.conf en direct de dnsmasq, car l'ajout d'une ligne de serveur de noms pendant que dnsmasq est déjà en cours d'exécution entraîne le démarrage immédiat de la résolution DNS. Il semble donc qu'il ait ignoré mon /etc/resolv.dnsmasq
. J'ai également essayé d'ajouter une ligne de serveur de noms à mon /etc/resolv.conf
et de supprimer la resolv-file
ligne /etc/dnsmasq.conf
, mais elle est immédiatement remplacée par ce que vous voyez ci-dessus en faisant sudo service dnsmasq restart
.
Que se passe-t-il avec dnsmasq et dois-je configurer dnsmasq comme serveur DNS de mise en cache?
server=8.8.8.8
dans votre configuration dnsmasq?no-poll
fondamental dit d'ignorer leresolv-file
. Au démarrage, il prend le fichier le plus récent, ce sera donc/etc/resolv.conf
votre cas (car il est réécrit lorsque quelque chose change).Réponses:
Il semble y avoir un bogue dans le script de démarrage pour
dnsmasq
qui utiliseresolvconf
pour assommer le résolveur local si l'interface de bouclage locale n'est pas explicitementexcept
-ed dans le/etc/defaults/dnsmasq
fichier.La réponse courte est que vous pouvez ajouter ...
pour
/etc/defaults/dnsmasq
résoudre le problème.Pour plus d'informations, consultez cette question ...
/raspberrypi/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp
la source
bigjosh a raison - sauf qu'il y a eu une mise à jour de dnsmasq, et il y a maintenant une option à la fin de
/etc/default/dnsmasq
laquelle vous pouvez annuler le hachage:la source
/etc/defaults/dnsmasq
avaitIGNORE_RESOLVECONF=yes
des instructions pour le décommenter pour résoudre ce problème, ce qu'il n'a pas fait.Ne pas utiliser
Mettez le serveur DNS dans dnsmasq.conf, comme
Et ajoutez dans dnsmasq.conf
la source
Si vous voulez juste un serveur DNS de mise en cache uniquement et rien d'autre que dnsmasq peut faire, vous feriez mieux d'installer
lwresd
ou d'unbound
utiliser la configuration par défaut stock qui vous donne un serveur DNS de mise en cache uniquement. Ensuite, vous définissez simplement/etc/resolv.conf
d'utiliser "nameserver 127.0.0.1" et vous avez terminé.La bonne chose est que ces deux paquets ne plaisantent pas avec ce
/etc/resolv.conf
que fait dnsmasq et est donc une solution plus propre à mon humble avis. Vous pouvez également généralement supprimer leresolvconf
package afin que rien ne dérange/etc/resolv.conf
.Pour info, dnsmasq est devenu assez compliqué, trop de cloches et de sifflets et ne fait que faire mal à la plupart des gens. Viole KISS dans mon livre.
la source
dnsmasq-base
, commenetwork-manager
etlibvirt-bin
(si vous utilisez KVM), il n'est donc pas toujours possible de s'en débarrasser complètement. Dans ce cas, vous pouvez le supprimer/usr/sbin/dnsmaq
et en faire un lien dur/bin/true
pour qu'il réussisse toujours (pour tromper le script init), puischattr +i /usr/sbin/dnsmasq
pour l'empêcher d'être mis à jour. J'ai dû le faire sur plusieurs ordinateurs portables.