有些時候, user 可能會想要手動查詢 DNS 上一些資料, 或者是要看看 DNS 是否有問題, 此時我們最常用的工具就是 nslookup 了, 基本上 nslookup 會根據 /etc/resolv.conf 的內容去找到所要使用的 local DNS server.
使用說明
打入 nslookup 命令後, 會看到 > 提示符號, 此時打 ? 就會出現 nslookup 說明    
Default Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
>?
$Id: nslookup.help,v 8.4 1996/10/25 18:09:41 vixie Exp $
Commands:       (identifiers are shown in uppercase, [] means optional)   
NAME            - print info about the host/domain NAME using default server    
NAME1 NAME2     - as above, but use NAME2 as server    
help or ?       - print info on common commands; see nslookup(1) for details    
set OPTION      - set an option    
    all         - print options, current server and host    
    [no]debug   - print debugging information    
    [no]d2      - print exhaustive debugging information    
    [no]defname - append domain name to each query    
    [no]recurse - ask for recursive answer to query    
    [no]vc      - always use a virtual circuit    
    domain=NAME - set default domain name to NAME    
    srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.    
    root=NAME   - set root server to NAME    
    retry=X     - set number of retries to X    
    timeout=X   - set initial time-out interval to X seconds    
    querytype=X - set query type, e.g., A,ANY,CNAME,HINFO,MX,PX,NS,PTR,SOA,TXT,WKS,SRV,NAPTR    
    port=X      - set port number to send query on    
    type=X      - synonym for querytype    
    class=X     - set query class to one of IN (Internet), CHAOS, HESIOD or ANY    
server NAME     - set default server to NAME, using current default server    
lserver NAME    - set default server to NAME, using initial server    
finger [USER]   - finger the optional USER at the current default host    
root            - set current default server to the root    
ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)    
    -a          -  list canonical names and aliases    
    -h          -  list HINFO (CPU type and operating system)    
    -s          -  list well-known services    
    -d          -  list all records    
    -t TYPE     -  list records of the given type (e.g., A,CNAME,MX, etc.)    
view FILE       - sort an 'ls' output file and view it with more    
exit            - exit the program, ^D also exits    
>^D
Interactive/Noninteractive (交談式/非交談式)
執行 nslookup 時可以直接在後面跟著我們要查詢的資料, 那麼 nslookup 會直接把結果傳回來    
如果只打入 nslookup [enter], 則進入交談模式, 出現提示符號 >, 此時 nslookup 會等待 user input command. 
tung@traveler:~> nslookup www.yohoo.com   
Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
Non-authoritative answer:   
Name:    yohoo.com    
Address:  216.116.98.143    
Aliases:  www.yohoo.com
tung@traveler:~> nslookup   
Default Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
> www.yohoo.com   
Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
Non-authoritative answer:   
Name:    yohoo.com    
Address:  216.116.98.143    
Aliases:  www.yohoo.com
Authoritative/Non-Authoritative
在查詢時有時會出現 Non-authoritative answer, 代表這個答案是由 local DNS 的 cache 中直接讀出來的, 而不是 local DNS 向真正負責這個 domain 的 name server 問來的.
常用的一些 option/command
1. set all    
可以得知目前 nslookup 的一些 default 設定值     
tung@traveler:~> nslookup    
Default Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
> set all   
Default Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
Set options:   
  nodebug         defname         search          recurse    
  nod2            novc            noignoretc      port=53    
  querytype=A     class=IN        timeout=5       retry=4    
  root=a.root-servers.net.    
  domain=ee.ncku.edu.tw    
  srchlist=ee.ncku.edu.tw
