dnsmasq funktioniert nicht, um .local-Adressen auf 127.0.0.1 zu verweisen

dnsmasq funktioniert nicht, um .local-Adressen auf 127.0.0.1 zu verweisen

Ich möchte .localAdressen (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=dnsmasqdann Folgendes getan sudo service network-manager restart.

Ich habe dann dnsmasq installiert und ein address=/local/127.0.0.1zu /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.confist 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

localscheint 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.confverwenden“ 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/hostsoben 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.localusw.

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 localhostEintrag 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-nameserverEinträge unter Ihrem Netzwerkgerät hinzuzufügen /etc/network/interfacesund entweder neu zu starten oder Folgendes auszuführen ifdown eth0 && ifup eth0. Wie in der Warnung /etc/resolv.confangegeben, ändern Sie es nicht direkt, es wird dynamisch basierend auf /etc/network/interfacesden Einstellungen geschrieben.

verwandte Informationen