Så går en DNS-uppslagning till

I elva steg kan du läsa om hur en DNS-uppslagning går till – om du vill veta vilken IP-adress ett speciellt domännamn har.

I föregående kapitel har vi förklarat att de auktoritativa namnservrarna gör DNS-information om olika domännamn tillgänglig på internet. Vidare kunde du läsa att denna information finns uppdelad i DNS-poster i så kallade zonfiler som den som har ansvaret för respektive zon måste hålla uppdaterade.

Men hur går det till när någon vill ta reda på vilken IP-adress som motsvarar ett visst domännamn, exempelvis för att surfa in på en webbplats eller skicka ett e-postmeddelande? Då får denna någon, eller snarare hans/hennes dator, göra en DNS-uppslagning. Det kallas så eftersom DNS ju är ett slags katalog över domännamn och IP-adresser.

Programvaran som används för DNS-uppslagningar kallas för en resolver, eftersom den hittar lösningen på frågan vilken IP-adress ett domännamn motsvarar (Engelskans to resolve = att lösa). Ibland kallas det också för frågande namnserver. Resolver-programmen ingår ofta i samma DNS-programvaror som de auktoritativa namnservrarna, det vill säga BIND, Microsoft DNS och så vidare.

Varje gång ett domännamn ska översättas till en IP-adress måste datorn ta hjälp av en resolver. Man skiljer på så kallade rekursiva resolvrar och stubb-resolvrar. När en rekursiv resolver genomför en DNS-uppslagning ställer den frågan om det aktuella domännamnet om och om igen tills den får svar.

En rekursiv resolver kan finnas installerad på den lokala klienten (det vill säga den internetuppkopplade datorn som begär DNS-uppslagningen), men det är betydligt vanligare att ha en stubb-resolver installerad på sin dator. En stubb-resolver ställer frågan om domännamnet en enda gång till en rekursiv resolver som finns hos resolver som ställer frågan ut på internet. På så vis behöver datorn inte befatta sig vidare med DNS-uppslagningen utan kan bara invänta svaret från den rekursiva resolvern.

Så hittar din dator rätt IP-adress

Vad händer då vid en DNS-uppslagning? Vi kan exemplifiera med vad som måste hända för att rätt webbplats ska dyka upp i ditt webbläsarfönster när du skriver in en viss webbadress.

Figur 5. Alla steg i en DNS-uppslagning (när ingen information finns lagrad).
Figur 5. Alla steg i en DNS-uppslagning (när ingen information finns lagrad).
  1. Du skriver in webbaddressen www.example.se i din webbläsare.
    Som vi tidigare förklarat måste domännamnet översättas till en IP-adress. Det är först då din dator kan hitta rätt webbserver på internet, ansluta till den och ladda hem innehållet på webbplatsen www.example.se. Det är detta DNS-uppslagningen handlar om.
  2. Stubb-resolvern i din dator frågar en rekursiv resolver om IP-adressen.
    Den rekursiva resolver som stubb-resolvern är konfigurerad att vända sig till finns troligen hos din internetleverantör. Det är den som får ställa DNS-frågan om vilken IP-adress som motsvarar www.example.se till de berörda auktoritativa namnservrarna på internet. Din dator behöver inte befatta sig med resten av proceduren utan kan helt enkelt invänta svaret från den rekursiva resolvern.
  3. Den rekursiva resolvern skickar frågan vidare till en av internets rotnamnservrar.
    I detta exempel finns ingenting om domännamnet lagrat på den rekursiva resolvern (mer om detta följer i avsnittet Cachning). Därför måste den börja sin undersökning från toppen av DNS-trädet. Resolvern ställer frågan om www.example.se till en av internets rotnamnservrar.
  4. Rotnamnservern hänvisar till de auktoritativa namnservrarna för .se-zonen.
    Av rotnamnserverns zonfil framgår att alla .se-domäner har delegerats till .se-zonen. Alltså kan rotnamnservern inte svara på frågan vilken IP-adress som motsvarar www.example.se. Däremot har rotnamnservern ständigt uppdaterad information om vilka namnservrar som är auktoritativa för .se-zonen och svarar därför med en hänvisning till dem.
  5. Resolvern ställer om frågan till en av .se-zonens auktoritativa namnservrar.
    Svaret från rotnamnservern innebär att den rekursiva resolvern kan begränsa sin vidare sökning efter rätt IP-adress till .se-zonen. DNS-frågan ställs nu till en av de auktoritativa namnservrarna som rotnamnservern hänvisade till.
  6. Namnservern för .se-zonen hänvisar till de auktoritativa namnservrarna för example.se
    Av .se-namnserverns zonfil framgår att example.se har delegerats till en underordnad zon. Alltså kan .se-namnservern inte heller svara på frågan vilken IP-adress som motsvarar www.example.se. Däremot finns i zonfilen alltid uppdaterad information om vilka auktoritativa namnservrar som har pekats ut för domännamnet example.se. Därför svarar .se-namnservern med en hänvisning till dem.
  7. Resolvern ställer om frågan till en av de utpekade auktoritativa namnservrarna.
    Svaret från .se-namnservern innebär att den rekursiva resolvern nu kan vända sig till en av de namnservrar som har pekats ut som auktoritativ för domännamnet example.se. I vissa fall är det domäninnehavaren själv som gör dessa namnservrar tillgängliga på internet, fast ofta drivs de av ett webbhotell eller en internetleverantör.
  8. Den auktoritativa namnservern för example.se svarar med IP-adressen.
    Zonfilen på den auktoritativa namnservern för example.se har uppdaterad information om vilken IP-adress som motsvarar www.example.se. Ibland är domännamnet ett alias vilket gör att det kan finnas flera domännamn knutna till samma IP-adress. Endast ett av domännamnen är då det ”äkta” domännamnet för IP-adressen. Hur som helst behövs nu inga fler hänvisningar, utan namnservern kan svara på frågan med den aktuella IP-adressen.
  9. Den rekursiva resolvern vidarebefordrar IP-adressen till stubb-resolvern på din dator.
    Nu är den rekursiva resolverns arbete över för denna gång.
  10. Stubb-resolvern vidarebefordrar IP-adressen till din webbläsare.
  11. Webbläsaren ansluter till datorn som finns på IP-adressen.
    När webbläsaren fått reda på IP-adressen som motsvarar www.example.se kan den ansluta till webbservern som finns ansluten till internet på denna adress. Sedan laddas webbsidan i fråga ned till din dator så att du kan titta på den i webbläsaren.

