✦ Oplossingen · DNS en domeinnaam

DNSSEC-fout: SERVFAIL na een verhuizing of nameserverwissel

SERVFAIL na een verhuizing of nameserverwissel komt vaak door een oud DS-record. Zo controleer je DNSSEC met dig +dnssec en dig DS en vervang je het DS-record.

Zo ziet de foutmelding eruit

  • status: SERVFAIL
  • Server failed
  • server can't find voorbeeld.nl: SERVFAIL
  • EDE: 9 (DNSKEY Missing)
  • EDE: 6 (DNSSEC Bogus)
  • ERR_NAME_NOT_RESOLVED

Waarom gebeurt dit?

DNSSEC voegt digitale handtekeningen toe aan de DNS van je domein, zodat een resolver kan controleren dat een antwoord echt van jouw nameservers komt en onderweg niet is vervalst. Daarvoor zijn twee dingen nodig: je nameservers ondertekenen de zone met een sleutel (de DNSKEY), en bij het register van de extensie staat een DS-record, een soort vingerafdruk van die sleutel. Resolvers die DNSSEC controleren, vergelijken die twee.

Passen ze niet bij elkaar, dan geeft een controlerende resolver géén antwoord, maar SERVFAIL. Dat is bewust: liever niets dan een mogelijk vervalst antwoord. Het gevolg is dat je website en mail onbereikbaar zijn voor iedereen die zo’n resolver gebruikt, en veel providers en publieke resolvers zoals 1.1.1.1 en 8.8.8.8 controleren DNSSEC. Resolvers die niet controleren, geven wel gewoon een antwoord; daardoor lijkt het probleem soms maar voor een deel van de mensen te spelen.

De meest voorkomende oorzaak is een verhuizing: je bent van nameservers gewisseld, maar bij het register staat nog het DS-record van de oude partij. De nieuwe nameservers ondertekenen niet, of met een andere sleutel. Andere oorzaken zijn een sleutelwissel waarbij het DS-record niet is bijgewerkt, en verlopen handtekeningen doordat de nameserver de zone niet meer opnieuw ondertekent.

Zo herken je dit probleem

  • dig of nslookup geeft SERVFAIL of ‘Server failed’ voor je domein, terwijl andere domeinen gewoon werken.
  • Met dig +cd (controle uit) krijg je wél een antwoord: dan is DNSSEC vrijwel zeker de oorzaak.
  • Het probleem begon direct na een nameserverwissel of verhuizing: zie ook nameservers wijzigen.
  • Krijg je NXDOMAIN in plaats van SERVFAIL, dan bestaat de naam niet volgens de DNS: zie DNS_PROBE_FINISHED_NXDOMAIN.
  • Werkt bij jou álle DNS niet, dan ligt het aan je eigen resolver: zie DNS-server reageert niet.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Bevestig dat het om DNSSEC gaat

    Vraag je domein op bij een controlerende resolver, en daarna nog een keer met +cd (checking disabled): dan slaat de resolver de DNSSEC-controle over. Geeft de eerste status: SERVFAIL en de tweede status: NOERROR met een IP-adres, dan is de DNSSEC-keten kapot. Recente versies van dig tonen vaak ook een regel met EDE (extended DNS error) die de reden noemt, zoals ‘DNSKEY Missing’ of ‘DNSSEC Bogus’.

    dig @1.1.1.1 voorbeeld.nl A
    dig @1.1.1.1 voorbeeld.nl A +cd
    dig @8.8.8.8 voorbeeld.nl A +dnssec
  2. Bekijk het DS-record bij het register

    Vraag het DS-record van je domein op. Elk DS-record begint met een getal: de key tag van de sleutel waar het bij hoort. Krijg je een DS-record terug, dan verwacht het register dat je domein ondertekend is.

    dig voorbeeld.nl DS +short
  3. Vergelijk met de sleutels van je nameservers

    Vraag bij je huidige nameservers de DNSKEY-records op. Met +multi toont dig bij elke sleutel de key id. Staat er geen DNSKEY, dan ondertekenen je nameservers niet, en is het DS-record bij het register een overblijfsel. Staat er wel een sleutel maar met een andere key id dan in het DS-record, dan hoort het DS-record bij een oude sleutel. Een DNSSEC-checker op internet laat de hele keten in één overzicht zien.

    dig NS voorbeeld.nl +short +cd
    dig @ns1.voorbeeld-dns.nl voorbeeld.nl DNSKEY +multi
  4. Snelle oplossing: laat het oude DS-record verwijderen

    Ondertekent je nieuwe partij (nog) niet, laat dan het DS-record verwijderen bij je domeinbeheerder of registrar. In veel beheerpanelen heet dat DNSSEC uitzetten of de DNSSEC-gegevens leegmaken. Zodra het register geen DS-record meer heeft en de oude DS uit de caches is verlopen, behandelen resolvers je domein als niet-ondertekend en werkt het weer. Hoe lang dat duurt, hangt af van de TTL van het DS-record.

  5. Of: plaats het juiste DS-record

    Ondertekent je nieuwe partij wel, vraag dan het juiste DS-record (of de DNSKEY) op en laat dat plaatsen bij je domeinbeheerder of registrar, ter vervanging van het oude. Vaak gaat dat automatisch als de DNS-partij en de domeinbeheerder dezelfde zijn. Controleer daarna of de key tag in het DS-record overeenkomt met een sleutel in de DNSKEY-uitvoer.

    dig voorbeeld.nl DS +short
    dig @ns1.voorbeeld-dns.nl voorbeeld.nl DNSKEY +multi
  6. Controleer op verlopen handtekeningen

    Kloppen DS en DNSKEY wel, kijk dan of de handtekeningen (RRSIG-records) nog geldig zijn. In de uitvoer met +dnssec staan bij elk RRSIG-record een einddatum en een begindatum. Is de einddatum voorbij, dan ondertekent je nameserver de zone niet meer opnieuw; dat moet de beheerder van de nameservers oplossen.

    dig @ns1.voorbeeld-dns.nl voorbeeld.nl A +dnssec
  7. Test opnieuw en zet DNSSEC daarna goed aan

    Vraag na de wijziging je domein opnieuw op bij een controlerende resolver, zonder +cd. Je hoort status: NOERROR en een antwoord te krijgen; bij een ondertekend domein staat dan ook de vlag ad (authenticated data) in de kop. Heb je DNSSEC verwijderd om het probleem op te lossen, zet het dan later bij de nieuwe partij weer netjes aan.

    dig @1.1.1.1 voorbeeld.nl A +dnssec
    delv voorbeeld.nl A

