9.3.0rc2 and External Queries

Kevin Darcy kcd at daimlerchrysler.com
Mon Aug 2 23:45:58 UTC 2004


In order to troubleshoot a caching nameserver (technically, a "caching 
resolver"), you need to step through the algorithms that the resolver 
goes through. The first thing it does is read the hints file and then 
sends a non-recursive query for the root zone NS records to one of the 
root servers listed in the hints file. It then stores the results of 
that "priming" query for future reference. So mimic the nameserver and 
send a non-recursive root NS query (using "dig", that would be "dig 
+norec . ns @xxx.xxx.xxx.xxx") to one of the hints-file servers. If it 
doesn't work, try another server. If *none* of them work, then you have 
some sort of basic connectivity problem that you need to fix before your 
caching resolver will work. Maybe something in your setup is discarding 
all DNS packets (which are usually UDP). Or maybe your upstream provider 
is blocking or discarding for some reason.

If you are able to do the root NS query, that proves that you have at 
least _some_ connectivity to the Internet DNS. Next, try mimicing what 
the caching resolver does for a regular query. Send a non-recursive 
A-record query for some normal name -- you could use your 
"www.yahoo.com" test case if you want -- to the root servers. From a 
root server you should get back a referral (barring the exceptional case 
where that "normal" name happens to be the name of a server which hosts 
a TLD zone). Follow the referral (if any) down to the next level of the 
hierarchy, and send the same query to one of those servers. Repeat until 
you finally get an answer, an NXDOMAIN response (which means the name 
doesn't exist), a referral, or some response code besides NOERROR or 
NXDOMAIN. Note that the "+trace" option to "dig" is a convenient way to 
follow that whole algorithm. If you get to a point where you can't reach 
*any* of the delegated nameservers for a particular level of the 
hierarchy, then again, you have some sort of basic connectivity problem, 
although in this case, since it is specific to certain addresses or 
address ranges, I'd be more likely to suspect a routing or firewall 
issue (yes, I know you said you stopped ipchains, but circumstantial 
evidence is circumstantial evidence all the same...)

It's possible that while tracing queries in this way you may run across 
a level of the hierarchy where all of the delegated servers are giving 
error responses, e.g. SERVFAIL, REFUSED or something like that. This 
indicates a problem at the remote end, and is nothing you can fix in 
your configuration, unless the other side has some sort of weird 
source-port or source-address restriction, which you might be able to 
work around...

- Kevin

Scott Moseman wrote:

>I setup 9.3.0rc2 to be a secondary nameserver for some domains.
>It would resolve those domains just fine, but nothing external.
>So I followed the documentation and did a very basic cache-only
>setup (see my named.conf below), and external queries still do
>not work properly.  Any ideas?
>
>PS- I stopped ipchains to make sure it was not the problem.
>
>
># /usr/local/sbin/named -v
>BIND 9.3.0rc2
>
># cat /etc/named.conf
>
>options {
>        directory "/var/named";
>};
>
>zone "." {
>        type hint;
>        file "named.root";
>};
>
>zone "0.0.127.in-addr.arpa" {
>        type master;
>        file "db.0.0.127.in-addr.arpa";
>        allow-update { none; };
>        notify no;
>};
>
># cat /etc/resolv.conf 
>nameserver [my_ip_address]
>domain [my_domain_name]
>
># /etc/init.d/ipchains stop
># /usr/local/sbin/named -c /etc/named.conf
>
># nslookup -sil www.yahoo.com
>;; connection timed out; no servers could be reached
>
>
>Thanks,
>Scott Moseman
>
>
>
>
>
>  
>




More information about the bind-users mailing list