Es war bekannt, dass NetworkManager nicht gut funktioniert dnsmasq
(siehe hier ). Ich habe die lange Diskussion hier durchgesehen, bin mir aber immer noch nicht sicher, wie ich mit der Situation umgehen soll.
Ich möchte dnsmasq
lediglich DNS und DHCP für mein lokales Netzwerk bereitstellen. Was wäre der empfohlene Weg in diesem Fall?
Es scheint, dass das Problem auch für Ubuntu 14.04 bestehen bleibt, auch wenn behauptet wird, dass der Fehler behoben ist.
Als Workaround behindern Menschen NM-Versklavte aus dnsmasq-base
folgenden Gründen:
Der NM-Sklave dnsmasq
verwendet fest codierte Optionen (in C), die eine äußerst eingeschränkte Funktionalität bieten.
- Es hört nicht auf ethX (
--listen-address=127.0.0.1
). Wir können unsere Server also nicht als DNS-Server für unsere lokalen Netzwerk-PCs verwenden, dh für LANs völlig nutzlos. - Es werden keine Anforderungen zwischengespeichert (
--cache-size=0
). Kein Caching ==> keine DNS-Anfragen beschleunigen. Dies ist wiederum für LANs von großer Bedeutung, da viele Benutzer gleichzeitig angemeldet sind. - Schließlich benötigen wir auch die DHCP- und TFTP-Funktionalität von dnsmasq. Selbst wenn NM + dnsmasq einen echten DNS-Server enthalten würde, müssten wir ein weiteres dnsmasq ausführen
Aber ich bin mir nicht sicher, ob sie noch halten und / oder wie der Fix das Problem (die Probleme) gelöst hat. Keiner von ihnen weiß genau, was er getan hat und wie er sein Problem gelöst hat. Dh der Lösungsteil fehlt in der langwierigen Diskussion . Kann jemand bitte die Lücken ausfüllen? Dh
Die dnsmasq
von Ubuntu bereitgestellte Out-of-Box funktioniert aus den oben genannten Gründen auf der Serverseite nicht. Und auf der Clientseite kann "das auf diesen Ubuntu-Laptops installierte dnsmasq keine LAN-DNS-Abfrage von meinem DNS-Server ausführen" , weil "der NetworkManager (für Ubuntu-Laptops) bewirkt, dass sie eine seltsame 127.0.1.1-Nameserver-Einstellung haben" ( ref: DNS - Lösung für LAN oder lokales Heimnetzwerk )
Wie kann ich dnsmasq so einrichten, dass es reibungslos mit NetworkManager zusammenarbeitet, um meinem lokalen Netzwerk sowohl auf Server- als auch auf Clientseite DNS und DHCP (und TFTP) bereitzustellen?
TL'dr
für diejenigen, die die Antwort suchen. Von allen Antworten unten fand ich die einfachste Lösung für die Serverseite @ brad (für die Clientseite immer noch keine gute Antwort):
Die einzige Lösung für das Problem besteht darin, das NM-Laufwerk dnsmasq ... zu deaktivieren, "standard" dnsmasq zu installieren und dann über die Standardkonfigurationsdatei zu
/etc/dnsmasq.conf
konfigurieren.
Antworten:
Ich habe auch deine Probleme.
Nach wiki.archlinux scheint es im Prinzip ausreichend zu sein, eine Datei zu erstellen,
/etc/NetworkManager/dnsmasq.d/cache
die einfach enthält , um das Zwischenspeichern zu ermöglichenIch habe es versucht, aber nach dem Neustart von NM habe ich immer noch keinen Cache:
Beachten Sie, dass die angegebene conf-Datei immer leer ist: Ich konnte mit diesem Verfahren keine Option konfigurieren.
Alles in allem scheint die NM-versklavte dnsmask in 14.04 (die vom dnsmasq-base-Paket bereitgestellt wird) vollständig gesperrt zu sein, so dass weder das Cachen noch etwas anderes (dhcp, tftp) aktiviert werden kann.
Wenn dies richtig ist, denke ich, dass, wie Sie sagen, die einzige Lösung für das Problem darin besteht, das NM-Laufwerk dnsmasq zu deaktivieren, indem Sie die Zeile auskommentieren
in der Datei
/etc/NetworkManager/NetworkManager.conf
und installieren Sie den "Standard" dnsmasq und konfigurieren Sie ihn dann über seine Standardkonfigurationsdatei/etc/dnsmasq.conf
.quelle
--conf-dir=/etc/NetworkManager/dnsmasq.d
und diecache-size
in der von Ihnen erstellten Datei angegebene verwendet wird. Sie können den Unterschied mitdig
Es ist möglich, Einstellungen zu überschreiben, indem Sie sie eingeben
/etc/NetworkManager/dnsmasq.d/*.conf
. Einstellungen in der Konfigurationsdatei haben Vorrang vor Befehlszeilenflags. Sie werden angewendet, wenn NetworkManager dnsmasq startet. Führen Sie,sudo service network-manager restart
um erneut anzuwenden. (Wenn es irgendeinen Zweifel gibt: Brad hat die Antwort verpasst, dieps ax | grep dns
ein--conf-dir
Argument zeigt )Beispielsweise:
Wie ich mich erinnere, deaktiviert NetworkManager das DNSMASQ-Caching standardmäßig, da Bedenken hinsichtlich einer Cachevergiftung bestehen. Bei einem Computer, auf dem allen Benutzern vertraut wird, ist dies möglicherweise kein Problem.
NetworkManager lässt sich nicht integrieren
resolvconf
, und der NM-Server unter127.0.1.1
wird nicht lokal verwendet, wenn das resolvconf-Paket installiert ist. resolvconf ist Teil von Ubuntu-Minimal- und Standard-Debian-Installationen; NetworkManager implementiert diese Funktionalität stärker integriert und weniger skriptbasiert.Networkmanager machen sicher nicht mit einer globalen dnsmasq Instanz (Bindung an einem sekundären Loopback - IP und Einstellung zu stören
bind-interfaces
durch/etc/dnsmasq.d/network-manager
). Wenn Sie eine globale dnsmasq-Instanz installieren und die NM-Instanz beibehalten, überprüfen Sie noch einmal/etc/resolv.conf
, welche Instanz standardmäßig vom Host verwendet wird.Während Sie die dnsmasq-Instanz von NetworkManager wie oben gezeigt anpassen können, sollten Sie, wenn Sie einen DNS-Server benötigen, der sich an öffentliche Schnittstellen bindet, das
dnsmasq
Paket installieren (nur NetworkManager verwendetdnsmasq-base
, das keine globale Instanz konfiguriert) und Ihre Konfiguration vornehmen/etc/dnsmasq.d/*.conf
. Die Slave-Instanz von NetworkManager soll nur an die Loopback-Schnittstelle gebunden werden, und die Konfiguration über diesen Bereich hinaus könnte sie beschädigen.Zusammenfassend für jemanden, der nur lokales DNS-Caching möchte:
Für ein einfaches LAN sollte die Verbindungsfreigabe von NetworkManager immer noch ausreichen. Aber für ein benutzerdefiniertes LAN mit TFTP und so weiter:
quelle
dnsmasq
. Wofür ist dann der nächsteecho
Befehl? dadnsmasq
wird der weg sein.dnsmasq
, aber Sie sollten nochdnsmasq-base
wegen NM installiert haben .Ich wollte einer bestimmten IP-Adresse einen bestimmten MAC zuweisen und aus Stabilitätsgründen so viel wie möglich mit dem Standard-Network Manager / dnsmasq arbeiten.
https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/src/dnsmasq/nm-dnsmasq-manager.c enthält den Kommentar zur Verwendung von --conf-file zum Ignorieren von Konfigurationen, jedoch später in der Datei
Unter Ubuntu 16.04 zeigt LTS nach dem Einrichten eines Wi-Fi-Hotspots und dem Teilen einer anderen Verbindung,
ps auxgww | grep dnsmasq
dass das letzte Befehlszeilenargument für jeden der dnsmasq-Prozesse wie folgt lautet:Auf diese Weise können in diesem Verzeichnis Konfigurationsdateien erstellt werden, die von allen Aufrufen von dnsmasq, die von Network Manager gestartet werden, gemeinsam genutzt werden.
Ich habe /etc/NetworkManager/dnsmasq-shared.d/Hue erstellt
und neu gestartet, obwohl ausgeführt
hätte funktioniert.
Dies führte dazu, dass mein Gerät die entsprechende IP-Adresse erhielt.
Ja, dies ist falsch, da dies bedeutet, dass alle Aufrufe von dnsmasq durch NetworkManager diese Deklaration erhalten. In diesem Fall ist dies jedoch harmlos, da es nur wichtig ist, ob der MAC im fraglichen Netzwerk angezeigt wird. Wenn das Netzwerk nicht 192.168.1 ist, treten Probleme auf.
Dies ist robuster als das Ersetzen von / usr / sbin / dnsmasq durch ein Skript, wie es unter https://gist.github.com/magnetikonline/6236150 vorgeschlagen wird
Die richtige Lösung wäre, zu ändern, wie dnsmasq aufgerufen wird, um die dnsmasq-Konfigurationsdateien ordnungsgemäß zu verwenden. Ich verstehe den Wunsch, dass Network Manager "nur funktioniert", aber wenn Tools idiotensicher sind, können sie nur von Idioten verwendet werden.
quelle
Meine Lösung könnte den Network Manager beschädigen und alles auf einfache Weise erledigen. Da NM mit dnsmasq nicht richtig umgeht, überschreibe ich es einfach mit meiner unten stehenden Methode.
Eine Problemumgehung bestand darin, einfach Folgendes zu tun:
Bearbeiten Sie die
~/dnsmasq.conf
Datei in Ihrem Benutzerverzeichnis und speichern Sie sie.Ich habe einen einfachen Bash-Alias erstellt und ihn am Ende meiner Datei ~ / .bash_aliases abgelegt, um das Bearbeiten der Datei dnsmasq.conf zu vereinfachen. Hier ist der Alias:
Natürlich können Sie für den zweiten sudo-Befehl im Alias einen beliebigen Editor auswählen, aber ich habe nano dort verwendet, um es allen zu erleichtern. Speichern Sie die Datei, schließen Sie das Befehlsfenster und öffnen Sie es erneut. Dadurch sollte der Alias für neu geöffnete Terminal-Registerkarten / -Fenster verfügbar sein.
Gehen
eddmc
Sie einfach von Ihrem Benutzerkonto aus und Sie werden nach Ihrem Passwort gefragt, um die Befehle mit erhöhten Rechten auszuführen.Beachten Sie, dass ich immer
chattr +i
die Datei. Dies ist so, dass Network Manager Ihre Konfiguration nicht mit einer eigenen überschreibt.Bei kabelgebundenen Ethernet-Verbindungen sollte es keine Probleme geben. Ich habe festgestellt, seitdem ich dnsmasq für das DNS-Caching auf Laptops mit WLAN verwende, dass ich den dnsmasq.service nach dem Herstellen einer Verbindung zu einem Zugriffspunkt manuell neu starten muss. Ich denke, Network Manager kann Aufgaben wie das Neustarten von Diensten beim Herstellen einer Verbindung ausführen, habe dies jedoch noch nicht untersucht.
quelle
Trotz gegenteiliger Behauptungen ignoriert NetworkManager alle dmsmasq-Konfigurationsdateien - auch die in seinem eigenen Verzeichnis
/etc/NetworkManager/dnsmasq-shared.d
. Der Beweis ist im Quellcode für NetworkManager ... Hier ist der relevante Kommentar:Hier ist ein Link zum relevanten Quellcode (Zeilen 139-144).
quelle