DNS-Resolver sind eine es­sen­zi­el­le Kom­po­nen­te des Domain Name System (DNS). Sie fungieren als fragendes Ge­gen­stück zu den ant­wor­ten­den DNS-Name­ser­vern. Aus Nut­zer­sicht dient ein DNS-Resolver als Schnitt­stel­le zwischen Nutzer bzw. Ap­pli­ka­ti­on und Name­ser­vern.

Kos­ten­lo­ses DNS Hosting
Top Website-La­de­zei­ten mit kos­ten­lo­sem DNS
  • Schnel­le­re Domain-Auflösung für op­ti­mier­te La­de­zei­ten
  • Zu­sätz­li­cher Schutz gegen Ausfälle und Un­ter­bre­chun­gen
  • Kein Domain-Umzug notwendig

Was ist ein DNS-Resolver?

Ein DNS-Resolver ist ein Dienst, welcher auf Anfrage für einen Do­mä­nen­na­men eine IP-Adresse liefert. Man spricht davon, dass die Domäne in eine IP-Adresse aufgelöst wird; vom „Auflösen“ stammt der Name „Resolver“, welcher im Internet-Spe­zi­fi­ka­ti­ons­do­ku­ment RFC 1034 definiert ist:

Zitat

„Resolvers are programs that extract in­for­ma­ti­on from name servers in response to client requests. Resolvers must be able to access at least one name server and use that name server’s in­for­ma­ti­on to answer a query directly, or pursue the query using referrals to other name servers.“ — Quelle: "https://www.rfc-editor.org/rfc/"

Über­set­zung: „Resolver sind Programme, welche als Reaktion auf Client-Anfragen In­for­ma­tio­nen von Name­ser­vern ex­tra­hie­ren. Resolver müssen zumindest auf einen Name­ser­ver Zugriff haben und dessen In­for­ma­tio­nen nutzen, um die Anfrage direkt zu be­ant­wor­ten, oder die Anfrage an andere Name­ser­ver wei­ter­zu­rei­chen.“ (übersetzt von IONOS)

DNS-Resolver bilden das Ge­gen­stück zu den Name­ser­vern, welche die ei­gent­li­chen DNS-In­for­ma­tio­nen enthalten. Da Name­ser­ver auch als DNS-Server be­zeich­net werden, wird ge­le­gent­lich der Begriff „DNS-Client“ für DNS-Resolver verwendet. Al­ler­dings handelt es sich bei vielen DNS-Resolvern um Server; es existiert also eine Mehr­fach­be­le­gung des Begriffs DNS-Server.

DNS-Resolver kommen in vielen ver­schie­de­nen Aus­prä­gun­gen vor. Es handelt sich bei einem DNS-Resolver nicht zwingend um eine einzelne Kom­po­nen­te, und auch nicht um eine spe­zi­fi­sche Tech­no­lo­gie. Aus An­wen­der­per­spek­ti­ve ist ein DNS-Resolver jegliches System, welches sich darum kümmert, zu einem Do­mä­nen­na­men eine IP-Adresse zu ermitteln. Dabei spielt es keine Rolle, wie genau der DNS-Resolver die In­for­ma­ti­on erhält.

Auf der untersten Ebene exis­tie­ren die so­ge­nann­ten „Stub-Resolver“. Dabei handelt es sich für ge­wöhn­lich um eine Software-Bi­blio­thek oder einen Dienst, der auf dem lokalen System läuft. Stub-Resolver kom­mu­ni­zie­ren in der Regel mit auf ent­fern­ten Systemen be­find­li­chen DNS-Resolvern, welche die ei­gent­li­che Arbeit der Na­mens­auf­lö­sung ver­rich­ten.

Wozu benötigt man einen DNS-Resolver?

Das Domain Name System (DNS) ist ein hier­ar­chi­sches, über die ganze Welt ver­teil­tes System zur Ver­wal­tung mit Internet-Domänen ver­bun­de­ner Daten. Eine Domäne ist ein men­schen­freund­li­cher Name, der sich leicht merken und händisch verwenden lässt. Eine der Haupt­auf­ga­ben des DNS besteht in der Na­mens­auf­lö­sung, also der Zuordnung von Do­mä­nen­na­me zu IP-Adressen. DNS-Resolver sind damit einer der Grund­pfei­ler der tech­ni­schen Struktur des Internets. Hier ein Beispiel für die Na­mens­auf­lö­sung:

