GNU/Linux >> LINUX-Kenntnisse >  >> Linux

DNS-Abfragen können nicht ausgeführt werden, wenn die Antwort größer als 512 Bytes und abgeschnitten ist

"Kann jemand bitte einen Einblick geben, warum das so funktioniert, und mit einer Lösung helfen, falls vorhanden? "

KURZE ANTWORT:

Eine standardmäßige Azure-VM wird mit defektem DNS erstellt:systemd-resolved muss weiter konfiguriert werden. sudo systemctl status systemd-resolved wird dies schnell bestätigen. /etc/resolv.conf zeigt auf 127.0.0.53 - ein lokaler unkonfigurierter Stub-Resolver.

Der lokale Stub-Resolver systemd-resolved war unkonfiguriert. Es hatte keine Weiterleitung eingestellt, also nach dem Drücken von 127.0.0.53 es hatte sonst niemanden zu fragen. Pfui. Springen Sie zum Ende, um zu sehen, wie Sie es für Ubuntu 18.04 konfigurieren.

Wenn es Sie interessiert, wie diese Schlussfolgerung gezogen wurde, lesen Sie bitte die lange Antwort.

LANGE ANTWORT:

Warum DNS-Antworten über 512 Bytes abgeschnitten werden:

TCP [RFC793] wird immer für vollständige Zonenübertragungen (unter Verwendung von AXFR) und häufig für Nachrichten verwendet, deren Größe die ursprüngliche 512-Byte-Grenze des DNS-Protokolls überschreitet.

Quelle:https://tools.ietf.org/html/rfc7766

ANALYSE:

Das war kniffliger als ich dachte. Also habe ich eine Ubuntu 18.04-VM in Azure hochgefahren, damit ich aus der Sicht des OP testen konnte:

Mein Ausgangspunkt war, zu validieren, dass nichts die DNS-Abfragen abwürgt:

sudo iptables -nvx -L
sudo apparmor_status

Alle Ketten in den iptables hatten ihre Standardrichtlinie auf AKZEPTIEREN gesetzt und zwar Apparmor wurde auf "erzwingen gesetzt ", es war nichts mit DNS zu tun. Daher wurden zu diesem Zeitpunkt keine Verbindungs- oder Berechtigungsprobleme auf dem Host beobachtet.

Als nächstes musste ich herausfinden, wie die DNS-Abfragen schlängelten sich durch die Gänge.

cat /etc/resolv.conf 

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0
search ns3yb2bs2fketavxxx3qaprsna.zx.internal.cloudapp.net

Also nach resolv.conf , erwartet das System einen lokalen Stub-Resolver namens systemd-resolved . Überprüfung des Status von systemd-resolved gemäß dem Hinweis im obigen Text sehen wir, dass es fehlerhaft ist :

sudo systemctl status systemd-resolved

● systemd-resolved.service - Network Name Resolution
   Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-10-08 12:41:38 UTC; 1h 5min ago
     Docs: man:systemd-resolved.service(8)
           https://www.freedesktop.org/wiki/Software/systemd/resolved
           https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers
           https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
 Main PID: 871 (systemd-resolve)
   Status: "Processing requests..."
    Tasks: 1 (limit: 441)
   CGroup: /system.slice/systemd-resolved.service
           └─871 /lib/systemd/systemd-resolved

Oct 08 12:42:14 test systemd-resolved[871]: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001, retrying transaction with reduced feature level UDP.
<Snipped repeated error entries>

/etc/nsswitch.conf Legen Sie die Reihenfolge der Quellen fest, die zum Auflösen von DNS-Abfragen verwendet werden. Was sagt uns das?:

hosts:          files dns

Nun, die DNS-Abfragen werden niemals den lokalen systemd-resolved treffen Stub-Resolver, da er nicht in /etc/nsswitch.conf angegeben ist .

Sind die Forwarder überhaupt für die systemd-resolved gesetzt Stub-Resolver?!?!? Sehen wir uns diese Konfiguration in /etc/systemd/resolved.conf an

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

Nein:systemd-resolved hat keine Weiterleitung, die fragt, ob eine lokale IP:Name-Zuordnung nicht gefunden wird.

Das Nettoergebnis von all dem ist:

  • /etc/nsswitch.conf sendet DNS-Anfragen an DNS, wenn kein lokaler IP:name vorhanden ist Zuordnung gefunden in /etc/hosts

  • Der abzufragende DNS-Server ist 127.0.0.53 und wir haben gerade gesehen, dass dies nicht konfiguriert ist, indem wir die Konfigurationsdatei /etc/systemd/resolved.conf überprüft haben . Wenn hier keine Weiterleitung angegeben ist, können wir nichts erfolgreich lösen.

