Ho un controller di dominio Windows 2008 R2 che è anche un server DNS. Quando si risolvono determinati TLD, viene restituito un SERVFAIL:
$ dig bogus.
; <<>> DiG 9.8.1 <<>> bogus.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 31919
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;bogus. IN A
Ottengo lo stesso risultato per un vero TLD come com.
quando interrogo il DC come mostrato sopra. Confronta con un server BIND che funziona come previsto:
$ dig bogus. @128.59.59.70
; <<>> DiG 9.8.1 <<>> bogus. @128.59.59.70
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 30141
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;bogus. IN A
;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2012012501 1800 900 604800 86400
;; Query time: 18 msec
;; SERVER: 128.59.59.70#53(128.59.59.70)
;; WHEN: Wed Jan 25 14:09:14 2012
;; MSG SIZE rcvd: 98
Allo stesso modo, quando dig . any
eseguo una query sul mio server DNS di Windows , ottengo un SERVFAIL ma i server BIND restituiscono la zona radice come previsto.
Sembra simile al problema descritto in http://support.microsoft.com/kb/968372, tranne per il fatto che sto usando due server di inoltro (128.59.59.70 dall'alto e 128.59.62.10) e tornando ai suggerimenti di root, quindi i presupposti per esporre il problema non sono gli stessi. Tuttavia, ho anche applicato la MaxCacheTTL
correzione del registro come descritto e riavviato DNS e l'intero server, ma il problema persiste. Il problema si verifica su tutti i controller di dominio in questo dominio e si è verificato da un anno e mezzo fa, anche se i server ricevono aggiornamenti automatici di Windows.
MODIFICARE
Ecco un registro di debug. Il client è 160.39.114.110, che è la mia workstation.
1/25/2012 2:16:01 PM 0E08 PACKET 000000001EA6BFD0 UDP Rcv 160.39.114.110 2e94 Q [0001 D NOERROR] A (5)bogus(0)
UDP question info at 000000001EA6BFD0
Socket = 508
Remote addr 160.39.114.110, port 49710
Time Query=1077016, Queued=0, Expire=0
Buf length = 0x0fa0 (4000)
Msg length = 0x0017 (23)
Message:
XID 0x2e94
Flags 0x0100
QR 0 (QUESTION)
OPCODE 0 (QUERY)
AA 0
TC 0
RD 1
RA 0
Z 0
CD 0
AD 0
RCODE 0 (NOERROR)
QCOUNT 1
ACOUNT 0
NSCOUNT 0
ARCOUNT 0
QUESTION SECTION:
Offset = 0x000c, RR count = 0
Name "(5)bogus(0)"
QTYPE A (1)
QCLASS 1
ANSWER SECTION:
empty
AUTHORITY SECTION:
empty
ADDITIONAL SECTION:
empty
1/25/2012 2:16:01 PM 0E08 PACKET 000000001EA6BFD0 UDP Snd 160.39.114.110 2e94 R Q [8281 DR SERVFAIL] A (5)bogus(0)
UDP response info at 000000001EA6BFD0
Socket = 508
Remote addr 160.39.114.110, port 49710
Time Query=1077016, Queued=0, Expire=0
Buf length = 0x0fa0 (4000)
Msg length = 0x0017 (23)
Message:
XID 0x2e94
Flags 0x8182
QR 1 (RESPONSE)
OPCODE 0 (QUERY)
AA 0
TC 0
RD 1
RA 1
Z 0
CD 0
AD 0
RCODE 2 (SERVFAIL)
QCOUNT 1
ACOUNT 0
NSCOUNT 0
ARCOUNT 0
QUESTION SECTION:
Offset = 0x000c, RR count = 0
Name "(5)bogus(0)"
QTYPE A (1)
QCLASS 1
ANSWER SECTION:
empty
AUTHORITY SECTION:
empty
ADDITIONAL SECTION:
empty
Ogni opzione nella casella del registro di debug è stata selezionata tranne "filtro per IP". Al contrario, quando eseguo una query, ad esempio, accounts.google.com, posso vedere il server DNS uscire al suo spedizioniere (128.59.59.70, per esempio). In questo caso, non ho visto alcun pacchetto uscire dal mio server DNS anche se bogus.
non era nella cache (il registro di debug era già in esecuzione e questa è la prima volta che ho richiesto questo server bogus.
o qualsiasi TLD). È appena tornato SERVFAIL senza consultare nessun altro server DNS, come nell'articolo di Microsoft KB collegato sopra.