Ab­ge­frag­ter Do­mä­nen­na­me Zu­rück­ge­lie­fer­te IP-Adresse
example.com 93.184.216.34

Auch wenn es den meisten Anwendern und An­wen­de­rin­nen nicht bewusst sein dürfte, beginnen viele der täglich auf­ge­führ­ten Ar­beits­schrit­te mit der Auflösung eines Do­mä­nen­na­mens in eine IP-Adresse. Der Zugriff auf eine Website, das Abrufen von E-Mail, oder der das Einloggen in ein Be­nut­zer­kon­to per App beginnen allesamt mit der Na­mens­auf­lö­sung. Erst danach kommt es zum ei­gent­li­chen Da­ten­trans­fer.

Ar­beits­schritt Protokoll Server Hostname-Beispiel
Auf Website zugreifen HTTP Webserver www.ionos.com
Mail abrufen IMAP Mail­ser­ver imap.gmail.com
App-Login HTTPS Api-Server api.twitter.com

Den genannten Ar­beits­schrit­ten ist gemein, dass Server in­vol­viert sind. Also entfernte Systeme, mit denen unser lokales System kom­mu­ni­ziert. Zur Kom­mu­ni­ka­ti­on benötigt man die Adresse des Ge­gen­übers. In diesem Fall die IP-Adresse der Server. Jedoch kennt man in der Regel lediglich deren Do­mä­nen­na­men. Glück­li­cher­wei­se gibt es DNS-Resolver, welche die Auflösung der Namen für uns über­neh­men.

Kos­ten­lo­ses DNS Hosting
Top Website-La­de­zei­ten mit kos­ten­lo­sem DNS
  • Schnel­le­re Domain-Auflösung für op­ti­mier­te La­de­zei­ten
  • Zu­sätz­li­cher Schutz gegen Ausfälle und Un­ter­bre­chun­gen
  • Kein Domain-Umzug notwendig

Was passiert, wenn der DNS-Resolver fehlt?

Theo­re­tisch ist es möglich, auch ohne DNS-Resolver aus­zu­kom­men. Es lassen sich durchaus IP-Adressen direkt nutzen. Dies funk­tio­niert heut­zu­ta­ge aber nur noch theo­re­tisch. In der Praxis erfährt man er­heb­li­che Einbußen, wenn die Na­mens­auf­lö­sung fehlt.

Zunächst ist das sichere HTTPS-Protokoll an Do­mä­nen­na­men gebunden. Versucht man, mit blanker IP eine Website ab­zu­fra­gen, ist keine ver­schlüs­sel­te Kom­mu­ni­ka­ti­on möglich. Ferner er­mög­licht erst die Zuordnung des Do­mä­nen­na­mens, mehrere Websites auf einem Server zu hosten und gezielt an­zu­spre­chen.

Auch moderne Ansätze zur geo­gra­fi­schen Ver­tei­lung von Server-Res­sour­cen setzen zwingend Zugriff auf einen DNS-Resolver voraus. Hierbei steht ein einzelner Do­mä­nen­na­men mit mehreren IP-Adressen in Ver­bin­dung. Gut nach­voll­zie­hen lässt sich dies am Beispiel der Google-Homepage. Wäre diese nur unter einer einzigen IP-Adresse er­reich­bar, würde der weltweite Traffic dort auflaufen und das System bald über­las­ten.

Wie funk­tio­niert ein DNS-Resolver?

Das Domain Name System (DNS) besteht aus weltweit ver­teil­ten, mit­ein­an­der in­ter­agie­ren­den Kom­po­nen­ten. Es gibt vier haupt­säch­li­che Klassen von Kom­po­nen­ten; drei davon sind Name­ser­ver, welche DNS-Records enthalten. Die ver­blei­ben­de Klasse umfasst die DNS-Resolver, welche das Ge­gen­stück zu den Name­ser­vern bilden.

