Chalmers Datanätgrupp

En introduktion till DNS

DNS står för Domain Name System och är en distribuerad databas. Den översätter IP-nummer till datornamn och tvärtom. Den har även hand om annan information för domänerna, exempelvis dess namnservrar och mailservrar. För att kunna förklara hur DNS fungerar, kommer jag att beskriva vad som händer om du skall skicka mail till oss, med mailadressen cdg@cdg.chalmers.se, från att du markerar att mailet skall skickas till oss till att datorn vet IP-numret på den datorn som skall ta emot mailet.

Ditt mailprogram börjar med att ta reda på vilken dator som kan tala om vad mottagande mailserver heter. Till sin hjälp har den domännamnet som finns i mailadressen vilket i vårt fall är cdg.chalmers.se.

DNS databas är hierarkisk och för att leta sig fram i databasen utgår man från toppen och letar sig ner, tills att man nått rätt maskin. I toppen har man ett antal root-servrar som håller reda på vad namnservrarna (NS) finns för de olika toppdomänerna, ex v ".se", ".com" och ".edu". Mailprogrammet kontaktar en av dem för att få reda på vilken dator som hanterar ".se". Denna maskin hanterar antingen domänen själv eller delegerar ansvaret till en annan dator. Denna information i DNS kallas för NS-pekare eftersom den pekar ut en namnserver.

Om man vill ha reda på namnservrarna för chalmers.se kan man utföra följande kommando på kommandoraden (om programmet finns på datorn):

dig ns chalmers.se

Resultatet blir (jag har bara tagit med en del av svaret):

;; ANSWER SECTION:
chalmers.se.		1D IN NS	ns1.chalmers.se.
chalmers.se.		1D IN NS	ns2.chalmers.se.
chalmers.se.		1D IN NS	ns3.chalmers.se.
chalmers.se.		1D IN NS	dns.uu.se.

Domänen chalmers.se har fyra namnservrar, två internt, en extern inom området samt en externt på annan ort. Vi har externa NS-servervrar för att man skall kunna få reda på visst data även om Chalmers normala förbindelse till internet via SUNET inte fungerar för tillfället:

Om en mailserver är nere eller inte nåbar för omvärlden, är det bättre om mailservern får reda på destinationen än inget svar alls, för då slänger den mailet utan åtgärd. Däremot kommer den att göra upprepade försök att nå mottagande mailservern tills den lyckas eller ger upp efter ett visst tidsintervall. Hur lång tidsintervallet är beror på inställningar i mailservern.

Om man försöker utföra samma kommando som ovan, men på domänen cdg.chalmers.se istället för chalmers.se, kommer man inte få något svar. Detta beror på att Chalmers NS-servrar inte delegerar domänen cdg.chalmers.se och följdaktligen inga NS-pekare för cdg.chalmers.se.

Nu måste mailprogrammet ta reda på vilka mailservrar domänen har. För detta ändamål finns i DNS något vi kan kalla mailpekare (MX).

Vi använder oss av samma kommando som innan, men byter domännamnet till cdg.chalmers.se och från "ns" till "mx":

dig mx cdg.chalmers.se

får man följande (en del av svaret):

;; ANSWER SECTION:
cdg.chalmers.se.	1D IN MX	0 mail.cdg.chalmers.se.
cdg.chalmers.se.	1D IN MX	200 mail.ckoia.chalmers.se.

Vi får alltså reda på att cdg.chalmers.se har två mail-maskiner, den första med en kostnad på 0 och den andra med 200. Mailprogrammet kommer i första hand försöka skicka mailet till den maskin som har lägst kostnad, i vårt exempel kommer den alltså att välja "mail.cdg.chalmers.se". Värt att notera är att en domäns mail-maskin inte behöver finnas inom dess domän.

Nu vet mailprogrammet att den skall kommunicera med mail.cdg.chalmers.se men vägvisarna (routrar och switchar) som finns på nätet använder sig av IP-nummer, inte DNS-namn, så namnet måste översättas och för detta är det ännu en gång DNS som hjälper till. Denna typ av data kallas för A-record, därför petar vi in ett "a" till vårt dig-program istället för "mx":

dig a mail.cdg.chalmers.se

får man följande (ånyo bara en del av svaret):

;; ANSWER SECTION:
mail.cdg.chalmers.se.	1D IN A	129.16.12.7

Mail-maskinen har alltså 129.16.12.7 som IP-nummer. Om man testar att slå upp namnet på datorn med hjälp av IP-numret får man reda på att maskinen heter grunert.cdg.chalmers.se, för mail.cdg.chalmers.se är bara ett alias för datorn. Om vi vill flytta mailservern behöver vi bara flytta aliaset.

DNS gör saker lättare för oss, för vi slipper memorera IP-nummer. Eftersom man kan flytta alias som exv www.chalmers.se, kan man bevara samma URL även om man flyttar www-servern till en annan dator.

Skall vi ta en kort repetition? DNS är en distibuerad hierarkisk databas över domännamn och innehåller kopplingar mellan IP-adresser och NS, MX och A-records.

Lämna gärna synpunkter på innehållet till oss genom att maila CDG. Ägna gärna en sekund till att meditera över det DNS-data som skickas fram och tillbaka för att ditt mail skall kunna hitta min mailbox.


Frågor eller problem med dessa sidor? Kontakta gärna webmaster@cdg.chalmers.se.
Detta dokument ändrades senast 2013-01-30 klockan 16:58.

Chalmers tekniska högskola
Datanätgruppen