Inside Windows Server 1002003 [Electronic resources]

Addison Wesley

نسخه متنی -صفحه : 245/ 62
نمايش فراداده

Examining Zones with Nslookup

When you run into problems with DNS, the Nslookup utility is the tool of choice for tracking down problems. Nslookup enables you to perform selective zone transfers so that you can examine resource records in the zone. You can also use Nslookup to verify that a DNS server exists, find out what zone it manages, verify that the DNS server has a particular resource record, and browse the resource records as if you were browsing a directory.

Nslookup has two modes: Interactive and Non-Interactive. If you run Nslookup and specify parameters on the command line, you run the utility in Non-Interactive mode. To see the IP address for www.guam.net and the name servers that are authoritative for the zone that holds the A record, for example, issue the Nslookup command followed by the name of the server as follows:

C:\>nslookup www.guam.net c.root-servers.net.
4.33.192.in-addr.arpa   nameserver = NS.PSI.NET
NS.PSI.NET      internet address = 192.33.4.10
Name:    www.guam.net
Served by:
- NS.GUAM.net
198.81.233.2
GUAM.net

To use the Interactive mode, just enter Nslookup with no parameters.

When you enter Interactive mode, you get a listing of the default name server followed by a command prompt, >:

U:\>nslookup
Default Server:  dns1.primenet.net
Address:  206.165.5.10
>

From the command prompt, enter a question mark (?) to see the list of Nslookup commands.

If you want to see the default settings for Nslookup, use set all. (You cannot just type set like a DOS command. This makes Nslookup think that you are querying for a server named set.) For example,

> set all
Default Server:  dns1.primenet.net
Address:  206.165.5.10
Set options:
nodebug       defname       search        recurse
nod2          novc          noignoretc    port=53
querytype=A   class=IN      timeout=2     retry=3
root=a.root-servers.net.        domain=company.com
srchlist=company.com

The following sections cover the most common Nslookup interactive commands and Set parameters.

server

Use this command to change the name of the DNS server that fields the Nslookup queries. Be sure to use FQDNs with a trailing dot. For example, if your default name server is dns1.company.com but you want to troubleshoot another DNS server, dns02.company.com, you would enter the following:

> server dns02.company.com.
Default server: dns02.company.com
Address: 10.5.1.10

lserver

The lserver command works like server, but always uses the default name server. This enables you to escape from a dead end when you use the server command to get onto a name server that is not authoritative and cannot resolve another server name. If you use server to change to a name server that has no zone file, you won't be able to use the server command to go to another server because it cannot resolve the new host name. The lserver command gets you back to your home DNS server by using the original server to resolve the name.

root

This command works like the server command to change the default DNS server, but it selects the name from the top of the server list in the CACHE.DNS file. This is usually a public TLD root server. If the server is a private root server, the file would contain one or more internal name servers.

ls

This command lists the resource records in a particular zone. In essence, ls does a zone transfer of the selected record type. You can limit the scope of the transfer by specifying a record type using the t switch. Here is an example showing the host records (A records) in the company.com zone:

> ls -t a company.com.
[dc01.company.com]
company.com.                   A      10.1.1.1
gc._msdcs.company.com.         A      10.1.1.1
dns01.branch1.company.com.     A      10.3.1.1
dc01.company.com.              A      10.1.1.1
nt30.company.com.              A      10.1.1.201

If you specify any as the record type, or use the d switch with ls, Nslookup returns the entire zone file. Use caution: This can be quite an extensive list on some name servers. Use the indirection pipe (>) to save the output of ls to a file.

You may be thinking that ls represents a security problem. You would be correct. Because ls works by performing a zone transfer, you can block it by controlling the servers that are allowed to pull a zone transfer. See "Enabling Zone Transfers and Update Notifications" earlier in this chapter for details.

set [no]debug

When debug is set, the report from an interactive command includes debugging information. This debugging information shows the results of a query including intermediate name servers included in the search. The following example is the result of a recursive query for roswellnm.org:

> set debug
> roswellnm.org.
Server:  proxy7.az.farlap.com
Address:  24.1.208.35
------------
Got answer:
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags:  response, auth. answer, want recursion, recursion avail.
questions = 1,  answers = 1,  authority records = 3,  additional = 3
QUESTIONS:
roswellnm.org, type = A, class = IN
ANSWERS:
->  roswellnm.org
internet address = 209.35.62.148
ttl = 900 (15 mins)
AUTHORITY RECORDS:
->  roswellnm.org
nameserver = dns1.interland.net
ttl = 0 (0 secs)
ADDITIONAL RECORDS:
->  dns1.interland.net
internet address = 64.224.20.132
ttl = 900 (15 mins)
------------
Name:    roswellnm.org
Address:  209.35.62.148

The debug option is especially useful for locating improper referrals caused by incorrect delegations.

Set [no]d2

Set this parameter if you aren't satisfied knowing the results of the query and you also need to know the exact format of the query itself. Here is the additional d2 information from a roswellnm.org lookup:

> set d2
> roswellnm.org.

;truncated to show differences from standard debug listing ------------ SendRequest(), len 32 HEADER: opcode = QUERY, id = 10, rcode = NOERROR header flags: query, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: Roswellnm.org, type = A, class = IN

set [no]defname

You may have noticed a trailing period at the end of each server name in the example lookups. The trailing dot tells Nslookup that the name is fully qualified. If you do not include the period, Nslookup appends the default domain name for the client. If you have a hard time remembering to include the trailing period, you can use set nodefname to tell Nslookup not to append the domain name.

set [no]recurse

If you want Nslookup queries to emulate a DNS server rather than a DNS client, queries should be configured as iterative and not recursive. Use this switch to change the query type as needed.

set querytype

You can limit or change the scope of a query by setting a certain record type. If you want to query for the MX records on a name server, for example, give the following command:

> set type=mx
> roswellnm.org.
Server:  proxy7.az.farlap.com
Address:  24.1.208.35
Non-authoritative answer:
roswellnm.org   MX preference = 5, mail exchanger = mail.roswellnm.org
roswellnm.org   nameserver = DNS1.INTERLAND.NET
mail.roswellnm.org      internet address = 209.35.103.30
DNS1.INTERLAND.NET      internet address = 64.224.20.132