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?


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


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

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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.