DNS – oder auch: warum geht mein Internet nicht?
Woran scheitert der Besuch einer Webseite? Warum kann ich meine E-Mail nicht verschicken? DNS, die Mutter aller Internet-Dienste, ist häufig die Ursache des Problems. Paketverlust oder eine falsch konfigurierte Firewall haben Auswirkungen auf verschiedenste Protokolle. DNS als Basisprotokoll ist jedoch das anfälligste auf Paketverlust und falsch konfigurierter Firewall. Diese Auswirkungen zu kennen unterstützt den Fehlerbehebungsprozess, sodass eventuell auftretende Probleme schneller gelöst werden können.
Funktion des DNS
Die Hauptaufgabe des Domain Name Service (DNS) ist die Beantwortung von Anfragen zur Namensauflösung. Aufgrund der Bereitstellung eines weltweiten verteilten Verzeichnisdienstes ist das Domain Name System seit 1985 ein wesentlicher Bestandteil der Funktionalität des Internets.
Paketverlust
DNS ist jedoch aufgrund des Designs ein anfälliges Protokoll für Paketverlust. Denn bevor eine E-Mail verschickt, eine Webseite besucht oder ein Stream gestartet werden kann, wird zunächst via DNS eine Domain in eine IP-Adresse aufgelöst. Mit der entsprechenden IP-Adresse können die verschiedenen Protokolle eine Verbindung zu dem jeweiligen Server aufbauen. Ist die DNS-Namensauflösung jedoch durch Paketverlust gestört, sind alle weiteren Prozesse ebenso betroffen. DNS ist daher in vielen Fällen die Ursache für Fehler und Ineffizienz. Als Transportprotokoll verwendet DNS primär UDP (User Datagram Protocol) und damit ein nicht verbindungsorientiertes Protokoll.
Bereits ein verlorenes Paket führt zu massiven Verzögerungen. In dem oben gezeigten Beispiel sendet der Client 192.168.2.120 erst nach fünf Sekunden Wartezeit eine erneute Anfrage an den DNS-Server. Sind Verbindungen zum und von DNS-Servern bis zu einem gewissen Grad gestört und nicht zu beheben, so ist zu prüfen, ob DNS-Anfragen via TCP eine Alternative darstellen. Wo in Abbildung 1 bereits ein verlorenes Paket zu fünf Sekunden Verzögerungen führen, so ist die DNS-Anfrage in Abbildung 2 mit 20% Paketverlust in 846ms abgehandelt.
DNS über TCP
Primär verwendet DNS UDP als Transportprotokoll. DNS war jedoch von Beginn an darauf ausgelegt, sowohl UDP als auch TCP (Transmission Control Protocol) verwenden zu können. TCP wird lediglich verwendet, wenn DNS nicht in der Lage ist, über UDP zu kommunizieren.
Wann wechselt DNS von UDP zu TCP?
Typischerweise, wenn die Paketgröße die maximale Länge eines einzigen UDP Pakets von 512 Byte überschreitet.
Wann wird die maximale Länge überschritten?
Tatsächlich geschieht dies in der heutigen Umgebung recht häufig. Als DNS zum ersten Mal implementiert wurde, war die einzige Anwendung, bei der die maximale Länge überschritten wurde, ein Zonentransfer. In heutigen DNS-Systemen kann die maximale Länge beispielsweise bei einem TXT-Record und weiteren Funktionen zur Spam Vermeidung überschritten werden.
Was passiert, wenn TCP blockiert wird?
Wenn die Paketgröße 512 Bytes überschreitet, wird das 'TC'-Bit (Truncation) gesetzt und der Client somit informiert, dass die Nachrichtenlänge die zulässige Größe überschritten hat. In diesen Situationen muss der Client die Anfrage erneut über TCP übertragen. Ist TCP jedoch blockiert, so muss die Anfrage des Clients via UDP beantwortet werden. Dies führt dazu, dass das Paket entweder fragmentiert oder verworfen wird. Dies hat eine langsame DNS-Auflösung oder nicht auflösbaren Domänennamen zur Folge.
Auswirkungen auf das Benutzererlebnis:
- nicht oder nur langsam erreichbare Websites
- nicht funktionierende Dienste in Anwendungen
Warum die Beschränkung auf 512 Byte?
Die Größe von 512 Byte UDP-Nutzlast ist eine Abhängigkeit von IPv4. Der IPv4-Standard legt fest, dass jeder Netzwerkteilnehmer in der Lage sein muss, Pakete von 576 Bytes oder weniger zu verarbeiten. Werden Steuerdaten (Header) subtrahiert, bleiben reine 512 Byte Nutzlast übrig.
Die Beschränkung wurde als Problem erkannt, sodass im Extension Mechanism for DNS (EDNS) die maximale Größe bis auf 4096 Byte erhöht wurde. Aktuelle DNS-Server enthalten die EDNS Implementation und sind somit in der Lage, Anfragen zu beantworten. Obwohl EDNS seit 1999 existiert, gewährleisten nicht alle Netzwerkkomponenten einen reibungslosen Ablauf. Firewalls stellen eine Fehlerquelle dar, da DNS-UDP-Pakete über insgesamt 576 Bytes aus verschiedenen Gründen verworfen werden können. Dieses Verhalten verursacht möglicherweise keine direkt sichtbaren Probleme, dennoch ist zu gewährleisten, dass alle Netzwerkgeräte große DNS-Pakete unterstützen. Wenn die Netzwerkumgebung große DNS-Nachrichten nicht vollständig unterstützt, kann dies dazu führen, dass DNS-Pakete fragmentiert und/oder teilweise verworfen werden. Für den Endbenutzer hat dies denselben Effekt wie blockierte DNS-Pakete via TCP. DNS-Anfragen bleiben unbeantwortet oder dauern sehr lange.
Haben Sie hierzu Fragen? Dann kontaktieren Sie uns gerne.