Hello guys,<br><br>I have BIND 9.6-ESV-R5-P1 on SLES 11 SP1 installed and it is working fine. I only have a situation where I don't understand what's happening and why :<br>I try to do a quad-A query to <a href="http://www.ryanair.com">www.ryanair.com</a> (which is doesn't exists, only single A). When trying this with "dig" on my BIND server, I get a SERVFAIL return code. When doing the same query on the google DNS (8.8.8.8) I only get no answer but a return code of NOERROR.<br>
<br>(I only took <a href="http://www.ryanair.com">www.ryanair.com</a> as an exemple but I get the same behavior with some other records like <a href="http://exch-eu.atdmt.com">exch-eu.atdmt.com</a> ...)<br><br><u><font size="4">Here is the dig on google DNS</font></u><br>
<br>dig @<a href="http://8.8.8.8">8.8.8.8</a> AAAA <a href="http://www.ryanair.com">www.ryanair.com</a><br><br>; <<>> DiG 9.9.0 <<>> @<a href="http://8.8.8.8">8.8.8.8</a> AAAA <a href="http://www.ryanair.com">www.ryanair.com</a><br>
; (1 server found)<br>;; global options: +cmd<br>;; Got answer:<br>;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56244<br>;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1<br><br><u><font size="4">Here is the dig on my bind server:</font></u><br>
<br>dig AAAA <a href="http://www.ryanair.com">www.ryanair.com</a><br><br>; <<>> DiG 9.9.0 <<>> AAAA <a href="http://www.ryanair.com">www.ryanair.com</a><br>;; global options: +cmd<br>;; Got answer:<br>
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 25197<br>;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1<br><br><u>So I configured a channel with a debug3 severity on my BIND to try understanding what's happening. Here is the response exerpt:</u><br>
<br><blockquote>25-Apr-2012 14:00:52.009 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): response<br>25-Apr-2012 14:00:52.009 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): <span style="background-color:rgb(255,255,153)">noanswer_response</span><br>
25-Apr-2012 14:00:52.009 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): <span style="background-color:rgb(255,255,153)">cancelquery</span><br>25-Apr-2012 14:00:52.010 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): <span style="background-color:rgb(255,255,153)">add_bad</span><br>
25-Apr-2012 14:00:52.010 lame-servers: info: <span style="background-color:rgb(255,255,153)">FORMERR</span> resolving '<a href="http://www.ryanair.com/AAAA/IN">www.ryanair.com/AAAA/IN</a>': 193.95.148.92#53<br>25-Apr-2012 14:00:52.010 lame-servers: info: FORMERR resolving '<a href="http://www.ryanair.com/AAAA/IN">www.ryanair.com/AAAA/IN</a>': 193.95.148.92#53<br>
25-Apr-2012 14:00:52.010 lame-servers: info: FORMERR resolving '<a href="http://www.ryanair.com/AAAA/IN">www.ryanair.com/AAAA/IN</a>': 193.95.148.92#53<br>25-Apr-2012 14:00:52.010 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): try<br>
25-Apr-2012 14:00:52.010 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): query<br>25-Apr-2012 14:00:52.010 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): send<br>
25-Apr-2012 14:00:52.010 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): sent<br>25-Apr-2012 14:00:52.010 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): udpconnected<br>
25-Apr-2012 14:00:52.010 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): senddone<br>25-Apr-2012 14:00:52.030 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): response<br>
25-Apr-2012 14:00:52.030 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): cancelquery<br>25-Apr-2012 14:00:52.030 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): resend<br>
25-Apr-2012 14:00:52.030 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): query<br>25-Apr-2012 14:00:52.030 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): send<br>
25-Apr-2012 14:00:52.030 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): sent<br>25-Apr-2012 14:00:52.030 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): udpconnected<br>
25-Apr-2012 14:00:52.030 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): senddone<br>25-Apr-2012 14:00:52.047 client: debug 3: client 195.130.131.10#3449: UDP request<br>
25-Apr-2012 14:00:52.047 client: debug 3: client 195.130.131.10#3449: view MLT-EXTERNAL: query<br>25-Apr-2012 14:00:52.047 client: debug 3: client 195.130.131.10#3449: view MLT-EXTERNAL: send<br>25-Apr-2012 14:00:52.047 client: debug 3: client 195.130.131.10#3449: view MLT-EXTERNAL: sendto<br>
25-Apr-2012 14:00:52.047 client: debug 3: client 195.130.131.10#3449: view MLT-EXTERNAL: senddone<br>25-Apr-2012 14:00:52.047 client: debug 3: client 195.130.131.10#3449: view MLT-EXTERNAL: next<br>25-Apr-2012 14:00:52.047 client: debug 3: client 195.130.131.10#3449: view MLT-EXTERNAL: endrequest<br>
25-Apr-2012 14:00:52.047 client: debug 3: client @0x7f0d238e0380: udprecv<br>25-Apr-2012 14:00:52.050 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): response<br>
25-Apr-2012 14:00:52.050 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): noanswer_response<br>25-Apr-2012 14:00:52.050 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): cancelquery<br>
25-Apr-2012 14:00:52.050 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): add_bad<br>25-Apr-2012 14:00:52.050 lame-servers: info: FORMERR resolving '<a href="http://www.ryanair.com/AAAA/IN">www.ryanair.com/AAAA/IN</a>': 62.73.129.182#53<br>
25-Apr-2012 14:00:52.050 lame-servers: info: FORMERR resolving '<a href="http://www.ryanair.com/AAAA/IN">www.ryanair.com/AAAA/IN</a>': 62.73.129.182#53<br>25-Apr-2012 14:00:52.050 lame-servers: info: FORMERR resolving '<a href="http://www.ryanair.com/AAAA/IN">www.ryanair.com/AAAA/IN</a>': 62.73.129.182#53<br>
25-Apr-2012 14:00:52.050 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): try<br>25-Apr-2012 14:00:52.050 resolver: debug 3: fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA'">www.ryanair.com/AAAA'</a>): query<br>
25-Apr-2012 14:00:52.050 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): send<br>25-Apr-2012 14:00:52.050 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): sent<br>
25-Apr-2012 14:00:52.050 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): udpconnected<br>25-Apr-2012 14:00:52.050 resolver: debug 3: resquery 0x7f0d23be8dc0 (fctx 0x7f0d23be2dc0(<a href="http://www.ryanair.com/AAAA)">www.ryanair.com/AAAA)</a>): senddone<br>
</blockquote>So if I understand well, BIND received no answer for its query so it raise a FORMERR return code. So the difference in the return code between the google dns and bind is only a matter of DNS spec implementation difference? Or do I have a misconfiguration on my bind server?<br>
<br>Why do I care about this? Some Windows XP which are DNS clients of my BIND server have ipv6 enabled so they try to resolve URLs with quad-A. As they received SERVFAIL they try any other known server names in their network configuration in a loop until a (very long) timeout before trying single-A resolution. When configuring google nameserver as Windows network resolvers, I don't get any timeout since I get the blank response immediately for the quad-A record (with no error as return code) and it immediately try to resolve with single-A.<br>
<br>=> I know the root cause is the enablement of IPV6 on the clients and that part of the problem will be fixed. But I also want to understand and fix if possible the behavior of my BIND server.<br clear="all"><br>-- <br>
Nicolas MICHEL<br>