3 saker du som webbutvecklare behöver veta om DNS

Som webbutvecklare är det användbart att ha grundläggande koll på hur DNS funkar när du ska hantera dina eller andras domäner. Här får du en snabb överblick av DNS och de viktigaste delarna du behöver känna till.

🌐 Vad är DNS?

DNS står för Domain Name System och är (som namnet antyder) ett helt system för att hantera domäner. DNS är ett stort nätverk av flera olika servrar vars primära uppgift är att hålla koll på alla domäner i hela cyberuniversum.

En vanlig analogi för att beskriva DNS är telefonkatalogen – eller för den yngre generationen; kontaktlistan i telefonen. På samma sätt som att du kopplar ihop ett namn med ett telefonnummer så kopplar DNS ihop ett domännamn med en IP-adress.

DNS möjliggör det internet vi är vana vid idag. Utan DNS skulle vi behöva memorera alla IP-adresser till alla sajter vi vill besöka. Ganska tråkigt. Och ganska onödigt. Mena hur många av oss kan egentligen alla våra kontakters telefonnummer utantill? - Jag kan bara mitt eget. Och mammas.

🔎 Hur funkar DNS?

När du skriver in t.ex. ejahoglund.se i webbläsaren, så kommer det ske en rad olika saker bakgrunden innan du ser hemsidan.

Till att börja med så förstår inte din dator domännamn i det här avseendet. Den förstår bara IP-adresser. När du skriver in ejahoglund.se så tänker den “jaha?!” och börjar direkt leta efter en relaterad IP-adress. Processen för att hitta rätt IP-adress ser ut ungefär så här:

  1. Din dator börjar med att kolla i sin egna s.k. hosts-fil. Om du öppnar filen skulle du se något i stil med detta:

    127.0.0.1	localhost
    

    Det du ser är en IP-adress (127.0.0.1) och ett domännamn (localhost). Som du också ser så finns inte domänen ejahoglund.se någonstans i filen, så din dator måste leta vidare.

    🧩 Bra att veta: På Mac och Linux brukar hosts-filen ligga under /etc/hosts och på Windows ligger den i C:\Windows\System32\drivers\etc\hosts. I hosts-filen kan du t.ex. lägga in dina egna lokala domäner som underlättar när du jobbar med flera olika webbprojekt.

  2. Din dator kontaktar nu sin primära DNS-server som den är konfigurerad till att prata med i såna här situationer. DNS-servern kollar sedan i sin motsvarighet till hosts-filen, efter en rad där det står ejahoglund.se.

    Om DNS-servern hittar en träff så svarar den med IP-adressen till domänen och om den inte hittar någon träff så fortsätter den att fråga en annan DNS-server. Denna process upprepas tills någon server någonstans sist och slutligen vet vilken IP-adress som tillhör domänen ejahoglund.se.

  3. IP-adressen skickas sedan tillbaka till din dator som nu vet vart du ville ta vägen när du skrev in ejahoglund.se i webbläsaren – och vips så ser du hemsidan.

Detta är en grovt förenklad bild av processen för att hitta rätt IP-adress. Om du vill dyka ner i processen kan du söka vidare på “DNS Resolution” eller så kan du läsa Internetstiftelsens artikel “Så går en DNS-uppslagning till”.

Vidare ska vi prata om hur du konfigurerar DNS för din domän.

⚙️ Konfigurera DNS

Koppla ihop din domän med en DNS

När du skaffar en domän behöver du ange vilka s.k. namnservrar (NS) som är ansvariga för domänen. En namnserver är en typ av DNS-servern som är auktoritativ för den specificerade domänen. Detta innebär att namnservern hanterar domänens alla DNS-poster (vi ska prata mer om DNS-poster snart).

Om du inte redan har en namnserver behöver du först skaffa en. Enklast är att köpa ett webbhotell där DNS är inkluderat i paketet. Du kan även köpa en fristående DNS-tjänst eller till och med att sätta upp en egen server. Det sistnämnda kräver dock en hel del kunskap.

Oavsett vilket alternativ du väljer så kommer du i slutändan ha en adress till din namnserver. Mer specifikt så kommer du troligtvis ha minst 2 adresser. Det är nämligen vanligt att ha flera namnservrar för att skapa redundans ifall en server skulle gå ner.

För att koppla ihop din domän med din namnserver behöver du logga in hos din registrar och ange adresserna till dina namnservrar. Det skulle kunna se ut så här:

Prioritet Namnserver
1 ns1.example.com
2 ns2.example.com
3 ns3.example.com

Du anger alltså dina namnservrar i en lista som är sorterad efter prioritet, d.v.s. vilken server om ska kontaktas i första hand.

När du har sparat dina inställningar kan det upp till 48 timmar innan ändringarna slår igenom.

DNS-poster

