Ich möchte .local
Adressen (wie test.local) zum Verweisen erhalten 127.0.0.1
, aber das funktioniert nicht. Ich verwende das neueste Ubuntu. In /etc/NetworkManager/NetworkManager.conf habe ich auskommentiert und dns=dnsmasq
dann Folgendes getan sudo service network-manager restart
.
Ich habe dann dnsmasq installiert und ein address=/local/127.0.0.1
zu /etc/dnsmasq.d/mycustomfile hinzugefügt und dann Folgendes getan 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, und ein Ping dieser .local-Adresse ist ebenfalls nicht erfolgreich. Vielleicht /etc/resolv.conf
ist der Inhalt von relevant, es ist nur die Standardeinstellung, ich habe sie nicht geändert:
# 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 /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
Aber ein Ping zum lokalen Host funktioniert immer noch nicht.
Was muss ich tun, damit dnsmasq .local-Adressen auflösen kann?
Antwort1
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.
Antwort2
Es sieht so aus, als ob dnsmasq korrekt startet. Sie sollten testen, ob dnsmasq korrekt mit funktioniert nslookup test.local 127.0.0.1
.
Um sicherzustellen, dass das System dnsmasq verwendet, müssen Sie die Option „Als erste /etc/resolv.conf
verwenden“ aktualisieren nameserver 127.0.0.1
.
Sie können auf dnsmasq auch eine benutzerdefinierte Upstream-Resolver-Konfiguration mit verwenden --resolv-file=/etc/resolv.conf.dnsmasq
.
Antwort3
Wahrscheinlich verwendet der Avahi-Daemon die Domäne "local". Siehe:
https://unix.stackexchange.com/questions/352237/avahi-daemon-and-local-domain-issues
Antwort4
Wenn Sie nur auf Ihren eigenen Computer verweisen möchten und nicht versuchen möchten, dnsmasq zur Steuerung der DNS-Auflösung anderer Computer zu verwenden, müssen Sie eigentlich nur einige Einträge hinzufügen /etc/hosts
. Ich empfehle Ihnen, alle Änderungen an dnsmasq und seinen Einstellungen rückgängig zu machen und sicherzustellen, dass /etc/hosts
oben Folgendes steht:
127.0.0.1 localhost
127.0.1.1 mycomputername mycomputername.local anothername.local
Wenn Sie danach mycomputername.local pingen, wird auf Sie selbst verwiesen (tatsächlich wird auf den DNSMASQ-Server verwiesen, der unter 127.0.1.1 läuft, DANN auf localhost). Sie können sogar Einträge für andere Computer in Ihrem Netzwerk hinzufügen, sodass es für Sie auf diesem Computer so aussieht, als ob auf Computer verwiesen werden könnte computer1.local
computer2.local
usw.
192.168.1.31 computer1.local
192.168.1.32 computer2.local
Wenn Sie Ihre Änderungen mit dnsmasq nicht rückgängig machen können, können Sie diese zusätzlichen Einträge nach hinzufügen localhost
, aber löschen oder ändern Sie den localhost
Eintrag selbst nicht. Also so:
127.0.0.1 localhost mycomputername mycomputername.local anothername.local
Übrigens: Die richtige Methode zum Ändern von resolv.conf auf dem Ubuntu-Desktop ist der Netzwerkmanager in Ihrer Taskleiste. Die richtige Methode auf dem Ubuntu-Server besteht darin, dns-nameserver
Einträge unter Ihrem Netzwerkgerät hinzuzufügen /etc/network/interfaces
und entweder neu zu starten oder Folgendes auszuführen ifdown eth0 && ifup eth0
. Wie in der Warnung /etc/resolv.conf
angegeben, ändern Sie es nicht direkt, es wird dynamisch basierend auf /etc/network/interfaces
den Einstellungen geschrieben.