Så ser en DNS-uppslagning ut

Med verktyget dig, som ingår i programvaran BIND, kan man låtsas vara resolver i dialogen som förs mellan den rekursiva resolvern och de auktoritativa namnservrarna vid en DNS-uppslagning.

Dialogen ser ut så här (efter att det mesta av informationen har klippts bort för överskådlighetens skull):

1.FRÅGAdig @h.root-servers.net www.pts.se
2.SVARse. 172800 IN NS d.ns.se.
3. d.ns.se. 172800 IN A 81.228.8.16
4.FRÅGAdig @81.228.8.16 www.pts.se
5.SVARpts.se.86400 IN NS b.dns.songnetworks.se.
6. b.dns.songnetworks.se.86400 IN A 213.50.29.195
7.FRÅGAdig @213.50.29.195 www.pts.se
8.SVARwww.pts.se.7200 IN A 192.121.211.200
9.FRAMME!

Hela DNS-uppslagningen går oftast på bråkdelen av en sekund. Den snabbas dessutom på av att den rekursiva resolvern kan korttidslagra information och varifrån den kom. Det är detta som kallas cachning.

Cachning (mellanlagring)

För att hindra DNS-uppslagningarna från att ta för lång tid och orsaka onödigt mycket nätverkstrafik, så kan en rekursiv resolver tillfälligt lagra svar som den får från namnservrar i sitt så kallade cacheminne. När en fråga kommer in till resolvern så kontrollerar den först om det finns några uppgifter i cacheminnet som kan hjälpa till att svara på den.

Om vi använder samma exempel som tidigare, www.example.se, så kanske resolvern nyligen har svarat på en fråga om ett annat domännamn som slutar på .se. I så fall finns svaret som resolvern den gången fick från rotnamnservern fortfarande lagrat i cacheminnet. Av det sparade svaret framgår vilka namnservrar som är auktoritativa för .se-zonen och resolvern kan därför hoppa över steget att fråga rotnamnservern. I stället ställs frågan om www.example.se direkt till en av .se-namnservrarna (se exempel A i Figur 6 här nedan).

Figur 6. DNS-uppslagningar där information finns lagrad i resolverns cacheminne.
Figur 6. DNS-uppslagningar där information finns lagrad i resolverns cacheminne.

Det kan också vara så att resolvern nyligen har svarat på en fråga om ett annat domänamn som slutar på example.se. Exempelvis kanske en annan användare har laddat upp filer till ftp.example.se med hjälp av samma resolver. Då finns svaret som resolvern fick från .se-zonens namnserver lagrat i cacheminnet och resolvern kan hoppa över även detta steg och gå direkt till en av de auktoritativa namnservrarna för example.se (se exempel B i Figur 6 ovan).

Slutligen kanske resolvern har svarat på en fråga om just www.example.se. I så fall finns svaret som den fick från den auktoritativa namnservern för detta domännamn lagrat i cacheminnet och resolvern kan svara din dator direkt med vilken IP-adress som motsvarar www.example.se (se exempel C i Figur 6 här bredvid).

Hur länge svaren lagras av den rekursiva resolvern bestäms av ett värde som anges av den som är ansvarig för zonen, en så kallad TTL (time to live). När denna tidsperiod är slut sparas uppgiften inte längre och då måste den rekursiva resolvern kontakta någon av zonens auktoritativa namnservrar nästa gång en uppslagning görs.

