Verder Terug Inhoud

15. Nameservers verhuizen

Soms is het nodig om nameservers te verhuizen, bijvoorbeeld als een domein moet verhuizen naar een andere provider. Dit kan grote problemen opleveren als het niet goed uitgevoerd wordt. Je loopt kans dat sommige providers een week na de verhuizing nog steeds de oude gegevens doorgeven.

15.1 De oorzaak

Oorzaak van het probleem is de dubbele opslag van NS records voor domeinen. NS records staan zowel in het bovenliggende domein (bijvoorbeeld 'net') als in het gedelegeerde domein ('hensema.net').

Bij een verhuizing zijn drie sets nameservers betrokken:

Van deze drie sets servers geven twee de juiste informatie: de gedelegerende server en de nieuwe gedelegeerde servers. Twee sets servers geven informatie die volgens hen authoritative is: de beide gedelegeerde sets servers.

Vervuilde caches

Nameservers die recursieve queries doen naar het te verhuizen domein zullen vaak nog de oude NS records -- die dus wijzen naar de oude gedelegeerde nameservers -- nog in hun caches hebben staan. Verzoeken voor records in het domein zullen dan dus naar de oude nameservers gaan. Tot zover geen probleem.

Echter, normaal geeft een nameserver niet alleen het opgevraagde record, maar ook de NS records die geldig zijn voor het domein. Normaal worden deze extra records gebruikt om de non-authoritative records van de delegerende server te vervangen door authoritative records van de gedelegeerde server. Ze dienen echter genegeerd te worden als er al NS records in de cache stonden.

En hier zit het hele probleem. Sommige servers vervangen de records in hun cache door de records uit de extra informatie. Hiermee 'vervuilen' ze hun eigen cache met verkeerde data.

15.2 De oplossing

De oplossing is vrij simpel: zorg ervoor dat de oude gedelegeerde nameservers de nieuwe NS records kennen. Ze zullen dan voor elk verzoek niet de oude gegevens meesturen, maar juist de nieuwe. Op die manier vervuil je caches met de nieuwe -- juiste -- gegevens, en zal de verhuizing verlopen als gepland.

Wat je ook kunt doen: zet de TTL op de NS records veel lager dan de TTL op de rest van de records. Bijvoorbeeld 300 sec TTL op NS records en 1 dag TTL op de rest. NS records zullen dan sneller uit de cache verdwijnen dan de rest van de records. Daardoor worden recursieve servers gedwongen op de NS records opnieuw op te vragen van de delegerende server, die de juiste informatie geeft.

Iets wat ook effectief is: laat de zones verwijderen vanaf de oude servers. Ze hebben er immers niets meer te zoeken. Een server die geen informatie teruggeeft is stukken beter dan een server die foute informatie teruggeeft.

De allerlaatste oplossing is: wachten. Lang wachten. Ik heb servers na anderhalve week nog steeds de oude records zien geven.


Verder Terug Inhoud