dnsmasq funktioniert nicht, um lokale Adressen auf 127.0.0.1 zu verweisen

4

Ich möchte .localAdressen (wie test.local) als Verweis erhalten, 127.0.0.1aber das funktioniert nicht. Ich bin auf dem neuesten Ubuntu. In /etc/NetworkManager/NetworkManager.conf habe ich dns=dnsmasqdann auskommentiert sudo service network-manager restart.

Ich installierte dann dnsmasq und fügte ein address=/local/127.0.0.1/etc/dnsmasq.d/mycustomfile hinzu sudo service dnsmasq restart. Abgesehen von dem, was ich erwähnt habe, habe ich keine weiteren Änderungen vorgenommen.

Aber wenn ich test.local besuche, wird es nicht in 127.0.0.1 aufgelöst. Ein Ping dieser .local-Adresse ist ebenfalls nicht erfolgreich. Vielleicht ist der Inhalt von /etc/resolv.confrelevant, es ist nur die Voreinstellung, die ich nicht geändert habe:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 222.11.22.36
nameserver 222.11.22.37

Dies ist die Ausgabe, wenn ich dnsmasq nicht als Daemon ausführe:

$ sudo dnsmasq --no-daemon     
dnsmasq: started, version 2.68 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 222.11.22.37#53
dnsmasq: using nameserver 222.11.22.36#53
dnsmasq: read /etc/hosts - 9 addresses

Wenn dnsmasq ausgeführt wird, wird die Datei /etc/resolv.conf automatisch aktualisiert (und kehrt zum obigen Eintrag zurück, wenn dnsmasq gestoppt wird):

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

Und das:

$ sudo nslookup test.local 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   test.local
Address: 127.0.0.1

Ein Ping an localhost funktioniert jedoch nicht.

Was muss ich tun, damit dnsmasq funktioniert, um lokale Adressen aufzulösen?

user779159
quelle

Antworten:

6

local scheint eine Art reserviertes Schlüsselwort zu sein, zumindest unter Ubuntu:

  • address=/local/127.0.0.1 - funktioniert nicht.
  • address=/loc/127.0.0.1 - funktioniert.
Dmitri
quelle
rand'Chris: Vielen Dank, dass Sie versucht haben, eine Antwort auf Super User zu verbessern . Aber während viele Leute glauben, dass es in Ordnung ist, Fehler in den Posts anderer Leute zu korrigieren und kleine Klarstellungen hinzuzufügen, ist Ihre vorgeschlagene Bearbeitung so umfangreich, dass sie (meiner Meinung nach) als separate Antwort veröffentlicht werden sollte. Es ist in Ordnung, (einige) Informationen aus einer vorherigen Antwort zu wiederholen, solange Sie etwas von Wert hinzufügen. (Sie sollten die Antwort, auf der Sie aufbauen, natürlich identifizieren, indem Sie sie verknüpfen und den Namen des Autors angeben.) Sie möchten möglicherweise auch auf diese andere abgelehnte Bearbeitung verweisen .
Scott
7

Sieht so aus, als würde dnsmasq korrekt starten. Sie sollten testen, ob dnsmasq korrekt funktioniert nslookup test.local 127.0.0.1.

Um sicherzustellen , dass das System dnsmasq verwendet, müssen Sie das Update /etc/resolv.confverwenden nameserver 127.0.0.1als erste Option.

Sie können auch eine custo-Upstream-Resolver-Konfiguration für dnsmasq mit verwenden --resolv-file=/etc/resolv.conf.dnsmasq.