DNS-Kom­po­nen­te Englische Ent­spre­chung Erklärung
Stamm-Name­ser­ver Root name server Enthält Adressen der TLD-Name­ser­ver.
TLD-Name­ser­ver TLD name server Enthält Adressen der au­to­ri­ta­ti­ven Name­ser­ver für eine TLD.
Au­to­ri­ta­ti­ve Name­ser­ver Aut­ho­ri­ta­ti­ve name server Hält In­for­ma­tio­nen für eine DNS-Zone vor.
Rekursive Resolver Recursive resolver Ermitteln IP-Adressen zu Hostnamen; stellen dafür Anfragen an Name­ser­ver.
Tipp

Sie möchten noch tiefer in das Thema DNS ein­stie­gen? Im Artikel "Was ist ein Root-Server?" erfahren Sie mehr zu den Grund­la­gen des Domain Name Systems.

Wie Sie bereits wissen, nimmt ein DNS-Resolver einen Do­mä­nen­na­men als Anfrage entgegen und hat die Aufgabe, eine da­zu­ge­hö­ri­ge IP-Adresse zu ermitteln. Wie genau funk­tio­niert nun der Prozess? Tat­säch­lich gibt es mehrere Vor­ge­hens­wei­sen.

Wurde die Anfrage vorher bereits gestellt, z.B. beim wie­der­hol­ten Zugriff auf google.com, wird die Antwort aus dem lokalen Cache geladen. Ist dies nicht der Fall, stellt der Resolver Anfragen bei Name­ser­vern und setzt aus den er­mit­tel­ten In­for­ma­tio­nen eine Antwort zusammen. Der zur Na­mens­auf­lö­sung zum Einsatz kommende Al­go­rith­mus wurde in RFC 1034 definiert:

  • Nach­schau­en, ob die ge­wünsch­te Antwort im lokalen Cache enthalten ist. Wenn ja, die Antwort an den Klienten aus­lie­fern.
  • Die besten Name­ser­ver zum Anfragen ermitteln.
  • Den Name­ser­vern Anfragen schicken, bis einer eine Antwort liefert.
  • Die Antwort auswerten; im Anschluss:
    • Falls die Antwort die Anfrage löst, oder einen Name-Error enthält, die Antwort jeweils in den Cache aufnehmen und an den Klienten aus­lie­fern.
    • Falls die Antwort eine Referenz zu anderen Name­ser­vern enthält, die Antwort in den Cache aufnehmen und bei Schritt (2) wei­ter­ma­chen.
      • Wenn es sich bei der Antwort um einen CNAME-Record handelt, den CNAME in den Cache aufnehmen und mit dem ka­no­ni­schen Namen bei Schritt (1) wei­ter­ma­chen.
    • Wenn die Antwort einen Server-Error enthält, oder feh­ler­haft erscheint, den Server von der Server-Liste entfernen und bei Schritt (3) wei­ter­ma­chen.

Was tun bei Problemen mit dem DNS-Resolver?

Wie wir gesehen haben, sind DNS-Resolver und die damit ver­bun­de­ne Na­mens­auf­lö­sung wichtig für die tägliche Nutzung von Internet-Res­sour­cen. Dabei ist das DNS als Feh­ler­quel­le be­rüch­tigt.

Die Feh­ler­an­fäl­lig­keit liegt in der Natur des Systems. Das DNS ist ein global ver­teil­tes, hier­ar­chisch or­ga­ni­sier­tes System innerhalb dessen Än­de­run­gen nach und nach pro­pa­gie­ren. Das kann bis zu 48 Stunden dauern, so dass es leicht zu Dis­kre­pan­zen kommt. Ferner kommen auf allen Ebenen Caches zum Einsatz, welche zwar kritisch für die Per­for­manz sind, jedoch wiederum als Feh­ler­quel­le in Er­schei­nung treten.

Tipp

Fehler in den lokal ge­spei­cher­ten DNS-In­for­ma­tio­nen können eine Band­brei­te an Problemen her­vor­ru­fen. In vielen Si­tua­tio­nen hilft es, den DNS-Cache zu löschen.

