DNSサーバーでもあるWindows 2008 R2ドメインコントローラーがあります。特定のTLDを解決すると、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
com.
上記のように、DCをクエリするときのように、実際のTLDでも同じ結果が得られます。期待どおりに動作しているBINDサーバーと比較します。
$ 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
同様に、Windows DNSサーバーにでクエリを実行するとdig . any
、SERVFAILが返されますが、BINDサーバーは期待どおりルートゾーンを返します。
これは、http://support.microsoft.com/kb/968372で説明されている問題に似ていますが、2つのフォワーダー(上記の128.59.59.70と128.59.62.10)を使用していて、ルートヒントにフォールバックしているため、前提条件が問題を公開することは同じではありません。それでも、MaxCacheTTL
説明したようにレジストリの修正を適用し、DNSとサーバー全体を再起動しましたが、問題は解決しません。この問題は、このドメインのすべてのドメインコントローラーで発生し、サーバーがWindowsの自動更新を取得していても、半年前から発生しています。
編集
これはデバッグログです。クライアントは160.39.114.110で、これが私のワークステーションです。
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
「IPによるフィルター」を除いて、デバッグログボックスのすべてのオプションがチェックされました。対照的に、たとえばaccounts.google.comに対してクエリを実行すると、DNSサーバーがそのフォワーダー(たとえば、128.59.59.70)に送信されることがわかります。この場合、bogus.
キャッシュにないにもかかわらず、DNSサーバーからパケットが送信されることはありませんでした(デバッグログは既に実行されており、これは、このサーバーbogus.
またはTLDを初めてクエリしたときです)。上記のMicrosoft KB記事にあるように、他のDNSサーバーに問い合わせることなくSERVFAILを返しました。