2. server dns_server_ip    
表示將內定的 local DNS 換成另一部 server     
Ex: server 140.116.2.6
3. set type=any    
表示在查詢某個 domain name 時, 將和這個 domain name 的一些相關資料一併顯示出來     
> set type=any    
> www.yohoo.com    
Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
Non-authoritative answer:   
www.yohoo.com   canonical name = yohoo.com
Authoritative answers can be found from:   
yohoo.com       nameserver = ns1.netgateway.net    
yohoo.com       nameserver = ns2.netgateway.net    
ns1.netgateway.net      internet address = 216.116.98.7    
ns2.netgateway.net      internet address = 216.116.98.8
在上面的這個例子, 我們除了知道 www.yohoo.com 的 IP 外, 我們還得知了 yohoo.com 是由哪部 name server 在負責的. 因此如果想要知道 www.yohoo.com 真正在 yohoo.com 上的記錄是如何, 而不要有 local DNS cache 中傳回的資料, 我們可以配合使用 server 這個 command 將 default local DNS 改為負責 yohoo.com 的 DNS, 然後再查詢一次    
> server 216.116.98.7    
Default Server:  ns1.netgateway.net    
Address:  216.116.98.7
> www.yohoo.com   
Server:  ns1.netgateway.net    
Address:  216.116.98.7
Name:    yohoo.com   
Address:  216.116.98.143    
Aliases:  www.yohoo.com
4. set type=ptr    
本來要由 IP 反查 domain name時, 在直接打 IP 就行了, 但如果已經下了 type=any 的話, 要由 IP 反查時就沒那麼方便了, 此時 IP 4 個數字要倒著寫, 最後還要加上 in-addr.arpa. 以查 140.116.72.219 為例, 要輸入的就是 219.72.116.140.in-addr.arpa     
tung@traveler:~> nslookup    
Default Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
> 140.116.72.219   
Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
Name:    garfield.ee.ncku.edu.tw   
Address:  140.116.72.219
> set type=any   
> 140.116.72.219    
Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
*** sun4.ee.ncku.edu.tw can't find 140.116.72.219: Non-existent host/domain   
> 219.72.116.140.in-addr.arpa    
Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
219.72.116.140.in-addr.arpa     name = garfield.ee.ncku.edu.tw   
72.116.140.IN-ADDR.ARPA nameserver = sun4.ee.ncku.edu.tw    
sun4.ee.ncku.edu.tw     internet address = 140.116.72.14
另外一個辦法就是先下 set type=ptr 或 set type=a 命令, 脫離 type=any 模式, 再進行 IP 反查 domain name 的 command    
> set typr=ptr    
> 140.116.72.219    
Server:  sun4.ee.ncku.edu.tw    
Address:  140.116.72.14
219.72.116.140.in-addr.arpa     name = garfield.ee.ncku.edu.tw   
72.116.140.IN-ADDR.ARPA nameserver = sun4.ee.ncku.edu.tw    
sun4.ee.ncku.edu.tw     internet address = 140.116.72.14
5. ls domain   
這個命令是要求 name server 將其負責的 zone 內容 show 出來, 這個動作相當於 name server 的整份記錄從 server 端傳回給 nslookup 這個程式, 這種傳回整個 zone 的動作叫作 zone transfer    
> set type=any    
> ee.ncku.edu.tw    
Server:  cs.ncku.edu.tw    
Address:  140.116.2.6
ee.ncku.edu.tw  nameserver = sun4.ee.ncku.edu.tw   
ee.ncku.edu.tw  preference = 1, mail exchanger = eembox.ee.ncku.edu.tw    
ee.ncku.edu.tw  internet address = 140.116.72.15    
ee.ncku.edu.tw    
        origin = sun4.ee.ncku.edu.tw    
        mail addr = root.sun4.ee.ncku.edu.tw    
        serial = 1999033001    
        refresh = 3600 (1H)    
        retry   = 900 (15M)    
        expire  = 3600000 (5w6d16h)    
        minimum ttl = 3600 (1H)    
ee.ncku.edu.tw  nameserver = sun4.ee.ncku.edu.tw    
sun4.ee.ncku.edu.tw     internet address = 140.116.72.14    
eembox.ee.ncku.edu.tw   internet address = 140.116.72.15    
> ls ee.ncku.edu.tw    
Default Server:  cs.ncku.edu.tw    
Address:  140.116.2.6
> [sun4.ee.ncku.edu.tw]   
$ORIGIN ee.ncku.edu.tw.    
@                       1H IN A         140.116.72.15    
hdlib4                  1H IN A         140.116.72.4    
ds114                   1H IN A         140.116.72.114    
hdlib5                  1H IN A         140.116.72.5    
ds115                   1H IN A         140.116.72.115    
yokoyama1               1H IN A         140.116.227.217    
hdlib6                  1H IN A         140.116.72.6    
ds116                   1H IN A         140.116.72.116    
yokoyama2               1H IN A         140.116.227.218    
ds117                   1H IN A         140.116.72.117    
ds120                   1H IN A         140.116.72.120    
ds118                   1H IN A         140.116.72.118    
ds121                   1H IN A         140.116.72.121    
ds119                   1H IN A         140.116.72.119    
ds122                   1H IN A         140.116.72.122    
ds123                   1H IN A         140.116.72.123    
intelab01               1H IN A         140.116.227.39    
.....