Anders als der ei­gent­li­che Da­ten­aus­tausch im Internet, welcher haupt­säch­lich über das TCP/IP Protokoll läuft, kommt für die DNS-Kom­mu­ni­ka­ti­on UDP zum Einsatz. Das User Datagram Protocol (UDP) ist simpler und weniger res­sour­cen­in­ten­siv. Genau diese Ei­gen­schaf­ten machen öf­fent­li­che DNS-Resolver leider auch zu at­trak­ti­ven Zielen für Cy­ber­kri­mi­nel­le.

Mit der UDP-Flood getauften An­griffs­va­ri­an­te werden öf­fent­li­che DNS-Resolver als Ver­stär­ker für DDoS-Attacken miss­braucht. Ferner gibt Cache Poisoning-Angriffe, die darauf abzielen, DNS-Resolvern ge­fälsch­te DNS-In­for­ma­tio­nen un­ter­zu­schum­meln. Auf Server-Ebene wird Source Port Ran­do­miza­ti­on als Schutz­maß­nah­me ein­ge­setzt.

Wie überprüft man, ob die Na­mens­auf­lö­sung funk­tio­niert?

Treten am lokalen System seltsame Fehler auf, die auf DNS als Ursache deuten könnten, ist es ratsam, zunächst das Funk­tio­nie­ren der Na­mens­auf­lö­sung zu über­prü­fen. Das geht einfach von der Hand und liefert schnell eine Aussage über mögliche Probleme.

Auf so gut wie allen Systemen ist das nslookup-Tool als Kom­man­do­zei­len­pro­gramm vorhanden. Im ein­fachs­ten Fall führen wir das Tool aus und übergeben als Argument den ge­wünsch­ten Hostnamen. Funk­tio­niert die Na­mens­auf­lö­sung, erhalten wir als Antwort eine kor­re­spon­die­ren­de IP-Adresse. Ferner gibt das Tool den kon­fi­gu­rier­ten DNS-Resolver aus:

nslookup example.com
bash

Prak­ti­scher­wei­se lässt sich nslookup auch für Reverse DNS-Lookup verwenden. In diesem Fall übergeben wir als Argument eine IP-Adresse und bekommen einen oder mehrere Namen geliefert:

nslookup 9.9.9.9
bash

Al­ter­na­tiv zu nslookup lässt sich ein Ping gegen den Do­mä­nen­na­men ausführen. Der Ping-Befehl ist auf den meisten Systemen vor­in­stal­liert und löst beim Aufruf die Na­mens­auf­lö­sung aus. Wir übergeben den Hostname als Argument:

ping example.com
bash

Liefern nslookup oder Ping keine IP-Adresse, muss man davon ausgehen, dass die Na­mens­auf­lö­sung nicht funk­tio­niert. In diesem Falle lohnt der Versuch, den DNS-Resolver zu ändern, bzw. über­gangs­wei­se einen Eintrag in der Hosts-Datei anzulegen. Dazu unten mehr.

Wird eine IP-Adresse angezeigt, funk­tio­niert die Na­mens­auf­lö­sung zumindest prin­zi­pi­ell. Es kann sich dennoch um eine falsche In­for­ma­ti­on handeln. Um das ge­lie­fer­te Ergebnis zu bewerten, lohnt ein Abgleich mit global hin­ter­leg­ten DNS-Einträgen. Wir nutzen den DNS Pro­pa­ga­ti­on Checker von whats­mydns.net, um uns die A-Records für den Hostnamen an­zu­zei­gen.

Wie ändert man den DNS-Resolver?

Wie eingangs dargelegt, ist der Begriff DNS-Resolver mehrfach belegt. Wenn wir davon sprechen, den DNS-Resolver zu ändern, meinen wir damit die Adresse des im System kon­fi­gu­rier­ten Servers, welcher die Na­mens­auf­lö­sung für uns ausführt. Den meisten Nutzern dürfte nicht bewusst sein, dass dafür ein externer Server zum Einsatz kommt.

Im Grund­zu­stand kommt auf den meisten Systemen, gleich ob PC, Laptop, oder Smart­phone der DNS-Resolver des je­wei­li­gen In­ter­net­an­bie­ters zum Einsatz. Bei Heim­netz­wer­ken ist die IP-Adresse des DNS-Resolvers für ge­wöhn­lich im Router hin­ter­legt. Dabei können sich aus der Nutzung des vor­ein­ge­stell­ten DNS-Resolvers er­heb­li­che Nachteile ergeben.