TESTS:

Ich habe versucht, den Stub-Resolver 127.0.0.53 zu überschreiben durch direkte Angabe von 168.63.129.16. Dies ist fehlgeschlagen:

dig aerserv-bc-us-east.bidswitch.net 168.63.129.16

; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> aerserv-bc-us-east.bidswitch.net 168.63.129.16
;; global options: +cmd
;; connection timed out; no servers could be reached
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 24224
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;168.63.129.16.         IN  A

;; Query time: 13 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Tue Oct 08 13:26:07 UTC 2019
;; MSG SIZE  rcvd: 42

Nein:;; SERVER: 127.0.0.53#53(127.0.0.53) wird angezeigt in der Ausgabe sagt uns, dass wir es nicht überschrieben haben und der lokale, nicht konfigurierte Stub-Resolver immer noch verwendet wird.

Die Verwendung eines der folgenden Befehle überschreibt jedoch den Standardwert 127.0.0.53 Stub-Resolver und konnte daher erfolgreich NOERROR zurückgeben Ergebnisse:

sudo dig aerserv-bc-us-east.bidswitch.net @168.63.129.16

oder

dig +trace aerserv-bc-us-east.bidswitch.net @168.63.129.16 

Also alle Abfragen, die sich auf die Verwendung von systemd-resolved stützten Stub-Resolver waren dem Untergang geweiht, bis er konfiguriert wurde.

LÖSUNG:

Meine Initiale - falsch - Glaube war, dass TCP/53 blockiert wurde:die ganze "Truncated 512 " war ein kleiner Ablenkungsmanöver. Der Stub-Resolver war nicht konfiguriert. Ich ging davon aus - ich weiß, ich weiß, "NIEMALS ANNAHME;-) - dass DNS anders konfiguriert war.

So konfigurieren Sie systemd-resolved :

Ubuntu 18.04

Bearbeiten Sie hosts Direktive in /etc/nsswitch.conf wie unten, indem Sie resolve voranstellen um systemd-resolved einzustellen als erste Quelle der DNS-Auflösung:

hosts:          resolve files dns

Bearbeiten Sie DNS Direktive (mindestens) in /etc/systemd/resolved.conf um Ihre gewünschte Weiterleitung anzugeben, die in diesem Beispiel wäre:

[Resolve]
DNS=168.63.129.16

Starten Sie systemd-resolved neu :

sudo systemctl restart systemd-resolved

RHEL 8:

Red Hat erledigt fast alles für Sie in Bezug auf die Einrichtung von systemd-resolved als Stub-Resolver, außer sie haben dem System nicht gesagt, dass es ihn verwenden soll!

Bearbeiten Sie den hosts Direktive in /etc/nsswitch.conf wie unten, indem Sie resolve voranstellen um systemd-resolved einzustellen als erste Quelle der DNS-Auflösung:

hosts:          resolve files dns

Starten Sie dann systemd-resolved neu :

sudo systemctl restart systemd-resolved

Quelle :https://www.linkedin.com/pulse/config-rhel8-local-dns-caching-terrence-houlahan/

SCHLUSSFOLGERUNG:

Einmal systemd-resolved konfiguriert war, verhielt sich das DNS meiner Test-VM wie erwartet. Ich denke, das reicht....


Linux
  1. Wie aktiviere ich die Protokollierung des BIND-DNS-Servers, um Abfragen zu überwachen und Fehler zu beheben?

  2. So führen Sie DNS- und FTP-Dienste in einem Chroot-Gefängnis aus

  3. Wann und warum Alternativen ausführen --install java jar javac javaws bei der Installation von jdk unter Linux

  4. ssh-Verzögerung beim Verbinden

  5. Führen Sie einen Befehl aus, wenn das System im Leerlauf ist und wenn es wieder aktiv ist

Wie man Partitionen auf MBR- und GPT-Festplatten auflistet, erstellt und löscht – RHCSA Objective Preparation

Überwachen Sie MySQL-Verbindungen und Abfragen mit mytop

So kompilieren und führen Sie C- und C++-Programme unter Linux aus

10 Befehle zum Überprüfen von Festplattenpartitionen und Speicherplatz unter Linux

Installieren und konfigurieren Sie DRBD unter CentOS 8

Wie man ein C-Programm unter Linux schreibt und ausführt