Module 7 · 7.1
DNS naar je VPS en reverse DNS
Module 7: Domein, webserver en https · Leestijd: 10 minuten
Leerdoel: Na deze les kun je een domein of subdomein naar je VPS laten wijzen met A- en AAAA-records, de reverse DNS van je server goed zetten, en controleren dat naam en adres heen en terug kloppen.
Kernbegrippen: A-record, AAAA-record, TTL, subdomein per dienst, www, hostnaam van de server, PTR, reverse DNS, forward-confirmed reverse DNS (FCrDNS), CAA, IPv6 vergeten
Van IP-adres naar naam
Tot nu toe heb je je server benaderd met zijn IP-adres, bijvoorbeeld ssh anna@192.0.2.10. Voor een website, een certificaat (les 7.3) en de diensten uit module 9 heb je een naam nodig. Die koppeling maak je in de DNS van je domein, bij de partij waar je DNS beheerd wordt: je registrar, je hostingbedrijf of een DNS-dienst. De VPS zelf heeft daar niets mee te maken; je server "weet" niet welke namen naar hem wijzen.
De basis van DNS leerde je in de DNS-cursus. Voor een VPS heb je er vooral twee records van nodig:
| Record | Wat | Voorbeeld |
|---|---|---|
| A | naam naar IPv4-adres | web1.example.com. 3600 IN A 192.0.2.10 |
| AAAA | naam naar IPv6-adres | web1.example.com. 3600 IN AAAA 2001:db8::10 |
Je VPS heeft meestal een vast IPv4- én IPv6-adres. Zet dan allebei de records. Bezoekers met IPv6 (in Nederland een groot deel van de thuisaansluitingen en mobiele netwerken) gebruiken dan IPv6, de rest IPv4.
Welke namen maak je?
Een gangbare indeling voor een VPS met een website en een paar diensten:
web1.example.com. A 192.0.2.10 ; de server zelf (hostnaam, PTR)
web1.example.com. AAAA 2001:db8::10
example.com. A 192.0.2.10 ; de website
example.com. AAAA 2001:db8::10
www.example.com. CNAME example.com.
status.example.com. CNAME web1.example.com. ; Uptime Kuma (les 9.4)
kluis.example.com. CNAME web1.example.com. ; Vaultwarden (les 9.4)Een paar keuzes zitten hierin:
- De server heeft een eigen naam (
web1), los van de website. Die naam gebruik je voor SSH, voor de reverse DNS en als hostnaam van het systeem. Verhuist de website later naar een andere server, dan blijftweb1gewoon kloppen. - Een subdomein per dienst. Uptime Kuma en Vaultwarden krijgen elk een eigen naam. Dat is veel eenvoudiger (en veiliger) dan diensten onder een pad als
example.com/kluishangen: elke dienst krijgt zijn eigen certificaat, cookies lopen niet door elkaar, en je kunt een dienst later naar een andere server verplaatsen door één record te veranderen. - CNAME voor de subdomeinen. Een CNAME naar
web1betekent: als het IP-adres van de server verandert, pas je alleen de records vanweb1aan. Op de kale domeinnaam (example.com) mag geen CNAME staan; daar zet je A en AAAA.
De hostnaam van het systeem zelf zet je op de server:
anna@web1:~$ sudo hostnamectl set-hostname web1.example.com
anna@web1:~$ hostname -f
web1.example.comControleer ook dat /etc/hosts geen oude naam bevat. Een kloppende hostnaam is vooral belangrijk als de server ooit mail verstuurt.
TTL: hoe snel een wijziging overal is
De TTL (time to live) is het aantal seconden dat resolvers een antwoord mogen onthouden. Bij 3600 kan het tot een uur duren voordat iedereen een nieuw adres ziet. Ga je een website verhuizen naar je VPS, zet de TTL dan een dag van tevoren op 300 (vijf minuten), wacht minstens de oude TTL af, wijzig het adres, en zet de TTL daarna weer hoger. Dit is precies het stappenplan uit de DNS-cursus, les 6.3.
Controleer met dig (DNS-cursus les 8.2) wat de rest van internet ziet, en vraag het aan een publieke resolver in plaats van aan je eigen computer:
anna@laptop:~$ dig +short A example.com @1.1.1.1
192.0.2.10
anna@laptop:~$ dig +short AAAA example.com @1.1.1.1
2001:db8::10Op Windows: Resolve-DnsName example.com -Type AAAA -Server 1.1.1.1.
De valkuil: een AAAA-record zonder werkende IPv6
Zet je een AAAA-record, dan moet de dienst ook echt via IPv6 bereikbaar zijn. Een veelvoorkomende fout: het record staat, maar de webserver luistert alleen op IPv4, of de firewall laat IPv6 niet door (les 5.2), of IPv6 is in de VPS niet ingesteld. Bezoekers met IPv6 zien dan een trage of mislukte site, terwijl het bij jou "gewoon werkt" omdat je thuis misschien alleen IPv4 hebt. Ook Let's Encrypt probeert IPv6 eerst als er een AAAA-record is (les 7.3). Geeft je server via IPv6 een ander antwoord dan via IPv4, dan mislukt de certificaataanvraag.
Test IPv6 daarom apart, vanaf een andere machine met IPv6: curl -6 -I https://example.com. Heb je zelf geen IPv6, gebruik dan een online test als internet.nl.
Reverse DNS: van adres terug naar naam
De reverse DNS koppelt een IP-adres terug aan een naam, met een PTR-record (DNS-cursus les 4.6). Dat record staat niet in de zone van jouw domein, maar in de zone van het IP-adres, en die is van de partij die het adres beheert: je VPS-aanbieder. Je zet de PTR dus in het paneel van de aanbieder, niet in je eigen DNS.
Waarom zou je dat doen?
- Mail. Ontvangende mailservers weigeren of wantrouwen mail van een adres zonder goede reverse DNS. Verstuurt je VPS mail (al is het maar een melding van een formulier), dan is dit verplicht (zie de cursus E-mail op orde, les 5.1).
- Herkenbaarheid. In logboeken en traceroutes zien anderen
web1.example.comin plaats van een generieke naam van de aanbieder. - Netheid. Sommige diensten en spamfilters geven punten voor adressen met een generieke of ontbrekende PTR.
De regel is forward-confirmed reverse DNS (FCrDNS): het adres wijst met PTR naar een naam, en die naam wijst met A of AAAA weer naar hetzelfde adres. Dus eerst het A- en AAAA-record maken, dan de PTR aanvragen, voor IPv4 en IPv6 allebei.
anna@laptop:~$ dig +short -x 192.0.2.10
web1.example.com.
anna@laptop:~$ dig +short A web1.example.com
192.0.2.10
anna@laptop:~$ dig +short -x 2001:db8::10
web1.example.com.
anna@laptop:~$ dig +short AAAA web1.example.com
2001:db8::10Komt bij alle vier het verwachte antwoord terug, dan klopt het heen en terug.
CAA: wie mag certificaten maken?
Met een CAA-record (DNS-cursus les 5.2) zeg je welke certificaatuitgevers voor je domein certificaten mogen maken. Gebruik je alleen Let's Encrypt:
example.com. 3600 IN CAA 0 issue "letsencrypt.org"Dat is niet verplicht, maar een nette extra laag. Let op: heb je al een CAA-record met een andere uitgever, dan weigert Let's Encrypt je aanvraag. Kijk dus eerst met dig CAA example.com.
In de praktijk: reverse DNS in het VPS-scherm
Bij WebOké zet je de reverse DNS in het VPS-scherm, op het tabblad "ISO en rDNS". Staat je domein ook bij WebOké in de DNS, dan kan het paneel het A- en AAAA-record meteen voor je aanmaken; staat de DNS elders, dan maak je die records eerst zelf en vul je daarna de volledige naam in. Bij andere aanbieders heet dit "Reverse DNS", "rDNS" of "PTR" in het klantpaneel; bij sommige moet je het via een ticket aanvragen. Het werkt overal op dezelfde manier: eerst de naam naar het adres, dan het adres naar de naam.
Samenvatting
- Een naam koppel je aan je VPS met een A-record (IPv4) en een AAAA-record (IPv6), in de DNS van je domein.
- Geef de server een eigen naam (
web1.example.com) en elke dienst een eigen subdomein; CNAME's naar de servernaam maken verhuizen makkelijk. - Verlaag de TTL vóór een verhuizing en controleer met
digbij een publieke resolver. - Zet geen AAAA-record als de dienst niet echt via IPv6 werkt; test IPv6 apart.
- De PTR zet je bij je VPS-aanbieder; heen en terug moet kloppen (FCrDNS), voor IPv4 en IPv6.
Quiz
Opdracht
Opdracht Z7.1: A, AAAA en PTR van je server. Geef je server een eigen naam (bijvoorbeeld web1.<jouwdomein>), maak het A- en AAAA-record en zet de reverse DNS bij je aanbieder. Vul in de opdracht de naam van je server in, het IPv4- en het IPv6-adres, en de naam die je bij dig -x voor beide adressen kreeg. Het programma vraagt de A- en AAAA-records en de PTR van beide adressen live op en controleert dat alles heen en terug klopt. Heeft je server geen IPv6, dan controleert het alleen IPv4 en meldt het dat in oranje.
