Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| netzwerke:dns [2010/03/08 15:39] – st | netzwerke:dns [2025/01/05 00:15] (aktuell) – [DoT testen] st | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== DNS ====== | ||
| + | Das [[wpde> | ||
| + | |||
| + | Wenn man lokalen DNS-Servern nicht traut ([[security: | ||
| + | |||
| + | Per DNS lässt sich auch der Proxy mitteilen (per [[wpde> | ||
| + | |||
| + | ^ Abfragetypen | ||
| + | ^ interative Abfrage | Der DNS-Server gibt die bestmögliche Antwort zurück, die er ohne die Hilfe anderer Server bereitstellen kann | | ||
| + | ^ rekursive Abfrage | Der DNS-Server gibt eine vollständige Antwort auf die Abfrage und nicht nur einen Verweis auf einen anderen Server zurück | | ||
| + | |||
| + | ^ Lookuptypen | ||
| + | ^ Typ ^ Ipv4 ^ Ipv6 ^ | ||
| + | ^ forward-lookup | Auflösung von Namen in Adressen: <code bash>dig www.stefanux.de.</ | ||
| + | ^ reverse-lookup | Auflösung von Adressen in Namen: <code bash>dig -x 178.63.64.116</ | ||
| + | ^ Anfragen an einen rekursiven DNS-Resolver | Diagnose auf einem DNS-Server (ohne Antworten von Root-DNS-Servern etc.): ($interface, | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ^ Record ^ Windows cmd ^ Win PS v4 ((Win 8.1+ / Server 2012+)) ^ Linux (host) | ||
| + | | A | nslookup XYZ | Resolve-DnsName -Name XYZ | host XYZ | dig XYZ | host XYZ | | ||
| + | | AAAA | nslookup -query=AAAA XYZ | Resolve-DnsName -Name XYZ | host -t aaaa XYZ | dig AAAA XYZ | | ||
| + | | reverse lookup | nslookup IP oder nslookup -type=ptr IP | | host IP | dig -x IP | | ||
| + | | MX | nslookup -query=MX XYZ | | host -t mx XYZ | dig mx XYZ | | ||
| + | | NS (authoritative nameservers) | ||
| + | | TXT |nslookup -query=TXT XYZ | | host -t txt XYZ | dig txt XYZ | | ||
| + | | SRV |nslookup -query=SRV XYZ | | host -t srv XYZ | dig srv XYZ | | ||
| + | | bestimmten Server befragen | ||
| + | | alle Records zurückliefern | ||
| + | |||
| + | * DNS-Server: IP/Hostname eines DNS-Servers | ||
| + | * XYZ = hostname.Domain.tld | ||
| + | ===== Links ===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== Öffentliche Rekursive DNS Server ===== | ||
| + | |||
| + | Die folgende Auflistung ist eine Auswahl. | ||
| + | |||
| + | ^ Dienst ^ Standort ^ Methoden ^ EDNS Client Subnet ((client IP durchreichen für geo-located Antworten)) ^ v4 ^ v6 ^ DoT ^ DoH ^ Filterung ^ Datenschutz ^ Ratelimit (queries pro IP und Sekunde) ^ | ||
| + | | Google DNS | | UDP53, DoT, [[https:// | ||
| + | | Cloudflare | | UDP53, DoT, DoH | | 1.1.1.1, 1.0.0.1 | 2606: | ||
| + | | [[https:// | ||
| + | | Foebud | DE (Hetzner) | UDP53, DoT (dns3.digitalcourage.de) | Nein | 5.9.164.112, | ||
| + | | Stefanux | DE (Hetzner) bzw. DE (Strato) | UDP53, DoT | Nein | 162.55.248.253, | ||
| + | ==== managed DNS-Services ==== | ||
| + | |||
| + | Es gibt mittlerweise eine Reihe von Anbietern die DNS-Server betreiben und Kunden hohe Verfügbarkeit, | ||
| + | |||
| + | siehe auch: **[[https:// | ||
| + | |||
| + | * [[server: | ||
| + | * **[[inwx]]** | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== DNS-Server-Software ===== | ||
| + | |||
| + | * [[server: | ||
| + | * [[Server: | ||
| + | * [[http:// | ||
| + | * '' | ||
| + | |||
| + | |||
| + | :!: Bei selbst betreuten DNS-Servern sollte man [[wpde> | ||
| + | |||
| + | ===== DNS-Namen für dynamische IP ===== | ||
| + | |||
| + | Für den Betrieb von Serverdiensten ist in den meisten Fällen ein DNS-Name zugewiesen, der auf eine feste IP zeigt. Wenn keine feste IP möglich ist, z. B. bei einem Einwahlzugang, | ||
| + | |||
| + | Üblicherweise wird durch eine Client-Software die neue (z.B durch Zwangstrennung geänderte) IP-Adresse gemeldet, so dass der Dienst schnell wieder unter der neuen IP-Adresse zur Verfügung steht. | ||
| + | |||
| + | |||
| + | ==== Dyndns-Anbieter ==== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * diverse andere kleine und große Anbieter wie z.B. [[http:// | ||
| + | |||
| + | |||
| + | ==== Dyndns-Server ==== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * ...? | ||
| + | |||
| + | |||
| + | ==== Client-Software ==== | ||
| + | |||
| + | * Clients sind auch in vielen Routern enthalten haben aber meist nur eine kleine Auswahl von Dyndns-Anbietern | ||
| + | * [[linux: | ||
| + | * [[windows: | ||
| + | * [[mac: | ||
| + | |||
| + | ===== DNS Änderungen ===== | ||
| + | |||
| + | Neue Einträge im DNS-Server verbreiten sich durch caches nicht sofort im ganze Internet. | ||
| + | |||
| + | Negative Antworten (DNS-Eintrag zum angefragten Host existiert nicht =negative Caching Zeit) werden ebenfalls von anderen Nameservern zwischengespeichert. Hierbei ist die TTL aus dem SOA-record der Zone verantwortlich. Diese setzt normalerweise der Provider, wenn diese negative Caching Zeit sehr hoch ist (im Vergleich zur TTL einzelner vorhandener Einträge) ist das für dyndns/ | ||
| + | |||
| + | <code bash>dig GibtsNicht.example.com</ | ||
| + | < | ||
| + | ; <<>> | ||
| + | ;; global options: +cmd | ||
| + | ;; Got answer: | ||
| + | ;; ->> | ||
| + | ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 | ||
| + | |||
| + | ;; QUESTION SECTION: | ||
| + | ; | ||
| + | |||
| + | ;; AUTHORITY SECTION: | ||
| + | example.com. 1800 IN SOA ns.namespace4you.de. hostmaster.example.com. 1384198447 16384 2048 1048576 2560 | ||
| + | </ | ||
| + | Aus der Antwort ergibt sich ([[http:// | ||
| + | - Die Seriennr. der letzten Änderung: 1384198447 | ||
| + | - Refresh Time: 16384 | ||
| + | - Retry Time: 2048 | ||
| + | - Expire Time: 1048576 | ||
| + | - negative Caching Zeit: 2560 | ||
| + | ===== Konfiguration ===== | ||
| + | |||
| + | http:// | ||
| + | http:// | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | ^ **Typ** ^ Bedeutung ^ Eintrag ^ | ||
| + | | **SOA** | Start Of Authority | ||
| + | | **A** | Address | ||
| + | | **AAAA-Record** | [[netzwerke: | ||
| + | | **[[wpde> | ||
| + | |** NS** | Name Server | Name eines Nameservers der Domain (auch: Weiterleitung der Nameserveranfragen an einen anderen Nameserver). | | ||
| + | | **CNAME** | Canonical Name | Domainname eines Rechners (Aliasfunktion: | ||
| + | | **PTR** | ||
| + | | **HINFO** | Host Information | ASCII Beschreibung des Hosts (CPU, OS, ...) | | ||
| + | | **TXT** | Text - Nicht verwertbarer Text - Kommentar || | ||
| + | | **SPF-Record** | Eintrag für das " | ||
| + | | **[[http:// | ||
| + | * [[wpde> | ||
| + | |||
| + | |||
| + | :!: falsche DNS-Konfiguration ('' | ||
| + | |||
| + | ==== Split-DNS und private IPs im DNS ==== | ||
| + | |||
| + | DNS muss als öffentlichen Datenbank angesehen werden, zwar sind ANY-Abfragen nicht komplett und | ||
| + | |||
| + | Gründe für private DNS-Adressen im DNS: | ||
| + | * Robustheit: | ||
| + | * bei Abbruch der Verbindung cacht das Betriebssystem/ | ||
| + | * Split-DNS-Probleme sind aufwendiger zu finden da Antwort von der Zugangsart abhängig und monitoring schwerer möglich | ||
| + | * Wartungsarm: | ||
| + | * keine internen DNS-Server (doppelt ausgelegt) nötig | ||
| + | * keine (manuellen) Abgleiche von externen und internen Zonen nötig. Standardproblem: | ||
| + | * dnssec Zonensignierung / DoT externer Server kann genutzt werden | ||
| + | |||
| + | Gründe gegen private IPs im DNS: | ||
| + | * inviduelle Hygenegründe ("was nicht öffentlich routebar ist, soll auch nicht im public dns sein") | ||
| + | * es besteht ein " | ||
| + | * **DNS-Rebind-Schutzmaßnahmen** brauchen dafür Ausnahmen ((z.B. Fritz-Boxen: | ||
| + | * Szenarien in denen Split-DNS zwingend nötig ist (z.B. unterschiedliche IPs auf mehreren privaten Uplinks wobei der FQDN für eine Applikation überall gleich sein muss) | ||
| + | * Rückwärtsauflösung privater Adressen ist nur intern möglich | ||
| + | |||
| + | ==== .local vermeiden ==== | ||
| + | |||
| + | dig erzeugt Warnungen, bei bind ist das extra Aufwand, powerdns recursive kommt damit klar (wenn es forwarded), trotzdem nicht benutzen: [[https:// | ||
| + | < | ||
| + | WARNING: .local is reserved for Multicast DNS | ||
| + | ;; You are currently testing what happens when an mDNS query is leaked to DNS | ||
| + | </ | ||
| + | ==== Zonen ==== | ||
| + | Bei DNS bezeichnet [[wpde> | ||
| + | |||
| + | ^ Zonentypen ^^ | ||
| + | | primäre Zone | lese und schreibbar | | ||
| + | | sekundäre Zone | liest/ | ||
| + | | [[windows: | ||
| + | |||
| + | ==== Unterschied zwischen Domäne und Zone ==== | ||
| + | Eine Domäne umfasst den gesamten untergeordneten DNS Namensraum. Der Begriff Domäne wird auch verwendet, wenn man sich auf den Inhalt (Welche Namen enthält eine Domäne?) oder die Eigentumsrechte (Für wen ist eine Domäne registriert? | ||
| + | |||
| + | Eine Domäne kann in mehrere Zonen aufgeteilt werden, indem man die Zuständigkeit für Subdomains delegiert. Von einer Zone spricht man auch, wenn man die physische Realisierung meint – also auf welchem Server und in welcher Zonendatei liegen die DNS-Einträge. | ||
| + | |||
| + | |||
| + | |||
| + | ==== Zonentransfer ==== | ||
| + | |||
| + | [[wpde> | ||
| + | |||
| + | Da ein DNS-Ausfall für ein Unternehmen meist gravierende Folgen hat, werden die DNS-Daten – also die Zonendateien – fast ausnahmslos identisch auf mehreren Nameservern gehalten. Bei Änderungen muss sichergestellt sein, dass alle Server den gleichen Datenbestand besitzen. Die Synchronisation zwischen den beteiligten Servern wird durch den Zonentransfer realisiert. Der Zonentransfer beinhaltet nicht nur das bloße Übertragen von Dateien oder Sätzen, sondern auch das Erkennen von Abweichungen in den Datenbeständen der beteiligten Server. | ||
| + | |||
| + | Er kann mit dem Befehl '' | ||
| + | |||
| + | ==== Zonendatei ==== | ||
| + | |||
| + | Eine [[wpde> | ||
| + | |||
| + | |||
| + | |||
| + | ===== Sicherungsmaßnahmen bei DNS ===== | ||
| + | |||
| + | Das originale DNS ist (leider) standardmäßig unverschlüsselt und unsigniert, die Antworten können also auf dem Weg mitgelesen und verändert werden und die Echtheit der Antwort wird nicht garantiert. | ||
| + | |||
| + | Dagegen existieren im wesentlichen die folgenden drei Lösungen | ||
| + | |||
| + | ==== DNSSEC (Signierung) ==== | ||
| + | |||
| + | Gegen Angriffe wie [[security: | ||
| + | |||
| + | siehe auch: **[[https:// | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | DNS-Antworten via DNSSEC enthalten sowohl signierte Daten als auch Schlüssel, deshalb können Antworten mehrere KB groß werden. Einige Firewalls und DNS-Server begrenzen jedoch die maximale Paketgröße, | ||
| + | |||
| + | Das OARC betreibt einen Testdienst, der allgemeine Aufruf lautet: | ||
| + | |||
| + | dig +short rs.dns-oarc.net @DNS-Server txt | ||
| + | |||
| + | Beispiel: Google DNS abfragen: | ||
| + | dig +short rs.dns-oarc.net @8.8.4.4 txt | ||
| + | |||
| + | Die Ausgabe zeigt das Google DNS ein zu kleines Limit für DNSSEC hat: | ||
| + | |||
| + | < | ||
| + | rst.x476.rs.dns-oarc.net. | ||
| + | rst.x485.x476.rs.dns-oarc.net. | ||
| + | rst.x490.x485.x476.rs.dns-oarc.net. | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | |||
| + | Eine ausreichend dimensioniertes Limit sieht so aus (statt " | ||
| + | |||
| + | < | ||
| + | rst.x3827.rs.dns-oarc.net. | ||
| + | rst.x3837.x3827.rs.dns-oarc.net. | ||
| + | rst.x3843.x3837.x3827.rs.dns-oarc.net. | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | ===== DnsSec testen ===== | ||
| + | |||
| + | * negativ-Test (darf kein Ergebnis liefern): dig +short sigfail.verteiltesysteme.net @mein.DNS.server | ||
| + | * positiv-Test (liefert IP zurück): dig +short sigok.verteiltesysteme.net @mein.DNS.server | ||
| + | |||
| + | |||
| + | |||
| + | ==== DNS over TLS (DoT) ==== | ||
| + | |||
| + | DNS over TLS (DoT) führt einen zusätzlichen TLS-Schutz ein (Verschlüsselung). | ||
| + | Grundlage ist RFC 7858, TLS-verschlüsselte TCP Kommunikation, | ||
| + | |||
| + | DoT wird von allen wichtigen DNS-Servern unterstützt (auch von Routern wie der Fritz-box), unverschlüsselte DNS-Server können durch einen TLS-wrapper (wie [[software: | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | === DoT testen === | ||
| + | |||
| + | Test via Kommandozeile (kdig ist Teil der " | ||
| + | |||
| + | Beispiel: Abfrage der IP 8.8.4.4 (mit Hostname " | ||
| + | |||
| + | <code bash> | ||
| + | |||
| + | Erfolg: | ||
| + | < | ||
| + | |||
| + | Fehler (Beispiel): | ||
| + | < | ||
| + | ;; DEBUG: TLS, The certificate is NOT trusted. The name in the certificate does not match the expected. | ||
| + | ;; WARNING: TLS, handshake failed (Error in the certificate.) | ||
| + | </ | ||
| + | |||
| + | |||
| + | === systemd-resolved DoT config === | ||
| + | |||
| + | < | ||
| + | DNS=8.8.4.4# | ||
| + | DNS=9.9.9.9# | ||
| + | DNS=2001: | ||
| + | DNS=2620: | ||
| + | DNSOverTLS=yes | ||
| + | </ | ||
| + | |||
| + | ==== DNS over HTTP (DoH) ==== | ||
| + | |||
| + | DNS over HTTP (DoH) führt einen zusätzlichen TLS-Schutz ein (Verschlüsselung), | ||
| + | |||
| + | <code bash> | ||
| + | # json-Abfrage für " | ||
| + | curl -H ' | ||
| + | </ | ||
| + | |||
| + | ==== DNScrypt ==== | ||
| + | |||
| + | DNSCrypt (basiert auf DNScurve von D.J. Bernstein, von OpenDNS betreut) | ||
| + | ===== Hosts-Datei ===== | ||
| + | |||
| + | Muss ein Hostname in eine IP-Adresse (oder umgekehrt) übersetzt (oder „aufgelöst“) werden, so wird bei Betriebssystemen zuerst versucht, die Namensauflösung lokal anhand der in der Hosts-Datei gespeicherten Zuordnungen durchzuführen, | ||
| + | |||
| + | Vor der Einführung des Domain Name Systems (DNS) wurden Rechnernamen im Internet über diese Hosts-Dateien aufgelöst. Die Verteilung und Aktualisierung dieser Dateien war allerdings ein logistisches Problem. Deshalb werden Hosts-Dateien im Internet sowie in größeren Netzwerken heutzutage selten bis nicht mehr verwendet. Auch Loopback-Adressen benötigen heutzutage keinen Eintrag in der Hosts-Datei. | ||
| + | |||
| + | Anmerkung: Dieser Abschnitt basiert auf einem [[wpde> | ||
| + | |||
| + | ==== Pfade unter verschiedenen Betriebssystemen ==== | ||
| + | |||
| + | |||
| + | * [[windows: | ||
| + | * [[windows: | ||
| + | * [[windows: | ||
| + | * Unix, [[linux: | ||
| + | * [[mac:Mac]] OS X: ''/ | ||
| + | * iOS und andere BSD-basierende Betriebssysteme: | ||
| + | * OS/2 und eComStation: | ||
| + | * Series 60 1st und 2nd Edition: '' | ||
| + | * Series 60 3rd Edition: '' | ||
| + | * Android: ''/ | ||