While helping to diagnose name resolution issues on a Windows Domain, I discovered that Microsoft DNS Server (version 1DB10106 (6.1 build 7601)) responds to requests from the BIND DIG tool (version 9.11) with response code 1 FORMERR (Request format error). This post discusses why and a workaround.

First, an example request and response, to clarify the issue:

; <<>> DiG 9.11.0 <<>> kevinlocke.name @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 59675
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 808a22be618a7750 (echoed)
;; QUESTION SECTION:
;kevinlocke.name.			IN	A

;; Query time: 62 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jan 20 17:24:10 Mountain Daylight Time 2017
;; MSG SIZE  rcvd: 51

DIG requested kevinlocke.name and received FORMERR. After some trial and error, I determined that the issue results from DIG 9.11 sending the DNS COOKIE option. This option was enabled by default in BIND 9.11. Unfortunately, adding this option causes DNS Server to treat the request as malformed. This behavior appears to violate “Any OPTION-CODE values not understood by a responder or requestor MUST be ignored.” from Section 6.1.2 of RFC 6891, but that is of small consolation for a non-working system.

As a workaround, pass the +nocookie option (or +noedns to disable all EDNS options) as in dig +nocookie kevinlocke.name.