resolv.conf wird beim Neustart von dnsmasq immer wieder überschrieben, wodurch dnsmasq beschädigt wird

9

Ich verwende Debian Jessie und versuche, dnsmasq als Caching-DNS-Server zu konfigurieren. Ich habe einen Leitfaden verwendet , um Folgendes zu finden /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

Das Tun sudo service dnsmasq restartschlägt fehl und es beginnt nicht, sagt es mir

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, irgendwie seltsam, dass eine Konfiguration direkt aus einer Anleitung fehlgeschlagen ist. Ich werde nur die no-pollOption entfernen, um zu sehen, ob es funktioniert. Diesmal fängt es gut an, aber die DNS-Auflösung schlägt eindeutig fehl. Relevante Dateien:

/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

Die dritte Datei scheint die Live-Datei resolv.conf von dnsmasq zu sein, da das Hinzufügen einer Nameserver-Zeile, während dnsmasq bereits ausgeführt wird, dazu führt, dass die DNS-Auflösung sofort funktioniert. Es sieht also so aus, als hätte es meine ignoriert /etc/resolv.dnsmasq. Ich habe auch versucht, eine Nameserver-Zeile zu meiner hinzuzufügen /etc/resolv.confund die resolv-fileZeile darin zu entfernen /etc/dnsmasq.conf, aber sie wird sofort auf das überschrieben, was Sie oben sehen sudo service dnsmasq restart.

Was ist mit dnsmasq los und konfiguriere ich dnsmasq als Caching-DNS-Server?

nullUser
quelle
1
Wenn Sie nur einen statischen Server möchten, warum geben Sie dann nicht server=8.8.8.8Ihre dnsmasq-Konfiguration ein?
Tripleee
Ich denke, das no-pollsagt im Grunde, das zu ignorieren resolv-file. Beim Start wird die jeweils neuere Datei benötigt, sodass dies /etc/resolv.confin Ihrem Fall der Fall ist (da sie neu geschrieben wird, wenn sich etwas ändert).
Tripleee
Ich weiß immer noch nicht, wie ich es richtig machen soll, wenn ich mehr als einen DNS-Server im Sinn hätte, aber da ich es nicht tue, bin ich nur froh, dass Ihre Bemerkung mein Problem gelöst hat.
nullUser

Antworten:

11

Es scheint ein Fehler in dem Start-up - Skript zu sein , dnsmasqdass Anwendungen resolvconfdie lokalen Resolver verprügeln , wenn die lokale Loopback - Schnittstelle nicht explizit exceptin der -ed - /etc/defaults/dnsmasqDatei.

Die kurze Antwort ist, dass Sie hinzufügen können ...

DNSMASQ_EXCEPT=lo

auf , /etc/defaults/dnsmasqum das Problem zu lösen.

Weitere Informationen finden Sie in dieser Frage ...

/raspberrypi/37439/proper-way-to-prevent-dnsmasq-from-overwriting-dns-server-list-supplied-by-dhcp

Bigjosh
quelle
Das hat mir das Leben gerettet. Vielen Dank.
Ryan Bobrowski
3

bigjosh hat recht - außer dass es ein Update für dnsmasq gab und es jetzt eine Option gibt, an deren Ende /etc/default/dnsmasqSie den Hash entfernen können:

IGNORE_RESOLVCONF=yes
Maynard
quelle
So funktioniert es mit meinem komplexen Setup unter Ubuntu 16.04.
Ikon
1
Bigjoshs Weg hat bei mir funktioniert. Obwohl /etc/defaults/dnsmasqhatte IGNORE_RESOLVECONF=yesmit Anweisungen Kommentar- es , dieses Problem zu lösen, die es nicht taten.
Andho
2

Nicht benutzen

resolv-file=/etc/resolv.dnsmasq

Fügen Sie den DNS-Server in die Datei dnsmasq.conf ein

server=/localnet/192.168.0.1 # change ip for your ip-server
server=8.8.8.8
server=8.8.4.4

Und in dnsmasq.conf hinzufügen

no-resolv
aclg
quelle
1

Wenn Sie nur einen Nur-Caching-DNS-Server möchten und nichts anderes, was dnsmasq kann, sollten Sie entweder lwresdoder unbounddie Standardkonfiguration installieren, die Ihnen einen Nur-Caching-DNS-Server bietet. Dann setzen Sie einfach /etc/resolv.conf"Nameserver 127.0.0.1" und fertig.

Das /etc/resolv.confSchöne ist, dass diese beiden Pakete nicht mit dem herumspielen, was dnsmasq tut, und daher meiner Meinung nach eine sauberere Lösung sind. Normalerweise können Sie das resolvconfPaket auch entfernen , damit nichts herumspielt /etc/resolv.conf.

Zu Ihrer Information, dnsmasq ist ziemlich kompliziert geworden, zu viele Schnickschnack und verursacht den meisten Menschen nur noch Schmerzen. Verstößt gegen KISS in meinem Buch.

Milli
quelle
Leider hängen einige Pakete von dnsmasq-base, wie network-managerund libvirt-bin(wenn Sie KVM ausführen) ab, so dass es nicht immer möglich ist, es vollständig zu entfernen. In diesem Fall können Sie es löschen /usr/sbin/dnsmaqund zu einem festen Link machen, /bin/truedamit es immer erfolgreich ist (um das Init-Skript zu täuschen). Dann können chattr +i /usr/sbin/dnsmasqSie verhindern, dass es aktualisiert wird. Ich musste dies auf mehreren Laptops tun.
Milli
+1 wie auch in philandstuff.com/2013/11/07/dnsmasq-resolvconf.html beschrieben . Wirklich ekelhaftes Verhalten und verursacht auch 5 Jahre nach dem Post- und Fehlerbericht immer wieder Schmerzen ...
user2480144