When a DNS lookup returns "server failed" in response to a query, this means that some DNS server queried sent back a response packet with code SERVFAIL
.
Some possible causes of this problem are:
First check the zone's IP entry in the boot file, and make sure it really is the correct IP address for the master server.
Then try to ping the server to check connectivity. If the ping is successful, you need to look further.
Use nslookup
and turn on norecurse
to track the path of the name servers down to the ultimate source of the SERVFAIL
code.
The source of the "server failed" error can be any of the name servers that the resolver is configured to query (typically, it originates in the local name server–see the logical MULTINET_NAMESERVERS
), any forwarders configured, any of the root name servers, or any name servers in the path of delegation from the root down to the official name servers for the zone in question.
Use nslookup
to walk through all possible name servers until you locate the source of the problem.
Once you find the name server that is generating the SERVFAIL error, what can you do?
This section contains an example of how to track down the source of a "Server failed" error message on servfail.calvin.yoyodyne.com.
$ multinet nslookup servfail.calvin.yoyodyne.com. Server: HQ.TGV.COM Address: 161.44.128.70 *** HQ.TGV.COM can't find SERVFAIL.calvin.yoyodyne.com.: Server failed $
Just because HQ.TGV.COM reported SERVFAIL, that does not necessarily indicate the source of the "Server failed" message.
$ sho log multinet_nameservers ! get resolver's list of nameservers "MULTINET_NAMESERVERS" = "161.44.128.70" (LNM$SYSTEM_TABLE)
DOMAIN-NAME-SERVICE.CONFIGURATION
) on your name server for any forwarders. Check all forwarders as well. In this example, name server 161.44.128.70 does not happen to have any forwarders.
nslookup
. Turn on norecurse
. Walk down through the DNS. (You may have to double back.)
$ multinet nslookup Default Server: catbert.ABC.com Address: 161.44.128.71 > set norecurse > servfail.calvin.yoyodyne.com. Server: catbert.ABC.com Address: 161.44.128.71 Name: servfail.calvin.yoyodyne.com Served by: - treefrog.com 128.196.128.234, 128.196.128.233 yoyodyne.com - NS1.WESTNET.NET 128.138.213.13 yoyodyne.com - rip.psg.com 147.28.0.39 yoyodyne.com
In the example, the SERVFAIL is not coming straight from the local name server, 161.44.128.71. When norecurse
is on, the error does not occur.
> server treefrog.com. Default Server: treefrog.com Addresses: 128.196.128.234, 128.196.128.233 > servfail.calvin.yoyodyne.com. Server: treefrog.com Addresses: 128.196.128.234, 128.196.128.233 Name: servfail.calvin.yoyodyne.com Served by: - serv2.calvin.yoyodyne.com 192.192.192.2 servfail.calvin.yoyodyne.com - hobbes.aces.net 192.192.192.1 servfail.calvin.yoyodyne.com
The example shows how to go down the path of delegation. The problem may have come from any another name sever in the delegation path between the root and servfail.calvin.yoyodyne.com.
> server serv2.calvin.yoyodyne.com. Default Server: serv2.calvin.yoyodyne.com Address: 192.192.192.2 > servfail.calvin.yoyodyne.com. Server: serv2.calvin.yoyodyne.com Address: 192.192.192.2 *** serv2.calvin.yoyodyne.com can't find servfail.calvin.yoyodyne.com.: Server failed
This is it!
(If the "Server failed" error had not occured here, you would have had to keep trying by querying other servers.)
> server hobbes.aces.net. *** Can't find address for server hobbes.aces.net.: Non-authoritative answer
This answer occurs because norecurse
is on.
norecurse
temporarily. In this example, use the IP address of hobbes.aces.net instead.
> server 192.192.192.1 Default Server: hobbes.ACES.NET Address: 192.192.192.1 > servfail.calvin.yoyodyne.com. Server: hobbes.ACES.NET Address: 192.192.192.1 hobbes.ACES.NET can't find servfail.calvin.yoyodyne.com.: No response from server
hobbes.aces.net isn't responding, and servfail.calvin.yoyodyne.com is returning SERVFAIL. Maybe serv2.calvin.yoyodyne.com is a secondary for the zone and has exipred it, or maybe serv2.calvin.yoyodyne.com has a bad root name server cache.
> server serv2.calvin.yoyodyne.com. Default Server: serv2.calvin.yoyodyne.com Address: 192.192.192.2 > set TYPE=any > . Server: serv2.calvin.yoyodyne.com Address: 192.192.192.2 Non-authoritative answer: (root) nameserver = F.ROOT-SERVERS.NET (root) nameserver = G.ROOT-SERVERS.NET (root) nameserver = A.ROOT-SERVERS.NET (root) nameserver = H.ROOT-SERVERS.NET (root) nameserver = B.ROOT-SERVERS.NET (root) nameserver = C.ROOT-SERVERS.NET (root) nameserver = D.ROOT-SERVERS.NET (root) nameserver = E.ROOT-SERVERS.NET (root) nameserver = I.ROOT-SERVERS.NET (root) origin = A.ROOT-SERVERS.NET mail addr = HOSTMASTER.INTERNIC.NET serial = 1995092000 refresh = 10800 (3 hours) retry = 900 (15 mins) expire = 604800 (7 days) minimum ttl = 86400 (1 days) Authoritative answers can be found from: (root) nameserver = F.ROOT-SERVERS.NET (root) nameserver = G.ROOT-SERVERS.NET (root) nameserver = A.ROOT-SERVERS.NET (root) nameserver = H.ROOT-SERVERS.NET (root) nameserver = B.ROOT-SERVERS.NET (root) nameserver = C.ROOT-SERVERS.NET (root) nameserver = D.ROOT-SERVERS.NET (root) nameserver = E.ROOT-SERVERS.NET (root) nameserver = I.ROOT-SERVERS.NET F.ROOT-SERVERS.NET internet address = 39.13.229.241 G.ROOT-SERVERS.NET internet address = 192.112.36.4 A.ROOT-SERVERS.NET internet address = 198.41.0.4 H.ROOT-SERVERS.NET internet address = 128.63.2.53 B.ROOT-SERVERS.NET internet address = 128.9.0.107 C.ROOT-SERVERS.NET internet address = 192.33.4.12 D.ROOT-SERVERS.NET internet address = 128.8.10.90 E.ROOT-SERVERS.NET internet address = 192.203.230.10 I.ROOT-SERVERS.NET internet address = 192.36.148.17
This looks fine. Otherwise, turn on debug
or d2
.
> rs.internic.net. Server: serv2.calvin.yoyodyne.com Address: 192.192.192.2 Authoritative answers can be found from: INTERNIC.NET nameserver = RS0.INTERNIC.NET INTERNIC.NET nameserver = ds0.INTERNIC.NET INTERNIC.NET nameserver = noc.cerf.NET RS0.INTERNIC.NET internet address = 198.41.0.5 ds0.INTERNIC.NET internet address = 198.49.45.10 noc.cerf.NET internet address = 192.153.156.22
This name server looks good, so now you can assume there's something wrong with the servfail.calvin.yoyodyne.com zone.
(In this example, you would need to look on serv2.calvin.yoyodyne.com to find out more.)