Let op: Verwijder bij een volgende nameserverwissel eerst het DS-record (of zet het juiste klaar) en wacht de TTL af vóór je van nameservers wisselt. Zo voorkom je dat je domein urenlang onbereikbaar is voor iedereen met een controlerende resolver.

SERVFAIL, NXDOMAIN of geen antwoord

Deze antwoorden lijken voor een bezoeker hetzelfde, maar betekenen iets anders.

  • SERVFAIL: de resolver kon geen betrouwbaar antwoord geven, vaak door een DNSSEC-fout of doordat de nameservers van het domein niet goed antwoorden.
  • NXDOMAIN: de naam bestaat niet volgens de DNS. Kijk naar tikfouten, een ontbrekend record of een verlopen domein.
  • Time-out: de resolver zelf reageert niet. Dan ligt het aan je eigen netwerk of DNS-server.

Werkt het domein met +cd wel, dan is DNSSEC de oorzaak. Geeft ook +cd SERVFAIL, controleer dan of de nameservers van het domein bereikbaar zijn en antwoorden.

Wanneer schakel je hulp in?

  • Je domein geeft SERVFAIL en je hebt geen toegang tot het beheer bij je domeinbeheerder of registrar.
  • Je wilt DNSSEC aanhouden tijdens een verhuizing en de sleutels netjes overzetten.
  • De DS- en DNSKEY-gegevens lijken te kloppen, maar het domein blijft SERVFAIL geven.
  • Website en mail liggen eruit en je moet snel weten of het aan DNSSEC, de nameservers of de server ligt.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Wat betekent SERVFAIL?

Dat de resolver geen betrouwbaar antwoord kon geven. Bij een domein dat net is verhuisd, is een kapotte DNSSEC-keten de meest voorkomende reden.

Waarom werkt mijn site voor sommige mensen wel?

Niet alle resolvers controleren DNSSEC. Wie een resolver zonder controle gebruikt, krijgt gewoon een antwoord; wie een controlerende resolver gebruikt, krijgt SERVFAIL.

Is het veilig om DNSSEC uit te zetten?

Tijdelijk, om je domein weer bereikbaar te maken, is dat de gebruikelijke oplossing. Zet het daarna weer aan bij de nieuwe partij, want DNSSEC beschermt tegen vervalste DNS-antwoorden.

Hoe controleer ik of DNSSEC goed staat?

Met dig voorbeeld.nl A +dnssec bij een controlerende resolver: de vlag ad en status: NOERROR betekenen dat het klopt. Een DNSSEC-checker laat ook de hele keten zien.