My ISP's nameserver confuses the resolver in glibc 2.3.2 and BIND 9.2.1

david houlder david.houlder at anu.edu.au
Thu Jan 1 12:05:04 UTC 2004


I've been seeing some DNS lookup failures on my redhat 9 box.
They are accomapnied by this in /var/log/messages:

Jan  1 22:29:11 localhost mozilla-bin: gethostby*.getanswer: asked for
"www.google.com.au", got "www.google.akadns.net"

A little experimentation with dig reveals that all the info is being
returned, only the A record arrives first, followed by the CNAME:

[david at localhost david]$ dig www.google.com.au
 
; <<>> DiG 9.2.1 <<>> www.google.com.au
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60725
;; flags: rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
 
;; QUESTION SECTION:
;www.google.com.au.             IN      A
 
;; ANSWER SECTION:
www.google.akadns.net.  57      IN      A       216.239.53.99
www.google.com.au.      2278    IN      CNAME   www.google.akadns.net.
 
;; Query time: 336 msec
;; SERVER: 203.220.32.107#53(203.220.32.107)
;; WHEN: Thu Jan  1 22:42:25 2004
;; MSG SIZE  rcvd: 86


Running 'tcpdump -n -vvv -s 128' during the dig confirms this.

I thought I'd get around this by setting up a forward-only caching
nameserver, figuring that it might be able to put the records back
into the 'correct' order before handing them back to gethostbyname(),
but, no, BIND seems to be just as confused. The tcpdump of BIND on
localhost forwarding a query shows this...

[root at localhost david]# tcpdump -n -vvv -s 128
tcpdump: listening on ppp0
22:07:04.433985 203.220.41.33.32768 > 203.220.32.107.domain: [udp sum
ok]  55260
+ [1au] A? home.dodo.com.au. ar: . OPT UDPsize=2048 (45) (DF) (ttl 64,
id 0, len
 73)
22:07:04.607987 203.220.32.107.domain > 203.220.41.33.32768: [udp sum
ok]  55260
+ [2a] [1au] A? home.dodo.com.au. www.dodo.com.au. A 203.220.32.118,
home.dodo.c
om.au. CNAME www.dodo.com.au. ar: . OPT UDPsize=2048 (79) (DF) (ttl
60, id 0, le
n 107)
22:07:06.448558 203.220.41.33.32768 > 203.220.32.107.domain: [udp sum
ok]  46546
+ [1au] A? home.dodo.com.au. ar: . OPT UDPsize=2048 (45) (DF) (ttl 64,
id 0, len
 73)
22:07:06.597993 203.220.32.107.domain > 203.220.41.33.32768: [udp sum
ok]  46546
+ [2a] [1au] A? home.dodo.com.au. www.dodo.com.au. A 203.220.32.118,
home.dodo.c
om.au. CNAME www.dodo.com.au. ar: . OPT UDPsize=2048 (79) (DF) (ttl
60, id 0, le
n 107)


...and so on. i.e. it asks (in this case) for home.dodo.com.au, the
answer comes back with the A record for www.dodo.com.au, followed by
the CNAME for home.dodo.com.au. BIND rerties this a few times and
gives up.


So, my questions are:

What (if anything) is my ISP doing wrong? The response from their tech
support is that their nameserevr is OK.

Why is the resolver so picky? Seems as though both the CNAME and A
record are being returned, its just that the CNAME arrives first.

Oh, and I can't use some other namersever because they have blocked
UDP port 53 as far as I can tell. Note that many hosts resolve just
fine (even CNAAMEs), its just a particular few, such as
home.dodo.com.au and www.google.com.au that don't resolve.

Details:

[root at localhost david]# uname -a
Linux localhost.localdomain 2.4.20-20.9 #1 Mon Aug 18 11:27:43 EDT
2003 i686 athlon i386 GNU/Linux
[root at localhost david]# named -v
BIND 9.2.1
[root at localhost david]# rpm -q glibc
glibc-2.3.2-27.9.7

The nameserver in question is on 203.220.32.107 

Thanks
David Houlder


More information about the bind-users mailing list