denisvm
quelle
Ich habe meine Frage mit einigen Informationen basierend auf Ihrer Antwort aktualisiert. Ich würde mich freuen, wenn Sie einen Blick darauf werfen könnten.
User779159
Auch die Originaldatei /etc/dnsmasq.confbleibt unverändert, und alles ist auskommentiert. Gibt es Dinge, die ich von dort aus kommentieren muss? (Es ist eine große Datei mit mehr als 600 Zeilen.) Das einzige, was ich nicht kommentiert habe, war die letzte Zeile, conf-dir=/etc/dnsmasq.dda sich meine benutzerdefinierte Konfigurationsdatei in diesem Verzeichnis befindet.
user779159
Ihr DNSMASQ reagiert korrekt. Die conf-dirDirektive lädt alle Dateien innerhalb des Verzeichnisses, so dass Sie in verschiedenen Dateien organisieren können, die in Ihrem Fall nicht erforderlich sind. Sie können die ursprüngliche dnsmasq.conf beibehalten und Ihre Konfiguration in eine benutzerdefinierte Datei in /etc/dnsmasq.d einfügen, wie Sie es bereits getan haben. Sie brauchen sudo nicht, um nslookup auszuführen. Testen Sie erneut mit nslookup test.local, es wird ab /etc/resolv.confdiesem Zeitpunkt die DNS-Konfiguration verwendet .
denisvm
1

Wahrscheinlich benutzt der Avahi-Daemon die Domain "local". Sehen:

https://unix.stackexchange.com/questions/352237/avahi-daemon-and-local-domain-issues

Morrizon
quelle
Willkommen bei Super User! Vielen Dank für Ihren Beitrag. Das Bereitstellen des Links als Referenz ist nützlich, Sie müssen jedoch auch die wesentlichen Informationen in den Beitrag aufnehmen. Bitte bearbeiten Sie Ihre Antwort so, dass sie diese Informationen enthält. Vielleicht möchten Sie auch an der Tour teilnehmen und die Seite Antworten lesen , um sich besser mit dieser Site vertraut zu machen.
robinCTS
0

Wenn Sie lediglich auf Ihren eigenen Computer zeigen und nicht versuchen, die DNS-Auflösung anderer Computer mit dnsmasq zu steuern, müssen Sie lediglich einige Einträge hinzufügen /etc/hosts. Ich habe damit begonnen, dass Sie alle Änderungen an dnsmasq und seinen Einstellungen rückgängig machen und sicherstellen, dass /etc/hostsoben Folgendes angezeigt wird :

127.0.0.1 localhost
127.0.1.1 mycomputername mycomputername.local anothername.local

Danach zeigt der Befehl ping mycomputername.local auf sich selbst (tatsächlich zeigt er auf dnsmasq server running on 127.0.1.1, dann auf localhost). Sie können sogar Einträge für andere Computer in Ihrem Netzwerk hinzufügen, sodass Ihnen auf diesem Computer angezeigt wird, dass auf Computer verwiesen werden kann computer1.local computer2.local.

192.168.1.31 computer1.local
192.168.1.32 computer2.local

Wenn Sie Ihre Änderungen scheinbar nicht mit dnsmasq rückgängig machen können, können Sie diese zusätzlichen Einträge nachträglich hinzufügen localhost, aber den localhostEintrag selbst nicht löschen oder ändern . Also so:

127.0.0.1 localhost mycomputername mycomputername.local anothername.local

Übrigens: Der richtige Weg, um die Datei resolv.conf auf dem Ubuntu-Desktop zu ändern, ist der Netzwerkmanager in Ihrer Taskleiste. Der richtige Weg in Ubuntu Server ist dns-nameserverEinträge unter Ihrem Netzwerkgerät hinzuzufügen /etc/network/interfacesund entweder neu zu starten oder zu tun ifdown eth0 && ifup eth0. Da die Warnung in " /etc/resolv.confStatus" nicht direkt geändert wird, wird sie basierend auf den /etc/network/interfacesEinstellungen dynamisch geschrieben .

brianclements
quelle
3
/etc/hostserlaubt keine Platzhalter, Sie .localmüssten sie für jede neue Domain aktualisieren , deshalb verwenden die Leute dnsmasq auch für die lokale Auflösung.
Dmitri