Neben dem als DNS-Leak bekannten Abgreifen von per­sön­lich zu­ord­ba­ren DNS-In­for­ma­tio­nen existiert mit DNS-Spoofing ein weiteres Problem. Dabei liefert der In­ter­net­an­bie­ter ma­ni­pu­lier­te DNS-Daten an die Nutzer aus. So werden bei­spiels­wei­se Kon­kur­ren­ten blockiert, oder In­ter­net­ver­kehr auf Seiten mit Werbung um­ge­lei­tet. Es ist daher generell eine gute Idee, den DNS-Resolver selbst ein­zu­stel­len.

Zum Ändern des DNS-Resolvers geht man je nach Be­triebs­sys­tem un­ter­schied­lich vor. Generell kon­fi­gu­riert man die Netz­werk­ver­bin­dung und trägt die In­ter­net­adres­se eines bekannten DNS-Resolvers ein. Analog zum Secondary DNS wird neben dem primären DNS-Resolver ein se­kun­dä­rer Server ein­ge­tra­gen. Dies sorgt für Redundanz und schützt vor Fehlern, wenn der DNS-Server nicht antwortet.

Um den DNS-Resolver zu ändern, muss man die exakte IP-Adressen eines oder mehrerer Server kennen, auf denen ein DNS-Resolver läuft. Da ohne DNS-Resolver die Na­mens­auf­lö­sung nicht gegeben ist, lassen sich lo­gi­scher­wei­se keine men­schen­freund­li­chen Namen verwenden.

Freie DNS-Resolver bieten eine Reihe von Vorteilen. Neben höherer Ge­schwin­dig­keit und Schutz der Pri­vat­sphä­re bieten sie zum Teil Fil­ter­funk­tio­nen. Bekannt Beispiele sind Cloud­fla­re mit der gleich­lau­ten­den IP-Adresse 1.1.1.1 und Quad9 mit 9.9.9.9.

Wie lässt sich der DNS-Resolver umgehen?

Wie wir gesehen haben, sind DNS-Resolver es­sen­zi­ell für die Arbeit mit dem Internet. Jedoch gibt es manche Si­tua­tio­nen, in denen es Sinn macht, die Na­mens­auf­lö­sung per DNS-Resolver zu umgehen. Der tech­ni­sche Trick liegt darin, Einträge in der Hosts-Datei vor­zu­neh­men.

Die Hosts-Datei ist ein Relikt aus den Urzeiten des Internets. Damals gab es noch kein DNS, dafür war die Anzahl der an­ge­schlos­se­nen Rechner über­schau­bar. Um Hostnamen in IP-Adressen auf­zu­lö­sen, wurden die ent­spre­chen­den Kom­bi­na­tio­nen direkt in die Hosts-Datei ein­ge­tra­gen. Dabei steht eine einzelne IP-Adresse links, rechts davon ein oder mehrere Hostnamen. Auch der Hostname localhost für das „Loopback Interface“ ist häufig so kon­fi­gu­riert:

# IPv4
127.0.0.1       localhost
# IPv6
::1             localhost
bash

Zur Na­mens­auf­lö­sung wertet der lokale Stub DNS-Resolver die Einträge der Hosts-Datei aus. Wird ein Treffer für den ab­ge­frag­ten Hostnamen gefunden, liefert der Stub-Resolver die da­zu­ge­hö­ri­ge IP-Adresse zurück. In diesem Fall verbleibt die Anfrage komplett auf der lokalen Maschine. An­dern­falls erfolgt der normale Prozess der Na­mens­auf­lö­sung über den kon­fi­gu­rier­ten externen DNS-Resolver.

Die Hosts-Datei erlaubt ein Arbeiten ohne DNS-Resolver. Jedoch erfordert dies, einen Eintrag für jeden auf­zu­lö­sen­den Hostnamen zu erstellen. Zum täglichen Arbeiten ist das wenig prak­ti­ka­bel, für spezielle An­wen­dun­gen hingegen gut geeignet. Da die Hosts-Datei zuerst aus­ge­wer­tet wird, lässt sie sich als Work­around für ver­schie­de­ne Pro­blem­stel­lun­gen nutzen.