Det finns argument både för och emot en lång TTL. Eftersom trafiklasten minskar och uppslagningarna blir snabbare genom mellanlagring kan man tycka att det vore bra att använda en så lång TTL som möjligt. Men samtidigt tar det då längre tid för förändringar i zonfilen att slå igenom. Det kan leda till problem att till exempel nå fram till webbsidor när domännamn tillkommer eller pekas om till nya namnservrar. TTL för domäner under .se är som standard 24 timmar, vilket kan ses som en lagom kompromiss för en toppdomän.

E-postservrars DNS-uppslagningar

Från din dator skickas e-postmeddelanden via en e-postserver för utgående post, oftast med ett protokoll som heter SMTP (Simple Mail Transfer Protocol). Alla e-postadresser, till exempel jag@example.se, slutar med ett domännamn. När du skickar iväg ett mejl till denna adress från din dator så kommer det först till den SMTP-server som du har ställt in i ditt e-postprogram. Vanligtvis tillhandahålls denna av din internetoperatör eller ditt webbhotell.

Figur 7. E-postöverföring med DNS-uppslagningar.
Figur 7. E-postöverföring med DNS-uppslagningar.

För att SMTP-servern ska veta vart mejlet sedan ska, så måste den först få fram IP-adressen till den mottagande e-postservern för domännamnet example.se. Därför gör den en DNS-uppslagning på domännamnet example.se på samma sätt som den rekursiva resolvern i exemplet här bredvid.

Vad den tar fasta på i svaret från den auktoritativa namnservern för example.se är vilken e-postserver som pekas ut för domänen i DNS-posten MX (Mail Exchanger), i det här fallet säger vi att servern heter mail.example.se.

SMTP-servern slår då upp domännamnet mail.example.se i DNS och namnservern för example.se svarar på frågan med den IP-adress som motsvarar detta domännamn. Nu kan den avsändande e-postservern ansluta till den mottagande över internet och mejlet överföras. När användaren som har e-postadressen jag@example.se sedan laddar hem sina nya meddelanden från den mottagande e-postservern, oftast med hjälp av något av protokollen POP (Post Office Protocol) eller IMAP (internet Message Access Protocol), så kommer ditt mejl fram.

E-post behöver inte fungera på exakt detta vis, i synnerhet inte i respektive ände, eftersom man till exempel kan använda webbmejl och då loggar in direkt till sin e-postserver. Men så länge e-postmeddelanden skickas över internet och inte internt inom ett företagsnätverk måste DNS-uppslagningar alltid genomföras för att meddelandena ska hamna rätt.

Omvänd DNS-uppslagning

Det som beskrivits ovan är den vanligaste sortens DNS-uppslagning, när man har ett domännamn och vill få fram en IP-adress för att kommunicera med en dator över internet. Men det finns också tillfällen då det är användbart att ta reda på vilket domännamn som motsvarar en viss IP-adress. Därför går det även att göra omvända uppslagningar i DNS.

Många moderna e-postsystem gör DNS-uppslagningar både på domännamn och på IP-nummer för att se att de stämmer överens och på så vis upptäcka när till exempel spammare använder falska avsändaradresser när de skickar sin skräppost.

Praktiskt är det möjligt att göra en omvänd DNS-uppslagning genom att en del av domännamnrymden på internet avspeglar alla använda publika IP-adresser i en trädstruktur, på samma sätt som resten av domännamnrymden kartlägger domännamn. När det gäller IPv4-adresser heter domänen för detta in-addr.arpa. Den utgår från det gängse sättet att skriva IPv4-adresser, som fyra siffergrupper av nummer mellan 0–255 med punkter mellan sig, exempelvis 192.0.2.170.

Eftersom numren i IP-adresser blir mer specifika ju längre åt höger de står i adressen är det denna ordning som bestämmer hierarkin i in-addr.arpa-domänen. I vårt exempel hamnar därför 192 som den högst placerade underdomänen i in-addr.arpa-domänen, 0 på nästa nivå, följt av 2 och 170.

DNS-uppslagning kan enkelt göras med hjälp av verktyg som finns tillgängliga på olika webbplatser (till exempel www.lookupserver.com). För att ta reda på vilket domännamn som motsvarar IP-adressen 192.0.2.170 så gör dessa verktyg helt enkelt en DNSuppslagning på domännamnet 170.2.0.192.in-addr.arpa. På grund av sättet trädstrukturen är uppbyggd på bakvänds alltså IP-adressen. Genom DNS-posten PTR (Pointer) för domännamnet 170.2.0.192.in-addr.arpa får man sedan fram vilket domännamn som motsvarar IP-adressen i fråga.

Figur 8. IP-adressen 192.0.2.170 i in-addr.arpa-domänen.
Figur 8. IP-adressen 192.0.2.170 i in-addr.arpa-domänen.

För IPv6-adresser finns en motsvarande domän som heter ip6.arpa. Proceduren där är densamma som för IPv4, fast adresserna är längre – och därmed blir nivåerna i DNS-trädet fler.

Det finns också programvaror med öppen källkod som kan användas såväl för att göra omvända DNS-uppslagningar som för att få fram alla möjliga andra DNS-uppgifter om internetanslutna datorer. Ett sådant program heter nslookup och ett nyare är verktyget dig som ingår i programvaran BIND.