Ubuntu 18.04 .local Domain DNS-Suche funktioniert nicht


15

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:

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.


Das Ändern der resolv.conf, wie jeremfg vorschlug, funktionierte für mich, nachdem ich meinen Schwanz mehrere Stunden lang herumgejagt hatte. Tnx.
user3529828

Antworten:


13

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:

hosts:          files dns myhostname

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:

[Resolve]
#DNS=
#FallbackDNS=
Domains=trilliant.local
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

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:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

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 .


Du hättest einfach die letzte Zeile am Anfang setzen können und ich denke, du würdest dadurch mehr Gegenstimmen bekommen.
HongboZhu

@ HongboZhu Ich würde, wenn ich wüsste, dass dies die einzige Änderung ist, die erforderlich ist, damit lokale Domänen funktionieren. Ich bin mir ziemlich sicher, dass Sie auch in der Resolver-Konfiguration DNS gegenüber MDS bevorzugen müssen. Ich nehme an, Ihr Kommentar bezieht sich auf die Domain-Konfiguration in der Mitte? Wenn ja, könnte ich dies wohl als optionale Änderung am Ende einfügen. Aber die anderen beiden Stücke sind meiner Meinung nach erforderlich.
Jeremfg

1
Bei meiner neuen 18.04.2-Installation ändern Sie einfach die "Hosts", die bei nsswitch.conf bestellt werden, funktioniert bereits.
Tomofumi

16

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:

ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Jan 22 13:26 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Inhalt der Stub-Datei ist (Kommentare entfernt):

 cat /run/systemd/resolve/stub-resolv.conf
 .. removed comments..  
nameserver 127.0.0.53
    search reddog.microsoft.com

Die "echte" Auflösung conf hat die "richtige" DNS-Einstellung (von DHCP):

cat /run/systemd/resolve/resolv.conf

..removed comments..
nameserver 10.168.200.250 # This is my server that can resolve .local
nameserver 208.67.220.220 # these are optional, fallback dns servers
nameserver 208.67.222.222
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.8.8
search reddog.microsoft.com

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:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

Unmittelbar danach begann die Auflösung von .local zu funktionieren. Es ist kein Neustart oder Neustart eines Dienstes erforderlich.


Ich habe Avahi deinstalliert und bin dann Ihren Schritten gefolgt. Das hat es für mich gemacht. Danke mein Herr. (Mit Ubuntu 18.04 Desktop).
José L. Patiño

Vielen Dank. Das war die Antwort für mich. Warum funktioniert es nicht sofort?
Adampski

Was ist der Unterschied zwischen Ihrer Lösung und der akzeptierten Antwort? Für beide kann man die ersten 2/3 der Antwort überspringen - auch das ist das gleiche :-)
HongboZhu

Dies ist die einzige Antwort, die ich bisher gesehen habe und die das Verhalten in früheren Versionen von Ubuntu (und anderen Linux-Versionen) reproduziert, dh die Liste der DNS-Server wird von DHCP bereitgestellt und die Adressauflösung wird nie lokal zwischengespeichert.
Scheiben geschnitten

2

Für mich ist die Arbeitsweise für Ubuntu 18.04:

Avahi conf bearbeiten:

sudo vim /etc/avahi/avahi-daemon.conf

und ändere .local zu .alocal:

[server]
domain-name=.alocal

dann öffne resolved.conf:

sudo vim /etc/systemd/resolved.conf

Domains kommentieren und bearbeiten:

[Resolve]
...
Domains=yourdomain.local
...

und starten Sie die Dienste neu:

sudo service systemd-resolved restart
sudo service avahi-daemon restart

In meinem Fall brauchte ich nur zu ändern , Domainsin /etc/systemd/resolved.conf(und Dienste neu starten).
Tokosh

2
Das hat es nicht für mich getan. Immer noch nichts
FalcoGer

Gleiche Version von Ubuntu. Openvpn verwenden. Diese Lösung funktioniert gut mit VPN auf vielen Computern in meinem Team.
Razvanone

2

Was für mich funktionierte, war das Hinzufügen des lokalen DNS als Nameserver /etc/resolvconf/resolv.conf.d/head(wie hier beschrieben ).

  1. Installieren Sie das resolvconf-Paket.

    sudo apt install resolvconf
    
  2. Bearbeiten /etc/resolvconf/resolv.conf.d/headund fügen Sie Folgendes hinzu:

    nameserver 8.8.4.4  
    nameserver 8.8.8.8  
    
  3. Starten Sie den resolvconf-Dienst neu.

    sudo service resolvconf restart
    

Der Fix sollte permanent sein.


Die head-Datei enthält eine Warnung, die Datei nicht zu bearbeiten, da sie von resolvconf generiert wird.
John Mee

@JohnMee Die headDatei ist die Quelle, die zum Generieren verwendet wird /run/resolvconf/resolv.conf. Allerdings würde ich diese Datei auch nicht bearbeiten.
Melebius

0

Meine Situation war ähnlich, aber etwas anders: Wir verwenden Servernamen wie myserverunter Windows, aber dies funktionierte nicht unter Ubuntu 16.04 und ich musste verwenden myserver.mycompany.local. Nach dem Upgrade auf 18.04 habe ich folgendes Verhalten festgestellt:

$ ping myserver.mycompany.local
ping: myserver.mycompany.local: Name or service not known

$ ping myserver
PING myserver.mycompany.local (192.168.x.y) 56(84) bytes of data.
64 bytes from myserver.mycompany.local (192.168.x.y): icmp_seq=1 ttl=62 time=3.05 ms
...

Ich hatte einfach zu ersetzen , myserver.mycompany.localmit myserverin meinen Anwendungen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.