Så fungerar DNS

DNS är en hierarkisk databas vilket innebär att informationen är lagrad i en trädstruktur, som gör att det går snabbt att hitta fram till den information som man är intresserad av. I detta kapitel får du bland annat veta hur strukturen är uppbyggd, och hur den delas upp i domäner, underdomäner, zoner, etcetera.

Vi har tidigare slagit fast att DNS är en hierarkisk och distribuerad databas, men vad betyder egentligen detta?

För den som inte vet vad en databas är, så är det helt enkelt en samling information – eller data – som är organiserad så att det, med hjälp av rätt programvara, är lätt att hitta och hämta enskilda delar av informationen. I fallet med DNS är systemet uppbyggt så att det ska gå snabbt att få fram vilken IP-adress som är kopplad till ett visst domännamn med hjälp av program som kallas namnservrar. (Det finns även annan information än IP-adressen kopplad till ett domännamn, men för tydlighetens skull begränsar vi oss här till att tala om IP-adressen.)

Att DNS är en hierarkisk databas innebär att informationen är lagrad i en trädstruktur, vilket gör att det går snabbt att hitta fram till den information som man är intresserad av. Och att databasen är distribuerad betyder att informationen är utspridd på många olika datorer som är sammankopplade i ett nätverk, i det här fallet på servrar som finns spridda över hela internet. Båda dessa egenskaper gör det möjligt att fördela ansvaret för olika delar av databasen på olika händer. På så vis förblir systemet stabilt och robust i sin helhet även om problem uppstår i någon enskild del av databasen.

DNS-trädet

För att förklara hur informationen är organiserad i DNS liknar man alltså systemet vid ett träd som förgrenar sig från roten. Till skillnad från ett riktigt träd brukar roten dock sättas högst upp i DNS-trädet.

Figur 1. Trädstrukturen i DNS.
Figur 1. Trädstrukturen i DNS.

Ett domännamn är helt enkelt en märkning som pekar ut var i trädstrukturen det går att hitta informationen om vilken IP-adress som är kopplad till det. Varje nod i trädstrukturen kan anges med ett domännamn. Noden längst ut till vänster i figur 1 härintill benämns till exempel med domännamnet www.example.se, där punkterna skiljer åt namnen på de noder som passeras på vägen upp till trädets rot. Roten hamnar alltid sist i domännamnet och får inte någon egen benämning. På detta vis skapas en sökväg som leder rätt i trädet.

En domän är en delmängd av hela DNS-trädet och ett domännamn är detsamma som benämningen på noden i toppen av en domän. Domänen kan därför ingå i en annan domän. Till exempel är domänen www.example.se en del av domänen example.se, vilken i sin tur är en del av domänen .se. Man säger att www.example.se är en underdomän till example.se och denna i sin tur är en underdomän till .se-domänen (se figur 2). Det maximala antalet nivåer i DNS är 127, vilket innebär att ett domännamn skulle kunna ha 127 delar med punkter emellan sig.

Figur 2. Domäner och underdomäner.
Figur 2. Domäner och underdomäner.

Auktoritativa namnservrar

Trädstrukturen för ett system i sin helhet brukar kallas för dess domännamnrymd, "domain name space". (Som tidigare nämnts kan ju DNS även användas i nätverk som inte är uppkopplade till internet.) I fallet internet innefattar domännamnrymden alltså alla domäner på hela internet och är jättelik. Trots detta är grundidén med en trädstruktur så genialisk att det oftast går blixtsnabbt att hitta fram till rätt information.

För varje domän i domännamnrymden finns en namnserver, eller för att vara mer exakt, en auktoritativ namnserver (som ibland också kallas svarande namnserver). Och i praktiken finns det oftast flera namnservrar med identisk information.

Namnservrar, eller DNS-servrar som de också kallas, är de programvaror som används för att få fram information i DNS. Det finns ett antal olika namnserverprogram att välja mellan, men det absolut vanligaste för större installationer är BIND, ett program med öppen källkod som från början utvecklades vid universitet Berkley i Kalifornien. Andra vanliga program är Microsoft DNS, vilket ingår i Windows Server, samt Unbound och djbdns, båda med öppen källkod.

