Module 3 · 3.2
CNAME en de kale domeinnaam
Module 3: Records voor je website · Leestijd: 8 minuten
Leerdoel: Na deze les kun je een CNAME-record correct maken en uitleggen waarom het niet op de kale domeinnaam kan.
Kernbegrippen: CNAME, alias, doelnaam, de CNAME-regel (geen andere records ernaast), apex (kale domeinnaam), ALIAS/ANAME/CNAME flattening
Een naam die naar een andere naam wijst
Een A-record zegt: "deze naam woont op dit adres". Een CNAME-record (van canonical name) zegt iets anders: "deze naam is eigenlijk een andere naam, vraag het daar maar". Je maakt er een alias mee.
shop.example.com. 3600 IN CNAME shops.platform.example.Vraagt een browser het adres van shop.example.com, dan antwoordt de DNS: "dat is shops.platform.example". De resolver zoekt dan het A- of AAAA-record van die naam op en geeft dat adres terug. Voor de bezoeker merk je er niets van: de adresbalk toont gewoon shop.example.com.
Waarom zou je dat willen? Omdat het IP-adres dan het probleem van de ander is. Een webwinkelplatform, nieuwsbriefdienst of cloudpartij kan zijn servers verplaatsen en de adressen wijzigen zonder dat jij iets hoeft aan te passen. Daarom vragen veel diensten om een CNAME in plaats van een A-record: "laat www wijzen naar shops.platform.example".
De punt aan het eind
In les 2.2 heb je gezien dat een naam zonder punt aan het eind als relatief wordt gelezen: de DNS plakt je eigen domeinnaam erachter. Bij een CNAME gaat dat heel vaak mis.
| Je typt bij de waarde | Wat de DNS ervan maakt |
|---|---|
shops.platform.example. | shops.platform.example (goed) |
shops.platform.example | shops.platform.example.example.com (bestaat niet) |
Veel panelen voegen de punt tegenwoordig zelf toe of waarschuwen je. Andere niet. Kijk dus na het opslaan in de lijst: zie je je eigen domeinnaam achter de waarde staan, dan ontbrak de punt.
Dezelfde regel geldt voor de mailserver in een MX-record en voor NS-records. Bij een IP-adres in een A-record zet je geen punt.
De CNAME-regel: niets ernaast
Een CNAME heeft één harde regel uit de DNS-standaard (RFC 1034, paragraaf 3.6.2, en RFC 2181): een naam met een CNAME mag geen andere records hebben. Logisch: de CNAME zegt "ik ben eigenlijk die andere naam". Als er dan ook nog een A-record of een MX-record bij staat, is niet duidelijk welk antwoord geldt.
Daaruit volgen twee dingen die je in de praktijk tegenkomt:
- Staat er al een A-record voor
shop, verwijder dat dan eerst. Een paneel weigert anders het CNAME-record, of erger, accepteert het en de DNS gaat raar doen. - Een CNAME op de kale domeinnaam kan niet.
Waarom niet op de kale domeinnaam?
De kale domeinnaam, example.com zonder iets ervoor, heet in vaktaal de apex of de top van de zone. Op die naam staan altijd records die er móéten zijn:
- het SOA-record (de technische kop van de zone),
- de NS-records (welke nameservers de zone beheren),
- meestal ook MX-records (mail) en TXT-records (SPF, verificatie).
Omdat een CNAME geen andere records naast zich duldt, en de apex altijd SOA en NS heeft, kan er op de apex geen CNAME staan. Dat is geen beperking van je paneel, maar van de DNS zelf.
Vraagt een dienst je om "je hoofddomein" te koppelen, dan zijn er drie oplossingen:
- Een A-record (en eventueel AAAA) met het IP-adres van de dienst. De meeste webwinkelplatforms geven daarvoor een vast adres op. Dit werkt overal.
- Een ALIAS-, ANAME- of "CNAME flattening"-record. Sommige DNS-partijen bieden een eigen recordtype dat zich gedraagt als CNAME, maar dat de nameserver zelf omzet naar een A-record voordat het antwoord de deur uitgaat. Dit is geen officieel recordtype: het werkt alleen bij partijen die het ondersteunen, en het heet overal anders.
- Doorsturen. Laat de kale domeinnaam met een A-record naar je eigen webserver wijzen, en laat die bezoekers doorsturen naar
www.example.com, dat wel een CNAME naar de dienst heeft. Hoe doorsturen werkt, lees je in les 3.4.
Waar een CNAME nog meer niet mag
- Een MX-record mag niet naar een CNAME wijzen (RFC 2181, paragraaf 10.3). De mailserver in een MX moet een naam zijn met een eigen A- of AAAA-record. Sommige mailservers redden zich toch, maar je kunt er niet op rekenen.
- Geen CNAME op een naam die je ook als subdomein in je hostingpaneel hebt. Een subdomein in het paneel krijgt zelf al records die naar je hosting wijzen. Wil je dat de naam naar een andere dienst wijst, verwijder dan het subdomein en maak alleen het CNAME-record.
- Ketens kunnen, maar beperk ze. Een CNAME mag naar een naam wijzen die zelf weer een CNAME is. Elke stap kost een extra opzoeking. Grote platforms doen dit vaak (je ziet dan twee of drie CNAMEs achter elkaar), maar maak zelf geen lange ketens.
In de praktijk: zo ziet het eruit in een paneel
Als voorbeeld gebruiken we het DNS-scherm van Mijn WebOké. In andere panelen (DirectAdmin, cPanel, Plesk, Cloudflare, de meeste registrars) heten de knoppen anders, maar vul je dezelfde drie dingen in: type, naam en doelnaam.
- Open het DNS-scherm van je domein en klik op Record toevoegen.
- Kies het type CNAME.
- Vul bij Naam alleen
shopin, zonder je domeinnaam. - Vul bij Verwijst naar de doelnaam in, met een punt aan het eind:
shops.platform.example. - Sla op en controleer in de lijst of er niet je eigen domeinnaam achter de waarde staat.
Het paneel in het voorbeeld waarschuwt als de punt ontbreekt. Niet elk paneel doet dat.
Samenvatting
- Een CNAME maakt van een naam een alias voor een andere naam; het IP-adres beheert dan de ander.
- Zet een punt aan het eind van de doelnaam, anders plakt de DNS je eigen domein erachter.
- Een naam met een CNAME mag geen andere records hebben.
- Daarom kan een CNAME niet op de kale domeinnaam: daar staan altijd SOA en NS. Gebruik daar een A-record, een ALIAS-achtig record van je DNS-partij of doorsturen.
- Een MX-record mag niet naar een CNAME wijzen.
Quiz
Opdracht
Z3.2 (opzoeken): Naar welke naam wijst het CNAME-record van en.wikipedia.org? Vul de doelnaam in.
O3.2 (instellen): Maak in je oefenzone een CNAME-record met de naam winkel dat wijst naar shops.shop-demo.dnspractice.eu. (met de punt). Zorg dat er voor winkel geen ander record staat. In de oefenzone gebruik je een nepdienst; bij je echte domein vul je de doelnaam in die de echte dienst opgeeft. Klik daarna op Controleren.
Verder lezen
Deze artikelen beschrijven de stappen in de panelen van WebOké; in andere panelen werken ze vergelijkbaar.
