DNS bei Systemd 127.0.0.53 ignoriert einige Suchvorgänge

14

Der DNS des Systems, der bei 127.0.0.53 geliebt wird, scheint zu funktionieren, außer wenn ich nach lokalen Computern mit Namen frage. Aber wenn ich danach frage und speziell den lokalen DNS-Server (meinen Router) spezifiziere, erhalte ich die richtige Antwort. In der Konfigurationsdatei heißt es jedoch, dass auch der Router als Suchadresse verwendet wird. Irgendwelche Gedanken?

Ich verwende Ubuntu 18.04 auf meinem Dell-Laptop.

Falsche Ergebnisse:

$ nslookup web1

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find web1: SERVFAIL

Scheitert auch

$ nslookup -i wlp3s0 web1
nslookup: couldn't get address for 'web1': not found

Richtige Ergebnisse:

$ nslookup web1 192.168.1.1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

Konfigurationsinfo systemd-resolve

$ systemd-resolve --status

Global
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 3 (wlp3s0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.1
          DNS Domain: wp.comcast.net

Link 2 (enp2s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Konfigurationsinfo NetworkManager

$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Wie bringe ich nslookup dazu, die richtige Antwort zurückzugeben? Link 3 scheint die richtige Information zu sein (meine WLAN-Verbindung) und mein DNS auf dem Router gibt die richtige Antwort zurück, aber der lokale Cache versucht nie, die Adresse zu ermitteln (oder so scheint es).

schworak
quelle
Schauen Sie in diesem Beitrag nach, ob das Ihr Problem löst: askubuntu.com/questions/1034064/…
Ich habe nicht dns = dnsmasq in meiner Konfigurationsdatei. Ich aktualisiere meine Frage, um dies zu zeigen.
schworak
Welche Ubuntu-Version verwenden Sie und können Sie Ihren Beitrag auch mit der IP-Konfiguration aktualisieren?
Ich verwende Ubuntu 18.04 auf einem Dell-Laptop.
schworak
Könnten Sie bitte versuchennslookup -i wlp3s0 web1
cmak.fr

Antworten:

9

Ihre Datei resolv.conf deutete nicht an der falschen Stelle - ../run/systemd/resolve/stub-resolv.conf ist , wo es zu Punkt angenommen hat , in der Standardeinstellung.

Das Problem ist, dass systemd-resolvedkeine nicht gepunkteten Namen an DNS übergeben werden. Anscheinend funktioniert dies "wie geplant". Sehen Sie sich dieses Github-Problem an, das besagt, dass " Behoben wird, dass Single-Label-Lookups niemals in Unicast-DNS gelangen".

Unabhängig davon, ob Sie der Argumentation in diesem Github-Problem zustimmen oder nicht, gibt es eine Möglichkeit, dieses Problem zu beheben. Es sind nicht einmal Änderungen am Standard-Setup Ihres Ubuntu-Rechners erforderlich:

  1. Zunächst muss der DNS Ihres LAN einen Domänennamen haben.

    Wenn Sie dnsmasq verwenden, fügen Sie /etc/dnsmasq.confauf Ihrem DNS-Server Folgendes hinzu :

    expand-hosts
    domain=your-domain # replace "your-domain" with domain of your choice
    

    Sie sollten nun in der Lage sein, LAN-Hostnamen aufzulösen, wenn Sie die Domäne hinzufügen:

    nslookup web1.your-domain
    
  2. Stellen Sie zweitens sicher, dass der Name für die LAN-Domäne auch in Ihrem DHCP-Server festgelegt ist, wenn er sich von Ihrem DNS-Server unterscheidet. Auf meinem DHCP-Server (meinem Router) heißt diese Einstellung nur "Domänenname".

    Wenn Sie dann Ihre DHCP-Lease auf Ihrer Ubuntu-Box erneuern, sollte eine Suchanweisung in folgenden Feldern erscheinen /run/systemd/resolve/stub-resolv.conf:

    nameserver 127.0.0.53
    search your-domain
    

web1Wenn Sie jetzt nachschlagen, wird es zu "Erweitern" web1.your-domain, was dann mithilfe von DNS aufgelöst wird.

$ nslookup web1
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   web1.your-domain
Address: 192.168.1.107

Beachten Sie, dass , wenn Sie verwenden digstatt nslookup, dignicht den Suchpfad standardmäßig nicht verwendet - verwendet seine +searchOption , dass zu ermöglichen.

Laurence Gonsalves
quelle
Vor dem Neustart sah web1.meinedomain.com ganz gut aus. Aber natürlich funktionierte es nicht, nur web1 aufzusuchen. Also habe ich neu gestartet und für das Leben von mir habe ich keine Ahnung, wo es die Comcast-Domain abholt, aber jetzt, wenn ich web1 suche, antwortet es mit der richtigen IP, zeigt aber die Comcast-Domain anstelle meiner Domain. Es löst so ich bin nicht zu besorgt, aber was zum Teufel ????
schworak
@schworak Weird! Ist Ihr DHCP-Server auch Ihr Comcast-Modem? Sehen Sie diese Domain in /etc/resolv.confoder in der Ausgabe von entweder nmcli -g alloder systemd-resolve --status? Schauen Sie sich vielleicht an, was in Ihrer DHCP-Lease enthalten ist .
Laurence Gonsalves
Es ist nicht das Comcast-Modem. Ich habe einen SysLink-Router mit DDWRT. Die Comcast-Einstellungen werden komplett ersetzt. Der Comcast-Name wird in der Datei resolv.conf angezeigt, die beim Booten automatisch generiert wird. Ich mache mir keine allzu großen Sorgen, aber es ist komisch.
schworak
@LaurenceGonsalves Vielen Dank für den Link zum Thema Github. Ich hatte Problemumgehungen gefunden, aber dies half mir tatsächlich, das Grundproblem herauszufinden.
Gregory Arenius
19

Ich habe die Lösung gefunden, die für mich funktioniert hat.

Meine resolv.conf-Datei zeigte auf den falschen Ort. Dies scheint ein Fehler in Ubuntu zu sein, der auf meinem Laptop (dem Computer, auf dem ich dieses Problem zum ersten Mal bemerkte) und auf einer Neuinstallation von Ubuntu 18.04 Server aufgetreten ist.

Der Standard

$ ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Apr 26 12:07 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Ich habe dies gelöscht und auf die richtige Datei hingewiesen. Nach dem Neustart wurde das Problem behoben. Und ich konnte sogar Netzwerke auf meinem Laptop wechseln und der DNS wurde richtig geschaltet. Natürlich kann ich in externen Netzwerken keine meiner lokalen Computer auflösen, aber das wird erwartet. Sobald ich zu meinem lokalen Netzwerk zurückschalte, werden alle lokalen Computer korrekt aufgelöst, da mein Router der DNS ist.

Die Reparatur

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

lrwxrwxrwx 1 root root 32 May 29 08:48 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

$ sudo reboot

Danach hat alles wie erwartet funktioniert und 127.0.0.53 wird überhaupt nicht mehr verwendet.

Die richtigen Ergebnisse

$ nslookup web1

Server:     192.168.1.1
Address:    192.168.1.1#53

Name:   web1
Address: 192.168.1.107

$ nslookup google.com

Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.7.174
Name:   google.com
Address: 2607:f8b0:4004:80e::200e
schworak
quelle
Bitte melden Sie diesen Fehler mit ubuntu-bug resolvconf.
Chai T. Rex
Wenn ich anfange zu senden, heißt es resolvconf (nicht installiert). Ist resolvconf und systemd-resolve dasselbe?
schworak
systemd-resolvewird vom systemdPaket bereitgestellt , bitte versuchen Sie es ubuntu-bug systemdstattdessen.
Chai T. Rex
Vielen Dank! Ich hatte diese Funktion zum Melden von Fehlern noch nie verwendet. Sehr schön.
schworak
1
Wow, das ist verrückt. Vielen Dank. Wurde dieser Fehler jemals behoben? Ist es ein Docker-spezifischer Fehler? Ich denke, das resolv.confist auf diese Weise für Docker-Bridge-Netzwerk-DNS eingerichtet, oder?
void.pointer