En DNS-post är kort sagt en rad som består av en domän, en IP-adress och vilken typ av post (pekare) det handlar om. Nedan följer några vanliga pekare som du bör känna till.

Pekare Betydelse Beskrivning
A Host address Mappar en domän till en IP-adress. Det är i denna post du talar om vilken webbserver som din hemsida ligger på.
MX Mail exchange Talar om vilken servern som hanterar e-post åt domänen.
CNAME Cannonical name Ett alias där du refererar en domän till en annan domän istället för en IP-adress. Användbart om du inte känner till IP-adressen, om IP-adressen kommer att ändras eller om du inte vill behöva upprepa samma IP-adress om och om igen.
TXT Textfält Kan bl.a användas för SPF (Sender Policy Framework), domänverifiering och allmänna kommenterar.

Till varje pekare finns även fältet TTL som står för “Time To Live”. Detta fält anger hur länge (i sekunder) som värdet ska sparas i cachen av andra DNS-servrar och klienter innan de kollar efter uppdateringar. Låt säga att TTL är satt till 3600, så innebär det att cachen ska sparas i 1 timme innan nya, eventuella uppdateringar hämtas.

Anledningen till att man har en TTL är bl.a. för att förhindra att DNS-servern blir överbelastad av alla förfrågningar. Ju länge TTL desto mindre belastning för servern men desto längre tid kommer det ta innan nya uppdateringar kan slå igenom. I exemplet nedan kommer alla poster ha samma TTL men det finns inget som hindrar att ha olika TTL på olika poster.

🧩 Bra att veta: När du gör ändringar i DNS kan det lite tid innan det slår igenom världen över. Detta beror bl.a. på TTL men inte uteslutande. Processen för spridningen av inställningarna kallas “DNS propagation” och det finns olika verktyg online för att kolla status för din domän. Sök t.ex. på “DNS propagation checker”.

Nedan är ett exempel på hur enklare DNS-konfiguration skulle kunna se ut.

Domän Typ TTL Data
ejahoglund.se A 3600 192.168.0.1
*.ejahoglund.se A 3600 192.168.0.1
blogg.ejahoglund.se CNAME 3600 ejahoglund.se
ejahoglund.se MX 3600 192.168.0.2
ejahoglund.se TXT 3600 “v=spf1 ip4:192.168.1.2 -all”
ejahoglund.se TXT 3600 “google-site-verification=abc”

En stjärna/asterisk (*) framför domänen betyder att det är ett wildcard, d.v.s. den matchar alla tänkbara subdomäner. Detta är användbart om du vill att alla (eller majoriteten av) dina subdomäner ska peka mot samma servern. Genom att använda ett wildcard så slipper du sätta upp en post för varje enskild subdomän. Även om du har ett wildcard för alla subdomäner, så kan du fortfarande skriva över den inställningen för specifika subdomäner genom att specificera en subdomän likt blogg.ejahoglund.se på rad 3.

De två sista raderna är exempel på hur TXT-poster kan används:

  • I det första fallet har vi lagt in en SPF-post (Sender Policy Framework) som anger vilken server som får skicka mejl å domänens vägnar. Detta förhindrar att spammare (och alla andra) skickar mejl i din domäns namn – vilket annars är väldigt lätt att göra.
  • I det andra exemplet har vi lagt in en verifiering som Google tittar efter för att säkerställa att du äger domänen.

Ibland när du konfigurerar din DNS så kommer du se ett @-tecken. Detta är bara ett annat sätt att skriva ut domännamnet på, så istället för att skriva ejahoglund.se kan du skriva @. Följande två rader betyder alltså samma sak:

Domän Typ TTL Data
ejahoglund.se A 3600 192.168.0.1
@ A 3600 192.168.0.1

Sammanfattning

  • DNS är ett massivt system för att hålla koll på alla domäner.
  • Din hosts-fil på datorn är som en lokal DNS där du kan du lägga in egna domäner i utvecklingssyfte.
  • Ändringar som görs i DNS kan ta lång tid att slå igenom världen över.
  • A-pekaren talar om vilken server som din hemsida ligger på.
  • MX-pekaren talar om vilken servern som hanterar e-post åt domänen.
  • CNAME-pekaren är ett alias där du refererar en domän till en annan domän istället för en IP-adress.
  • TXT-pekaren är ett enkelt textfält och kan bl.a. användas för SPF, domänverifiering och allmänna kommenterar.
  • SPF-pekaren är ett sätt att skydda sig mot att spammare skickar ut mejl från din domän.
  • @-tecknet är samma sak som din domän, t.ex. ejahoglund.se.
  • En asterisk (*) kallas wildcard och matchar alla tänkbara subdomäner.
  • TTL(Time To Live) anger hur länge en inställning ska sparas i cachen.

Mer om hur DNS funkar kan du läsa hos Internetstiftelsen.

  • Publicerad:
  • Uppdaterad: