Ich benutze einen Raspberry Pi 3 mit Ubuntu 18.04. In meiner Firma haben wir einen DNS-Server und einige Domains mit ".local". Ich weiß, dass dies technisch nicht korrekt ist und stattdessen ".lan" lauten sollte, da .local für Multicast-DNS reserviert ist. Aber so ist es und es kann nicht einfach geändert werden. Auf meinem Windows-Rechner kann ich also problemlos pingen und nach diesen Domain-Namen suchen. Auf meinem Ubuntu kann ich das allerdings nicht.
Ich kann keine IPs verwenden, da sich einige Domänen auf demselben Computer befinden und der IIS-Webserver die Dinge aussortiert, die wohin führen.
Ich habe gesucht und es kommt ziemlich oft vor:
- https://smallbusiness.chron.com/resolving-local-ubuntu-38861.html
- Warum löst keiner meiner lokalen Server auf?
- Ubuntu-Server löst LAN-Hostnamen nicht auf
Das Ändern von /etc/nsswitch.conf reicht für mich jedoch nicht aus. Ich habe es versucht
- hosts: files mdns4_minimal [NOTFOUND = return] dns meinhostname # default
- Hosts: Dateien DNS
- hosts: files mdns4_minimal [NOTFOUND = continue] dns meinhostname
- hosts: files mdns4 [NOTFOUND = return] dns meinhostname
- hosts: files mdns4 [NOTFOUND = continue] dns meinhostname
- hosts: files dns mdsn4_minimal meinhostname
- Hosts: DNS
- ein paar andere
Nichts davon hat funktioniert. Ich habe versucht, nach einer Änderung neu zu starten. Ich habe versucht, avahi mitzuteilen, dass der Domänenname = alocal in /etc/avahi/avahi-daemon.conf nach dem Neustart des Dienstes nicht funktioniert hat und nach dem Neustart nicht funktioniert hat. Nachdem dies nicht funktioniert hat, habe ich versucht, den Avahi-Daemon-Dienst vollständig zu deaktivieren.
sudo systemctl disable avahi-daemon
Nach einem Neustart habe ich einige Permutationen in /etc/nsswitch.conf erneut versucht, ohne dass dies Auswirkungen hatte.
Mit meinen aktuellen Einstellungen in Hosts (Dateien DNS) erhalte ich diese Antwort:
dig login.name.local # not the actual name
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0 IN A
;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE rcvd: 56
Wenn ich dig jedoch anweise, den Server direkt abzufragen, erhalte ich die richtige Antwort:
dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0 IN A
;; ANSWER SECTION:
login.name.local. 3600 IN A serverIP
;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE rcvd: 56
Diese Version von Ubuntu verwendet netplan mit dem Netzwerkmanager. Die richtige DNS-IP ist definitiv in der Liste. (Tatsächlich ist es der primäre DNS.) Auch der DNS-Ip ist derselbe wie der Server-IP, aber das sollte kein Problem sein.
Pingen oder Verbinden über einen Browser und dergleichen funktionieren natürlich nicht. Keiner verwendet die DNS-Abfrage.
Ich weiß nicht, was ich tun soll. Natürlich können wir nicht zu einem anderen Domainnamen wechseln. Ich habe den Servernamen in / etc / hosts eingetragen, aber das ist nur eine vorübergehende Lösung.
quelle
Antworten:
Ich hatte ein sehr ähnliches Problem (wenn auch nicht genau dasselbe) mit Linux Mint 19 (Tara). Ich habe es geschafft, es zu lösen, indem ich 3 verschiedene Informationen kombiniert habe. Es scheint alles mit den jüngsten Änderungen zu tun zu haben, die mit systemd-resolved vorgenommen wurden.
Erstens musste ich /etc/nsswitch.conf wie erwartet konfigurieren . Solange DNS vor DNS kommt, sollten Sie gut sein. Ich endete einfach mit:
Ref: /unix//a/457172/271210
Vor dem Upgrade auf diese Version von Mint war dies das einzige, was ich tun musste. Nun habe ich auch die folgenden zwei weiteren Änderungen vorgenommen, damit es funktioniert ...
Danach habe ich meine Suchdomäne so konfiguriert, dass die systemaufgelöste Suche wie gewünscht funktioniert. Also habe ich die Datei /etc/systemd/resolved.conf bearbeitet , die Domains- Einstellung im Abschnitt [resolve] . In meinem Fall sah es so aus:
Ref: /ubuntu//a/1031271/872881
Ich habe auch die Avahi-Konfiguration in etwas anderes geändert ("mdns", wenn ich mich richtig erinnere, aber es spielt keine Rolle). Nach meinem Verständnis sollte es jedoch nicht erforderlich sein. Nur der Vollständigkeit halber hinzufügen.
Aber nichts davon hat funktioniert, bis ich Folgendes angerufen habe:
Ref: /ubuntu//a/938703/872881
Nach diesem Aufruf hat alles perfekt und wie erwartet funktioniert!
Es ist also möglich, dass ich die Datei /etc/systemd/resolved.conf nicht wirklich ändern musste , aber ich habe diese Änderung beibehalten, da dies sinnvoll war und ich nur den Namen eines Computers ohne den vollständigen FQDN eingeben kann, damit die DNS-Auflösung funktioniert .
quelle
Die akzeptierte Antwort hat mein Problem nicht gelöst. Es hatte nichts mit Avahi zu tun - ich hatte keinen Avahi-Dienst installiert. Ich habe mein System eingestellt, um seine IP UND seine DNS-Servereinstellungen von DHCP zu erhalten. Das von DHCP bereitgestellte DNS wurde jedoch nicht mithilfe von .local auf Abfragen überprüft
Das eigentliche Problem ist, dass Ubuntu 18.4 seine resolv.conf sym mit einer Stub-Datei verknüpft hat, die zur Namensauflösung auf den localhost verweist. Localhost-DNS-Namensauflösung bedeutet, dass sich das System weigert, den bereitgestellten DNS-Server auf lokale Namen zu überprüfen, da (fälschlicherweise) davon ausgegangen wird, dass solche Namen ungültig sind. Dies ist die Standardeinstellung von /etc/resolv.conf:
Inhalt der Stub-Datei ist (Kommentare entfernt):
Die "echte" Auflösung conf hat die "richtige" DNS-Einstellung (von DHCP):
Damit das System Ihren bevorzugten DNS-Resolver anstelle von localhost verwendet, ändern Sie den Symlink so, dass er auf /run/systemd/resolve/resolv.conf anstelle von /run/systemd/resolve/stub-resolv.conf zeigt:
Unmittelbar danach begann die Auflösung von .local zu funktionieren. Es ist kein Neustart oder Neustart eines Dienstes erforderlich.
quelle
Für mich ist die Arbeitsweise für Ubuntu 18.04:
Avahi conf bearbeiten:
und ändere .local zu .alocal:
dann öffne resolved.conf:
Domains kommentieren und bearbeiten:
und starten Sie die Dienste neu:
quelle
Domains
in/etc/systemd/resolved.conf
(und Dienste neu starten).Was für mich funktionierte, war das Hinzufügen des lokalen DNS als Nameserver
/etc/resolvconf/resolv.conf.d/head
(wie hier beschrieben ).Installieren Sie das resolvconf-Paket.
Bearbeiten
/etc/resolvconf/resolv.conf.d/head
und fügen Sie Folgendes hinzu:Starten Sie den resolvconf-Dienst neu.
Der Fix sollte permanent sein.
quelle
head
Datei ist die Quelle, die zum Generieren verwendet wird/run/resolvconf/resolv.conf
. Allerdings würde ich diese Datei auch nicht bearbeiten.Meine Situation war ähnlich, aber etwas anders: Wir verwenden Servernamen wie
myserver
unter Windows, aber dies funktionierte nicht unter Ubuntu 16.04 und ich musste verwendenmyserver.mycompany.local
. Nach dem Upgrade auf 18.04 habe ich folgendes Verhalten festgestellt:Ich hatte einfach zu ersetzen ,
myserver.mycompany.local
mitmyserver
in meinen Anwendungen.quelle