Delegering och zoner

Varje fungerande domännamn på internet måste ha (minst) en utpekad auktoritativ namnserver som kan översätta domännamnet till en IP-adress. Detta kan låta som att vissa namnservrar måste innehålla väldigt mycket information – till exempel finns det över trekvarts miljon domännamn som slutar på .se. Måste då inte den auktoritativa namnservern för .se ha koll på IP-adresserna för alla dessa domännamn?

Svaret är nej. Tack vare att DNS är hierarkiskt uppbyggt behöver den utpekade namnservern för .se inte ha informationen om alla sina underdomäner. Det ansvaret kan i stället delegeras till andra auktoritativa namnservrar. Varje namnserver har bara komplett information om en del av sin domän och denna del kallas för en zon.

Figur 3. Domäner och zoner.
Figur 3. Domäner och zoner.

Det går alltså att tala om både .se-domänen och .se-zonen. Vad zonen består av beror på vad den som ansvarar för den aktuella domänen väljer att delegera. De underdomäner som får ansvar för sina egna zoner kan sedan i sin tur välja att delegera ytterligare underdomäner.

Det är på detta vis man i praktiken delar upp ansvaret för internets olika delar på flera händer. Var och en har ansvar för DNS-informationen för sin zon. Det för med sig att domänerna längre ned i hierarkin är beroende av att de högre nivåerna fungerar, så att delegeringen verkligen sker och det går att hitta fram till den IP-adress som är knuten till ett visst domännamn. Däremot är de högre nivåerna i hierarkin inte beroende av sina underdomäner. Denna ansvarsfördelning gör infrastrukturen mindre känslig. Samtidigt blir ansvaret tyngre ju närmare man kommer roten i trädstrukturen.

Roten och toppdomänerna

Vem är det då som ansvarar för att de auktoritativa namnservrarna på de högre nivåerna i internets DNS-träd fungerar och innehåller den nödvändiga informationen (och därigenom ser till att internet fungerar)? Om vi börjar med själva roten, vilken resten av internet är helt beroende av, så finns det 13 IP-adresser på internet där man hittar rotnamnservrar. Det innebär inte att det bara finns 13 stycken servrar, bakom de enskilda adresserna döljer det sig i vissa fall utspridda kluster av servrar, så det totala antalet är närmare 200. I dag är det ICANN (The internet Corporation for Assigned Names and Numbers) som har ansvaret för innehållet i rotnamnservrarna.

Trots att det är otroligt kritiskt att de fungerar så behöver rotnamnservrarna i praktiken inte innehålla så mycket information, eftersom närapå allt ansvar för DNS-informationen har delegerats ned till nästa nivå i hierarkin. Här finns de så kallade toppdomänerna, ofta förkortade TLD (top-level domains).

Då toppdomänerna utgör nivån närmast roten i DNS-trädet och ett domännamn indikerar sökvägen till roten i omvänd ordning, så slutar alla domännamn med en toppdomän. Detta är grundläggande för att det ska gå att hitta fram till informationen om vilken IP-adress som domännamnet korresponderar till.

Man skiljer på generiska toppdomäner som .com för kommersiella syften, .org för icke-kommersiella organisationer, .net för domäner som har anknytning till nätverket internet och så vidare, och på nationella toppdomäner som .se, .fi, .dk, .no med flera. (Se appendix B för en fullständig lista över alla toppdomäner.) Det finns ett 20-tal generiska toppdomäner och knappt 300 nationella toppdomäner som i olika grad är kopplade till stater, territorier och i ett fall (.eu) till en överstatlig union. Landskoderna med två bokstäver följer standarden ISO 3166 (förutom vad gäller Storbritannien, där man valt att använda .uk i stället för .gb i syfte att inkludera Nordirland).

Vem som har ansvaret för att administrera toppdomänerna bestäms av ICANN. Som en följd av att internet växte fram gradvis och på informella vägar är det en rätt vildvuxen blandning aktörer som i dag har detta ansvar för de olika toppdomänerna. Två av de populäraste generiska toppdomänerna, .com och .net, administreras till exempel av det börsnoterade amerikanska företaget VeriSign.

