Come appare il messaggio
$ dig example.com @ns1.example.net
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 41873
;; WARNING: recursion requested but not availableCause frequenti
- Il dominio punta (record NS presso il registrar) a un name server che non ospita la zona. È una “lame delegation”, tipica dopo una migrazione DNS o un hosting disdetto.
- Hai interrogato un resolver ricorsivo da fuori dalla sua rete consentita, ad esempio il DNS dell'ufficio da internet.
- Una lista di accesso (
allow-query,allow-recursion) o una regola del firewall blocca il tuo indirizzo. - La zona non è caricata sul server o non si è caricata, ad esempio per un errore di sintassi.
- I trasferimenti di zona (AXFR) tra name server vengono rifiutati. È normale e voluto per host sconosciuti.
Verifica
- Quali name server usa il dominio?
- Ognuno di loro risponde per la zona? (sostituisci il nome)
dig @ns1.example.net example.com SOA +norecurse - L'intero percorso di delega
dig +trace example.com - Il tuo resolver risponde?
dig example.com A +short
Soluzione
- Se un server autorevole risponde REFUSED per la tua zona, crea o carica la zona lì, oppure rimuovi quel server dai record NS presso il registrar.
- Dopo un cambio di provider imposta i record NS presso il registrar solo sul nuovo provider e tieni attiva la vecchia zona finché non è scaduto il vecchio TTL.
- Se è il tuo resolver, autorizza i tuoi client, ad esempio in BIND
allow-recursion { 192.0.2.0/24; };. Non aprire la ricorsione a tutta internet, viene abusata per attacchi di amplificazione. - Sul server leggi il log per errori di caricamento della zona (
journalctl -u namedo-u bind9) ed eseguinamed-checkzonesul file di zona. - Riprova dal client interessato con
digdirettamente verso il server.
Domande frequenti
Che differenza c'è tra REFUSED, SERVFAIL e NXDOMAIN?
NXDOMAIN: il nome non esiste. SERVFAIL: il server ci ha provato ed è fallito. REFUSED: il server non ti risponde proprio.
Perché rifiuta solo uno dei miei name server?
Di solito la zona esiste su uno ma non sull'altro. I resolver scelgono un name server per ogni richiesta, quindi l'errore compare solo ogni tanto.