Ich möchte .local
Adressen (wie test.local) als Verweis erhalten, 127.0.0.1
aber das funktioniert nicht. Ich bin auf dem neuesten Ubuntu. In /etc/NetworkManager/NetworkManager.conf habe ich dns=dnsmasq
dann 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.conf
relevant, 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?
quelle
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.conf
verwendennameserver 127.0.0.1
als erste Option.Sie können auch eine custo-Upstream-Resolver-Konfiguration für dnsmasq mit verwenden
--resolv-file=/etc/resolv.conf.dnsmasq
.quelle
/etc/dnsmasq.conf
bleibt 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.d
da sich meine benutzerdefinierte Konfigurationsdatei in diesem Verzeichnis befindet.conf-dir
Direktive 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 mitnslookup test.local
, es wird ab/etc/resolv.conf
diesem Zeitpunkt die DNS-Konfiguration verwendet .Wahrscheinlich benutzt der Avahi-Daemon die Domain "local". Sehen:
https://unix.stackexchange.com/questions/352237/avahi-daemon-and-local-domain-issues
quelle
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/hosts
oben Folgendes angezeigt wird :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
.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 denlocalhost
Eintrag selbst nicht löschen oder ändern . Also so:Ü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-nameserver
Einträge unter Ihrem Netzwerkgerät hinzuzufügen/etc/network/interfaces
und entweder neu zu starten oder zu tunifdown eth0 && ifup eth0
. Da die Warnung in "/etc/resolv.conf
Status" nicht direkt geändert wird, wird sie basierend auf den/etc/network/interfaces
Einstellungen dynamisch geschrieben .quelle
/etc/hosts
erlaubt keine Platzhalter, Sie.local
müssten sie für jede neue Domain aktualisieren , deshalb verwenden die Leute dnsmasq auch für die lokale Auflösung.