Matnyttigt om dns i allmänhet

Varför man inte kan ha CNAME pekare på domännivå

Någon gång per år stöter vi på en domän som slutar ta emot mail och på andra sätt slutat fungera som tänkt. Det visar sig allt för ofta att man har lagt in ett CNAME record på domännivå (exempelvis ertdomännamn.se)

Ett record för exempelzonen ertdomännamn.se som kan se ut ungefär såhär:

@ IN CNAME vårtdomännamn.se.

Vilket översätts till att ertdomännamn.se ska ha samma värden som vårtdomännamn.se men det får alltid oväntade effekter. Bland annat så plockas NS pekare bort, domänen saknar egna MX pekare, och SPF/TXT pekare. Samtidigt som alla underdomäner, exempelvis www.ertdomännamn.se slutar fungera, eftersom det inte finns några NS pekare.

När man gjorde upp om DNS standarder, så gjorde man några grundläggande krav som alla zoner ska uppfylla. För exakt information se RFC 1912 och RFC 2181 som bestämmer att:

  1. SOA och NS värden är obligatoriska för alla domäner.
  2. CNAME värden kan bara finnas som ett enskilt värde och kan inte kombineras med andra värden undantaget DNSSEC SIG, NXT och KEY RR värden.

Det innebär således att CNAME inte kan användas på domänen, eftersom de två kraven inte kan uppfyllas samtidigt. 

Eftersom en standard finns som säger att CNAME endast kan finnas som enskilt värde görs inga vidare uppslagningar, det innebär att om du har ett CNAME och två MX och ett A record så slutar uppslagningen när den träffar på ett CNAME. Alla andra värden ignoreras helt, undantaget värden som har med DNSSEC att göra.

Hur löser man då ett CNAME record för en hemsida men behåller SOA och NS värden?

Jo, lämpligtvis lägger man in

www IN CNAME vårtdomännamn.se.

och så har man två val för själva domänen.

Antingen tar man bort IP pekningen, så domänen endast går att besöka via www.ertdomännamn.se, eller så pekar man @ IN A 12.34.56.78 och @ IN AAAA 2001:ff:11:22