Vad gäller de olika nationella toppdomänerna är det i vissa fall också privata, vinstdrivande företag som administrerar dem, ibland utan någon som helst koppling till landet i fråga (ett i Sverige välkänt fall är den lilla önationen Niues toppdomän .nu).

Hur det ser ut för respektive toppdomän hänger ofta ihop med historien kring internet i det specifika landet. Från början var det ofta små grupper i den akademiska världen som sysslade med internet. I Sverige var det exempelvis under lång tid en enda person, Björn Eriksen på ENEA och sedan KTH, som ansvarade för den nationella toppdomänen .se. Vad som sedan hände när internetutvecklingen tog fart på allvar på 1990-talet skiljde sig åt i olika länder. Läs stycket nedan om hur det ser ut i de olika nordiska länderna, så förstår du vilken mångfald som råder.

Ansvaret för den nationella toppdomänen i de nordiska länderna

  • I Danmark står den ideella föreningen DIFO (Dansk internet Forum) bakom det bolag som administrerar .dk-domänen, DK Hostmaster. Bland föreningens medlemmar finns till exempel olika branschorganisationer inom IT och annat näringsliv, Danmarks advokatsamfund och den unix-användarförening som var involverad i den danska delen av internet under dess tidiga år.
  • I Sverige är det IIS(Internetstiftelsen i Sverige)n mer än ett årtionde har ansvarat för .se-domänen, sedan några år tillbaka reglerat av en särskild lag och med Post-och telestyrelsen (PTS) som tillsynsansvarig myndighet. IIS är en oberoende allmännyttig organisation som verkar för en positiv utveckling av internet i Sverige, bland annat genom att överskottet från registreringen av domännamn finansierar olika initiativ för att främja internetutvecklingen i landet.
  • I Norge är det vare sig en ideell förening eller en stiftelse som står bakom den nationella toppdomänen, utan den norska staten. Norid, som har till uppgift att administrera .no-domänen, är ett dotterbolag till det statsägda företaget Uninett, vilket i sin tur levererar nätverk och nätverkstjänster till de norska universiteten och högskolorna.
  • I Finland är toppdomänen i än högre grad en del av staten. Där är det Kommunikationsverket, det vill säga motsvarigheten till PTS i Sverige, som administrerar .fi-domänen. Ålands toppdomän .ax administreras av Ålands landskapsregering.
  • Island, slutligen, ägs företaget ISNIC som administrerar .is-domänen numera av privata investerare, efter det att Islands universitet och isländska staten sålt sin aktiemajoritet i bolaget år 2001.

Registrering av domännamn

Den som vill starta en domän på internet måste vända sig till någon av dem som administrerar en toppdomän för att registrera sitt domännamn, annars går det inte att hitta fram till domänen via DNS. I och med den mångfald som råder kan regler och priser för detta skilja sig mycket mellan olika toppdomäner.

För vissa nationella toppdomäner måste man höra hemma i landet för att registrera ett domännamn, för andra godtas bara företag eller andra juridiska personer. En del nationella toppdomäner använder egna generiska underdomäner för olika kategorier av kunder, till exempel går det inte att registrera domännamn direkt under den brittiska .uk-domänen, utan kommersiella företag är hänvisade till .co.uk, privatpersoner till .me.uk och så vidare.

Reglerna för registrering kan förstås också ändras över tiden, som till exempel när privatpersoner år 2003 fick börja registrera domännamn direkt under .se.

IDNA ger stöd för fler språk

Genom ansvarsfördelningen på internet råder det alltså stor mångfald kring såväl vem som administrerar toppdomänerna och hur man kan registrera domännamn under dem.

Men vissa regler för hur domännamn får se ut är gemensamma för alla toppdomäner. DNS begränsar varje led i ett domännamn till max 63 tecken. Och vill du att ditt domännamn ska fungera bör det bara innehålla tecknen a–z, 0–9 eller bindestreck, ”-” . (Domännamnet får dock inte börja eller sluta med ett bindestreck.) Även om DNS i sig inte förbjuder att andra tecken används är det av andra orsaker mer eller mindre garanterat att domännamnet inte fungerar om man gör det.

Det är därför nordbor och andra från början fick vänja sig av med att använda våra bokstävers prickar, ringar, streck, krokar och andra fnuttar när det gällde webb- och e-postadresser. internet startade ju i USA och engelska råkar vara ett språk som saknar sådana inslag (förutom vad gäller enstaka lånord). När internet spreds över världen upplevdes det hela dock som ett problem på många håll utanför den anglosaxiska språksfären. Och i länder där man använder helt andra skriftsystem än det latinska alfabetet var det här förstås en ännu större fråga.

I stället för att designa om hela den befintliga DNS-infrastrukturen har man valt att utveckla ett system som kallas IDNA (Internationalized Domain Names in Applications) för att jobba runt problemet. IDNA översätter tecken som används i andra språk än engelska till koder som fungerar i DNS. Systemet har i dag anammats av de flesta webbläsare, så skriver du till exempel in www.båtfärdsgröt.se i adressfältet i din Firefox så letar webbläsaren automatiskt efter www.xn--btfrdsgrt-x2ai6s.se i DNS. Det blir resultatet när å:et, ä:et och ö:et i domännamnet översätts till andra koder med hjälp av IDNA. Du slipper dock se den något svårläsliga översättningen i ditt webbläsarfönster och märker egentligen inte av översättningen.

”Men även om det går problemfritt att använda IDNför webbplatser så fungerar det fortfarande inte tillfredsställande för e-post, så vi kan ännu inte bli helt blågula i vårt internetutnyttjande.”

Många nationella toppdomäner erbjuder numera registrering av dessa så kallade internationaliserade domännamn (IDN).

Under .se-domänen kan man till exempel registrera domännamn som innehåller å, ä, ö, é och ü samt de tecken som förekommer i de officiella minoritetsspråken i Sverige: finska, jiddisch, meänkieli (tornedalsfinska), romani och samiska.

Men även om det går problemfritt att använda IDN för webbplatser så fungerar det fortfarande inte tillfredsställande för e-post, så vi kan ännu inte bli helt blågula i vårt internetutnyttjande.

Det pågår även testverksamhet för att skapa IDN-toppdomäner som skrivs med andra skriftsystem än det latinska alfabetet. På så vis skulle kineser, indier, ryssar, greker, iranier, araber och så vidare kunna skriva in hela domännamnen med sin egen skrift, inte bara underdomänerna.

Toppdomänernas delegering

De auktoritativa namnservrarna för en toppdomän ger alltså information om sin zon. Namnservrarna för .se-domänen informerar till exempel om .se-zonen. Den närmaste nivån under toppdomänerna brukar kallas huvuddomäner. De allra flesta huvuddomäner delegeras och blir någon annan auktoritativ namnservers ansvar. Därför handlar informationen på toppdomänernas namnservrar framför allt om vilka delegeringar som gäller för olika huvuddomäner. Annorlunda uttryckt pekar toppdomänens namnservrar ut vilka namnservrar som har information om respektive huvuddomän.

För att detta ska vara möjligt måste den som administrerar toppdomänen få information om vilken delegering som ska gälla för varje huvuddomän som registreras under toppdomänen.

Den som registrerar ett domännamn måste peka ut minst en auktoritativ namnserver för domännamnet. Antingen kan det vara en namnserver som innehavaren av domännamnet själv gör tillgänglig på internet eller också drivs den av någon annan, ofta en internetoperatör eller ett webbhotell.

När du registrerar ett .se-domännamn hos någon av de så kallade registrarer som IIS har auktoriserat för att sköta försäljning och administration av domännamn – i många fall just internetoperatörer eller webbhotell – så sköter de oftast utpekningen av namnservrar åt dig. Eller också får du instruktioner från dem som berättar hur du gör det själv.

Zonfiler

Den DNS-information för en zon som tillhandahålls av en auktoritativ namnserver på internet finns i en textfil som kallas zonfil. Där finns information om alla domännamn som ingår i den aktuella domänen. Hur fullständig denna information är för ett visst domännamn beror på om ansvaret för domännamnet i fråga har delegerats till en underordnad zon eller ej.

Informationen om varje domännamn bryts i zonfilen ned i ett antal så kallade DNS-poster (resource records) som gör att namnservrarna kan svara på ett antal olika frågor om varje domän. De viktigaste av de DNS-poster som kan anges för respektive domännamn hittar du i nästa stycke.

De viktigaste DNS-posterna

A: Address (IPv4)
Anger den IP-adress som motsvarar ett visst domännamn när protokollet IPv4 används. Till exempel efterfrågas den av webbläsaren när en användare har skrivit in en webbadress.

AAAA: Address (IPv6)
Anger den IP-adress som motsvarar ett visst domännamn när protokollet IPv6 används. Till exempel efterfrågas den av webbläsare när en användare har skrivit in en webbadress.

PTR: Pointer
Denna domännamnspekare anger vilket domännamn som motsvarar en viss IP-adress. Den kan användas vid så kallade omvända DNS-uppslagningar (se kapitlet Så går en DNS-uppslagning till).

MX: Mail Exchanger
Anger en e-postserver för domänen, så att det går att få reda på vart e-post till adresser som slutar på domännamnet ska skickas.

NS: Name Server
Specificerar en namnserver som är auktoritativ för en viss zon. Normalt finns som sagt flera auktoritativa namnservrar – och alltså flera NS-poster – för varje zon. I de fall en underdomän har delegerats är detta ofta allt som anges i zonfilen för den överordnade zonen. Har exempelvis example.se delegerats så finns NS-poster för example.se i .se-zonfilen, men för att få fram mer information är man sedan hänvisad till zonfilen som finns på de auktoritativa namnservrar som NS-posterna pekar ut.

CNAME: Canonical Name
Posten anger ett alias. Flera domännamn kan nämligen kopplas till samma IP-adress, men alla utom det verkliga namnet kan anges som alias med hjälp av denna post.

SOA: Start of Authority
I denna post anges ett antal uppgifter om zonen:

  • kontaktuppgifter (e-post) till den som är ansvarig för zonen
  • versionsnummer för zonfilen
  • hur ofta de sekundära namnservrarna ska kontrollera om zonen har uppdaterats (se avsnittet Zonöverföring nedan)
  • hur länge de ska vänta om de inte genast lyckas nå fram till den primära namnservern
  • hur länge information ska anses som giltig om det inte går att nå den primära namnservern
  • hur länge svar från zonen ska sparas (så kallad TTL = time to live, se vidare avsnittet Cachning i kapitlet Så går en DNS-uppslagning till)
  • domännamn för zonens primära namnserver

TXT: Text
Används bland annat för att lägga in kommentarer i klartext.

Zonöverföring

Den som är ansvarig för en zon ska se till att en uppdaterad zonfil finns tillgänglig på zonens auktoritativa namnserver. För att internet ska fungera är detta av särskilt stor vikt för toppdomänerna. Till exempel uppdaterar IIS zonfilen för .se-zonen varannan timme, dygnet runt. Processen när de auktoritativa namnservrarna uppdateras kallas zonöverföring.

Om vi fortsätter med .se-zonen som exempel så går det till så att varje gång ett .se-domännamn registreras, pekas om till en ny namnserver eller avregistreras så förs de nya uppgifterna in i IIS domännamnsregister. Detta sker oftast via någon av IIS registrarer som för in förändringarna via ett särskilt gränssnitt.

Informationen för samtliga .se-domännamn samlas i en zonfil som sedan överförs till de auktoritativa namnservrarna för .se-zonen. (I praktiken är det endast förändringarna som överförs.) På liknande sätt fungerar alla toppdomäner.

Genom zonöverföringen hålls informationen på namnservrarna hela tiden uppdaterad. För att DNS-tjänsten ska bli tillräckligt robust används oftast fler än en auktoritativ namnserver för att informera om en och samma zon. Eftersom det är viktigt att minimera felkällor finns det då en primär namnserver som är den enda som hämtar zonfilen direkt från de interna systemen hos den institution som har ansvaret för zonen. De övriga namnservrarna är sekundära och hämtar zonfilen antingen från den primära namnservern eller från en annan sekundär namnserver.

Figur 4. Zonöverföring till primära och sekundära namnservrar.
Figur 4. Zonöverföring till primära och sekundära namnservrar.