Ein Nutzen der Host-Datei besteht darin, einen Hostnamen mit einer festen IP-Adresse zu belegen. Dieser Trick wird gerne ein­ge­setzt, um Apps, die „nach Hause te­le­fo­nie­ren“ stumm­zu­schal­ten. Denn manche An­wen­dun­gen melden sich pe­ri­odisch bei einem per Hostname kon­fi­gu­rier­ten Server und über­mit­teln un­ge­bremst Daten. Möchte man dies un­ter­bin­den, genügt ein Eintrag in der Hosts-Datei.

Ver­an­schau­li­chen wir uns das Prinzip an einem Beispiel. Wir möchten ver­hin­dern, dass ein lokales Programm auf spy.example.com zugreift. Dazu tragen wir den Do­mä­nen­na­men in die Hosts-Datei ein und verweisen auf die Loopback-IP 127.0.0.1. So gehen die Anfragen an das lokale System und erreichen nie den Server. Aus Sicht der App bleiben die Anfragen hängen, als wäre bei­spiels­wei­se die In­ter­net­ver­bin­dung gekappt:

127.0.0.1   spy.example.com
bash

Das Prinzip lässt sich auch umdrehen. In vielen Ländern kommen heut­zu­ta­ge Web­sper­ren auf DNS-Ebene zum Einsatz. Internet-Provider werden per Ge­richts­be­schluss gezwungen, für bestimmte Do­mä­nen­na­men keine oder ver­fälsch­te IP-Adressen aus­zu­lie­fern. Genau genommen handelt es sich um staatlich sank­tio­nier­tes DNS-Spoofing. Aus Nut­zer­sicht lassen sich die ge­wünsch­ten Domänen nicht aufrufen.

Der clevere Einsatz der Hosts-Datei auf dem eigenen System erlaubt, DNS-basierte Web­sper­ren zu umgehen. Man benötigt lediglich die tat­säch­li­che IP-Adresse der ge­sperr­ten Website. Diese trägt man zusammen mit dem Do­mä­nen­na­men in die Hosts-Datei ein. Nehmen wir bei­spiels­hal­ber an, die Domäne blocked.example.com sei per DNS-Websperre vom Provider blockiert. Tragen wir die IP-Adresse der Site in die Hosts-Datei ein, ist der Zugriff wieder möglich:

93.184.216.34 blocked.example.com
bash

Zu guter Letzt ein Ansatz aus der Web­ent­wick­lung, die Na­mens­auf­lö­sung auf dem lokalen Gerät per Hosts-Datei zu kon­fi­gu­rie­ren. Nehmen wir an, eine exis­tie­ren­de Website unter der Domäne www.example.com soll migriert werden. Um die Migration vor­zu­be­rei­ten, über­tra­gen wir die Site zunächst auf den neuen Server. Nun gilt, die In­stal­la­ti­on zu testen, doch es gibt ein Problem: unter dem Do­mä­nen­na­men wird weiterhin die exis­tie­ren­de Site auf dem alten Server 93.184.216.34 auf­ge­ru­fen; die auf den neuen Server migrierte Site lässt sich so nicht testen.

Also tragen wir einfach die IP-Adresse des neuen Servers zusammen mit dem Do­mä­nen­na­men in die Hosts-Datei ein. So gehen unsere lokalen Anfragen an den neuen Server und wir können nach pro­blem­los testen. Gleich­zei­tig bekommen alle weiteren Besucher weiterhin die IP-Adresse des alten Servers aus­ge­lie­fert. So bleibt die Site für Besucher voll­um­fäng­lich er­reich­bar.

198.51.100.0 localhost www.example.com
bash

Ein ähnliches Vorgehen kommt zum Einsatz, um eine Staging Site lokal zu ent­wi­ckeln. Stellen wir uns vor, die Site unter www.example.com soll neu aufgebaut werden. Wir richten eine Staging Site in einer lokalen Ent­wick­lungs­um­ge­bung ein, welche unter der Loopback-Adresse 127.0.0.1 er­reich­bar ist. In der Hosts-Datei fügen wir einen Eintrag für den Hostnamen dev.example.com hinzu:

127.0.0.1 localhost dev.example.com
bash
Zum Hauptmenü