====== DNS-Anfragen machen ====== Zahlreiche Programme auf einem Computer versenden häufig DNS-Anfragen. Der Nutzer merkt davon nichts. Beispiel: In der Adresszeile des Browsers wird //%%www.google.de%%// eingegeben und ohne dass sich der Nutzer gedanken über die im Hintergrund versendeten DNS-Anfragen machen muss, wird kurz darauf die Suchseite von Google geöffnet. Allerdings lassen sich DNS-Anfragen auch direkt versenden. Hierzu gibt es einerseits verschiedene Web-Seiten, die ein Nachschlageformular anbieten. Andererseits kann man DNS-Anfragen aber auch direkt von der Kommandozeile aus tätigen. ===== Empfohlene Lernstrategie ===== Verwende das interaktive Kommandozeilen-Tool **nslookup** unter Windows um DNS-Anfragen zu versenden. Falls notwendig, kannst du die [[https://learn.microsoft.com/de-de/windows-server/administration/windows-commands/nslookup | Microsoft-Befehlsreferenz zu nslookup]] zur Hilfe nehmen. Auf Linux-Systemen steht meistens auch das Kommandozeilen-Tool **dig** zur Verfügung, um DNS-Anfragen zu stellen. ==== Einführende Beispiele zur Handhabung von nslookup ==== Starte eine Windows-PowerShell oder Eingabeaufforderung, um nslookup verwenden zu können. Die einfachste Form einer Namensauflösung mit Hilfe von nslookup funktioniert in einer einzigen Zeile, z. B. ''nslookup %%www.google.de%%''\\ Die Ausgabe beinhaltet dann * die Information, welcher Server die Namensauflösung vorgenommen hat und * die IP-Adressen (ggf. v4 und v6) zu der angefragten Domain. nslookup kann aber auch **interaktiv** eingesetzt werden. Hierzu startet man einfach mit dem Befehl ''nslookup'' den interaktiven Modus. Die wichtigsten Informationen, wie man diesen benutzt, sind hier zusammengefasst: - Gibt man einfach einen Domain-Namen ein, so wird für diesen im Standardfall eine Auflösung für den A- und AAAA-Record durchgeführt. Probiere das aus, indem du z. B. ''%%www.google.de%%'' eingibst. - Gibt man eine IP-Adresse an, dann wird im Normalfall nach dem PTR-Record aufgelöst. Versuche es mit ''8.8.8.8'' und ''2620:fe::fe''. - Wenn man einen anderen als den vom System eingestellten DNS-Server verwenden möchte, kann man das mit Hilfe des Befehls ''server'' einstellen. Gib ''server 9.9.9.9'' ein, um für die folgenden Anfragen den Quad9-DNS-Server zu verwenden. - Wenn man wissen möchte, welcher DNS-Server für eine bestimmte Zone (d. h. eine bestimmte (Sub-)Domain) zuständig ist, dann stellt man eine Anfrage nach dem NS-Record. Verwende die Befehle ''set type=ns'' und ''bayern.de'' um herauszufinden, welche DNS-Server für die Zone **bayern.de** zuständig sind. Der besseren Ausfallsicherheit halber, sollten hier mehrere zuständige Server hinterlegt sein. - Das **set**-Kommando kann man auf ähnliche Weise einsetzen, wenn man gezielt nach A-, AAAA- oder PTR-Records suchen möchte. ''set type=ptr'' - Stellt man den RR-Typ auf **MX**, dann wird nach dem Mail Exchange-Server gefragt. Finde mit ''set type=mx'' und ''schule.bayern.de'' heraus, wohin dein Mailserver eine E-Mail für die Zustellung weiterleitet, wenn du eine E-Mail an xy@schule.bayern.de versendest. - Mit Hilfe des Kommandos ''set type=any'' kann man nslookup veranlassen, verschiedene Typen von Resource Records gleichzeitig nachzuschlagen. ==== Einführende Beispiele zur Handhabung von dig ==== Starte auf einer Linux-Maschine (z. B. eine deiner VMs) eine Shell oder auf Windows ein WSL-Terminal, um ''dig'' zu verwenden. Die Befehlssyntax von dig ist in der entsprechenden [[https://linux.die.net/man/1/dig | man-Page]] beschrieben. In ihren Grundzügen lautet sie wie folgt: ''dig @nameserver domain.name TYPE'' Anfragen könnten daher beispielsweise lauten: * ''dig @9.9.9.9 %%www.google.de%% A'' um die IPv4-Adresse von %%www.google.de%% bei dem DNS-Server 9.9.9.9 nachzuschlagen. * ''dig @ns.bayern.de %%schule.bayern.de%% MX'' um den für die Domäne %%schule.bayern.de%% zuständigen Mail Exchange-Server beim DNS-Server ns.bayern.de nachzuschlagen. ==== Weiterführende Aufgaben ==== - Finde heraus, auf welcher Domain-Name für die IPv4-Adresse ''193.99.144.80'' hinterlegt ist (Reverse-Auflösung). - Überprüfe, ob der gefundene Domain-Name auch zu der selben IPv4-Adresse führt (Forward-Auflösung). Öffne die Seite per IPv4-Adresse im Browser. - Finde heraus, welche IPv6-Adresse für den gefundenen Domain-Namen hinterlegt ist. Besuche auch diese IPv6-Adresse im Browser und vergleiche das Ergebnis. - Finde heraus, an welchen Mailserver eine E-Mail weitergeleitet wird, die an example@gmail.com versendet wurde. - Wie viele Einträge beinhaltet die Antwort, die du bekommst? - Welcher der Einträge wird bevorzugt verwendet? - Finde mittens einer DNS-Anfrage heraus, welche DNS-Server für die Root-Zone zuständig sind. - Stelle an diesen DNS-Server eine Anfrage um einen autoritativen Name-Server für die Zone ''schule.'' zu finden. - Frage einen der zuständigen Nameserver, an welchen DNS-Server die Sub-Zone ''fachinformatiker.schule'' delegiert wurde. - Frage einen der zuständigen Nameserver nach der IPv4- und IPv6-Adresse von ''wiki.fachinformatiker.schule''. - Wiederhole das obige Beispiel, indem du direkt einen der Root-Server nach einem A- oder AAAA-Record für ''wiki.fachinformatiker.schule'' fragst und den Antworten der Server folgst, bis du den eigentlichen Record erhalten hast. ===== Alternative und zusätzliche Materialien ===== * Cheat Sheet: [[https://cheatography.com/creo/cheat-sheets/fhstp-dig/pdf_bw/Cheat Sheet für dig]] * Infografik: [[https://seguro.ltd/guides/how-does-dns-work-cheatsheet-infographic/|How does DNS work]]