2011年11月6日 星期日

DNS查詢指令

測試 DNS 的程式有很多,我們先來使用最簡單的 host 吧!然後還有 nslookup 及 dig 哩!

  • host
[root@www ~]# host [-a] FQDN [server]
[root@www ~]# host -l domain [server]
選項與參數:
-a :代表列出該主機所有的相關資訊,包括 IP、TTL 與除錯訊息等等
-l :若後面接的那個 domain 設定允許 allow-transfer 時,則列出該 domain 
     所管理的所有主機名稱對應資料!
server:這個參數可有可無,當想要利用非 /etc/resolv.conf 內的  DNS 主機
        來查詢主機名稱與 IP 的對應時,就可以利用這個參數了!

# 1. 使用預設值來查出 linux.vbird.org 的 IP 
[root@www ~]# host linux.vbird.org
linux.vbird.org has address 140.116.44.180             <==這是 IP
linux.vbird.org mail is handled by 10 linux.vbird.org. <==這是 MX (後續章節說明)

# 2. 查出 linux.vbird.org 的所有重要參數
[root@www ~]# host -a linux.vbird.org
Trying "linux.vbird.org"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56213
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:
;linux.vbird.org.               IN      ANY

;; ANSWER SECTION:
linux.vbird.org.        145     IN      A       140.116.44.180

;; AUTHORITY SECTION:
vbird.org.              145     IN      NS      dns.vbird.org.
vbird.org.              145     IN      NS      dns2.vbird.org.

Received 86 bytes from 168.95.1.1#53 in 15 ms  <==果然是從 168.95.1.1 取得的資料
# 看樣子,不就是 dig 的輸出結果?所以,我們才會說,使用 dig 才是王道!

# 3. 強制以 139.175.10.20 這部 DNS 主機來查詢
[root@www ~]# host linux.vbird.org 139.175.10.20
Using domain server:
Name: 139.175.10.20
Address: 139.175.10.20#53
Aliases:

linux.vbird.org has address 140.116.44.180
linux.vbird.org mail is handled by 10 linux.vbird.org.
看到最後一個範例,有注意到上面輸出的特殊字體部分嗎?很多朋友在測試自己的 DNS 時,常常會『指定到錯誤的 DNS 查詢主機』了~因為他們的 /etc/reslov.conf 忘記改,所以老是找不到自己設定的資料庫 IP 資料。所以你要仔細看啊!
# 4. 找出 vbird.org 領域的所有主機對應
[root@www ~]# host -l vbird.org
; Transfer failed.
Host vbird.org not found: 9(NOTAUTH)
; Transfer failed. <==竟然失敗了!請看底下的說明!
怎麼會無法回應呢?這樣的回應是因為管理 vbird.org 領域的 DNS 並不許我們的領域查詢,畢竟我們不是 vbird.org 的系統管理員,當然沒有權限可以讀取整個 vbird.org 的領域設定囉!這個『 host -l 』是用在自己的 DNS 伺服器上,本章稍後談到伺服器設定後,使用這個選項就能夠讀取相關的資料了。

在台大實驗室的nameserver 140.112.2.2中做查詢
master@eroom28:/home/stayhigh$ host -l 140.112.2.2
2.2.112.140.in-addr.arpa domain name pointer ntu3.ntu.edu.tw.


  • nslookup
[root@www ~]# nslookup [FQDN] [server]
[root@www ~]# nslookup
選項與參數:
1. 可以直接在 nslookup 加上待查詢的主機名稱或者是 IP ,[server] 可有可無;
2. 如果在 nslookup 後面沒有加上任何主機名稱或 IP ,那將進入 nslookup 的查詢功能
   在 nslookup 的查詢功能當中,可以輸入其他參數來進行特殊查詢,例如:
   set type=any :列出所有的資訊『正解方面設定檔』
   set type=mx  :列出與 mx 相關的資訊!

# 1. 直接搜尋 mail.ksu.edu.tw 的 IP 資訊 
[root@www ~]# nslookup mail.ksu.edu.tw
Server:         168.95.1.1
Address:        168.95.1.1#53  <==還是請特別注意 DNS 的 IP 是否正確!

Non-authoritative answer:
Name:   mail.ksu.edu.tw
Address: 120.114.100.20        <==回報 IP 給你囉!
nslookup 可單純的將 hostname 與 IP 對應列出而已,不過,還是會將查詢的 DNS 主機的 IP 列出來的! 如果想要知道更多詳細的參數,那可以直接進入 nslookup 這個軟體的操作畫面中,如下範例:
[root@www ~]# nslookup  <==進入 nslookup 查詢畫面
> 120.114.100.20         <==執行反解的查詢
> www.ksu.edu.tw         <==執行正解的查詢
# 上面這兩個僅列出正反解的資訊,沒有啥了不起的地方啦!
> set type=any           <==變更查詢,不是僅有 A,全部資訊都列出來
> www.ksu.edu.tw
Server:         168.95.1.1
Address:        168.95.1.1#53

Non-authoritative answer:
Name:   www.ksu.edu.tw
Address: 120.114.100.101  <==這是答案

Authoritative answers can be found from: <==這是相關授權 DNS 說明
ksu.edu.tw      nameserver = dns2.ksu.edu.tw.
ksu.edu.tw      nameserver = dns1.ksu.edu.tw.
dns1.ksu.edu.tw internet address = 120.114.50.1
dns2.ksu.edu.tw internet address = 120.114.150.1
> exit <==離開吧!皮卡丘
在上面的案例當中,請注意:
如果你在 nslookup 的查詢畫面當中,輸入 set type=any 或其他參數, 那麼就無法再進行反解的查詢了!這是因為 any 或者是 mx 等等的標誌都是記錄在正解 zone 當中的緣故

  • dig (未來的主流,請愛用他!)
[root@www ~]# dig [options] FQDN [@server]
選項與參數:
@server :如果不以 /etc/resolv.conf 的設定來作為 DNS 查詢,可在此填入其他的 IP
options:相關的參數很多,主要有 +trace, -t type 以及 -x 三者最常用
  +trace :就是從 . 開始追蹤,在 19.1.2 裡面談過了!回頭瞧瞧去!
  -t type:查詢的資料主要有 mx, ns, soa 等類型,相關類型 19.4 來介紹
  -x     :查詢反解資訊,非常重要的項目!

# 1. 使用預設值查詢 linux.vbird.org 吧!
[root@www ~]# dig linux.vbird.org
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> linux.vbird.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37415
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0

;; QUESTION SECTION:     <==提出的問題的部分
;linux.vbird.org.               IN      A

;; ANSWER SECTION:       <==主要的回答階段
linux.vbird.org.        600     IN      A       140.116.44.180

;; AUTHORITY SECTION:    <==其他與此次回答有關的部分
vbird.org.              600     IN      NS      dns.vbird.org.
vbird.org.              600     IN      NS      dns2.vbird.org.

;; Query time: 9 msec
;; SERVER: 168.95.1.1#53(168.95.1.1)
;; WHEN: Thu Aug  4 14:12:26 2011
;; MSG SIZE  rcvd: 86
在這個範例當中,我們可以看到整個顯示出的訊息包括有幾個部分:
  • QUESTION(問題):顯示所要查詢的內容,因為我們是查詢 linux.vbird.org 的 IP,所以這裡顯示 A (Address);
  • ANSWER(回答):依據剛剛的 QUESTION 去查詢所得到的結果,答案就是回答 IP 啊!
  • AUTHORITY(驗證):由這裡我們可以知道 linux.vbird.org 是由哪部 DNS 伺服器所提供的答案! 結果是 dns.vbird.org 及 dns2.vbird.org 這兩部主機管理的。另外,那個 600 是啥咚咚?圖 19.1-4 提到過的流程,就是允許查詢者能夠保留這筆記錄多久的意思 (快取),在 linux.vbird.org 的設定中,預設可以保留 600 秒。
# 2. 查詢 linux.vbird.org 的 SOA 相關資訊吧!
[root@www ~]# dig -t soa linux.vbird.org
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> -t soa linux.vbird.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57511
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;linux.vbird.org.               IN      SOA

;; AUTHORITY SECTION:
vbird.org.              600     IN      SOA     dns.vbird.org. root.dns.vbird.org.
 2007091402 28800 7200 720000 86400

;; Query time: 17 msec
;; SERVER: 168.95.1.1#53(168.95.1.1)
;; WHEN: Thu Aug  4 14:15:57 2011
;; MSG SIZE  rcvd: 78
由於 dig 的輸出資訊實在是太豐富了,又分成多個部分去進行回報,因此很適合作為 DNS 追蹤回報的一個指令呢! 你可以透過這個指令來瞭解一下你所設定的 DNS 資料庫是否正確,並進行除錯喔! ^_^!此外,你也可以透過『 -t type 』 的功能去查詢其他伺服器的設定值,可以方便你進行設定 DNS 伺服器時的參考喔!正解查詢完畢,接下來玩一玩反解吧!
# 3. 查詢 120.114.100.20 的反解資訊結果
[root@www ~]# dig -x 120.114.100.20
; <<>> DiG 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 <<>> -x 120.114.100.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60337
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;20.100.114.120.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
20.100.114.120.in-addr.arpa. 3600 IN    PTR     mail-out-r2.ksu.edu.tw.
20.100.114.120.in-addr.arpa. 3600 IN    PTR     mail-smtp-proxy.ksu.edu.tw.
20.100.114.120.in-addr.arpa. 3600 IN    PTR     mail.ksu.edu.tw.

;; AUTHORITY SECTION:
100.114.120.in-addr.arpa. 3600  IN      NS      dns1.ksu.edu.tw.
100.114.120.in-addr.arpa. 3600  IN      NS      dns3.twaren.net.
100.114.120.in-addr.arpa. 3600  IN      NS      dns2.ksu.edu.tw.

;; ADDITIONAL SECTION:
dns1.ksu.edu.tw.        3036    IN      A       120.114.50.1
dns2.ksu.edu.tw.        2658    IN      A       120.114.150.1
dns3.twaren.net.        449     IN      A       211.79.61.47

;; Query time: 29 msec
;; SERVER: 168.95.1.1#53(168.95.1.1)
;; WHEN: Thu Aug  4 14:17:58 2011
;; MSG SIZE  rcvd: 245
反解相當有趣!從上面的輸出結果來看,反解的查詢目標竟然從 120.114.100.20 變成了 20.100.114.120.in-addr.arpa. 這個模樣~這是啥鬼東西?不要怕,這等我們講到反解時再跟大家進一步解釋。 你現在要知道的是,反解的查詢領域名,跟正解不太一樣即可,尤其是那個怪異的 in-addr.arpa. 結尾的資料,可以先記下來。


  • whois
[root@www ~]# whois [domainname]  <==注意啊!是 domain 而不是 hostname
[root@www ~]# whois centos.org
[Querying whois.publicinterestregistry.net]
[whois.publicinterestregistry.net]
# 這中間是一堆 whois 伺服器提供的訊息告知!底下是實際註冊的資料
Domain ID:D103409469-LROR
Domain Name:CENTOS.ORG
Created On:04-Dec-2003 12:28:30 UTC
Last Updated On:05-Dec-2010 01:23:25 UTC
Expiration Date:04-Dec-2011 12:28:30 UTC  <==記載了建立與與失效的日期
Sponsoring Registrar:Key-Systems GmbH (R51-LROR)
Status:CLIENT TRANSFER PROHIBITED
Registrant ID:P-8686062
Registrant Name:CentOS Domain Administrator
Registrant Organization:The CentOS Project
Registrant Street1:Mechelsesteenweg 170
# 底下則是一堆聯絡方式,鳥哥將它取消了,免得多佔篇幅~
whois 這個指令可以查詢到當初註冊這個 domain 的使用者的相關資訊。不過,由於近年來很多網路資訊安全的問題,這個 whois 所提供的資訊真的是太詳細了,為了保護使用者的隱私權,所以,目前這個 whois 所查詢到的資訊已經不見得是完全正確的了~而且,在顯示出 whois 的資訊之前,還會有一段宣告事項的告知呢~ ^_^y
如果使用 whois 來檢查鳥哥所註冊的合法 domain 會是如何呢?看看:
[root@www ~]# whois vbird.idv.tw
[Querying whois.twnic.net]
[whois.twnic.net]           <==這個 whois 伺服器查到的資料
Domain Name: vbird.idv.tw   <==這個 domain 的資訊

   Contact:                 <==聯絡者的聯絡方式
      Der-Min Tsai
      vbird@pc510.ev.ncku.edu.tw

   Record expires on 2018-09-17 (YYYY-MM-DD)
   Record created on 2002-09-13 (YYYY-MM-DD)

Registration Service Provider: HINET
呵呵!這個 domain 會在 2018/09/17 失效的意思啦!報告完畢!無論如何,我們都可以透過 nslookup, host, dig 等等的指令來查詢主機名稱與 IP 的對應,這些指令的用法可以請你以 man command 來查詢更多的用法喔!






AAAA

可將DNS網域名稱對應到IPv6的128位元位址。
e.g.

twnic.net.tw.  86400  IN  AAAA  3ffe: :bbb:93:5


上一步回到第一頁下一步

DNS資源紀錄(Resource Record)介紹

DNS server內的每一個網域名稱都有自己的檔案,這個檔案一般會稱為區域檔案 (zone file),例如之前所提到的”named.ca”或”named.local” 檔案…等等。區域檔案是由多個記錄組成的,每一個記錄稱為資源記錄(Resource Record,簡稱RR)。當在設定DNS名稱解析、反向解析及其他的管理目的時,您需要使用不同類型的RR,底下將介紹常用的RR類型及表示法。

類型


SOA

Start Of Authority,這種 record 放在 zone file 一開始的地方,每一個記錄檔只能有一個 SOA,而且一定是檔案中第一個“記錄”,它描述這個 zone 負責的 name server,version number…等資料,以及當 slave server 要備份這個 zone 時的一些參數。 緊接在 SOA 後面指定了這個區域的授權主機和管理者的信箱,這裡分別是 "school.edu.tw" 和" root.school.edu.tw",也就是school.edu.tw主機和 root 的信箱。這裡要注意的是我們以"root.school.edu.tw"代表"root@school.edu.tw"
e.g.

@    IN      SOA          school.edu.tw. root.school.edu.tw.  ( 
                                    1999051401      ; Serial 
                                    3600            ; Refresh 
                                    300             ; Retry 
                                    3600000         ; Expire 
                                    3600 )          ; Minimum 
      
在兩個括號中間的選項表示SOA的設定內容,底下會有更詳細的說明。

NS

name server,用來指定操作的DNS伺服器主機名稱,需注意的是不可以IP位址表示。
e.g.

IN  NS   dns.twnic.net.tw.
      

A

address,將DNS網域名稱對應到IPv4的32位元位址。
e.g.

server  IN  A  140.123.102.10
      

AAAA

可將DNS網域名稱對應到IPv6的128位元位址。
e.g.

twnic.net.tw.  86400  IN  AAAA  3ffe: :bbb:93:5
      

PTR

pointer,定義某個 IP 對應的 domain name,即將 IP 位址轉換成主機的FQDN。
e.g.

20   IN  PTR  mail.twnic.net.tw.
      

CNAME

canonical name,可為同一部主機設定許多別名,例如 mix.twnic.net.tw的別名可為 www.twnic.net.tw和 ftp.twnic.net.tw,因此所設定的別名都會連至同一部伺服器。
e.g.

www  IN  CNAME  mix
      

MX

mail exchanger,設定區域中擔任郵件伺服器的主機,所有要送往那部機器的 mail 都要經過 mail exchanger 轉送。而數字則是該主機郵件傳遞時的優先次序,此值越低表示有越高的郵件處理優先權。
e.g.

server  IN   MX  10  mail.twnic.net.tw.    
      

SOA設定內容說明

SOA record,以之前例子來看,其中 @ 這個符號是縮寫,代表 named.conf 中這個 zone file 所對應的 zone。 SOA 後面的兩個參數是指這個 zone file 是在哪部主機 (school.edu.tw)定義的,以及這個 zone file 的負責人 (注意是寫成 root.school.edu.tw),然後是用括號括起來的 5 個參數, 分別由底下說明。

Serial



Refresh

slave server 每隔這段時間(秒),就會檢查 master server 上的 serial number。不過這裡會發生一個問題就是,在 master server 在 update data 完成到 slave server 來檢查時再 update 可能還有 好一段時間,因此這段期間 master/slave DNS server間 zone files 就可能出現不一致。所以在Bind較新的版本中便加入"notify"功能,使用者在 "named.conf" 設定中在需要的 zone 中加入"notify"的設定,則 master server在 update 完成某個 zone file 的 data 後便會主動發個訊息(NOTIFY),藉以通知該其它的 slave servers,因此如果 slave servers 也有支援這個"notify"功能時,接下來 slave servers 馬上就可以做 zone transfer 來update data。
e.g.

zone "twnic.com.tw" { 
 type master;
 file "twnic.hosts";
 notify yes;
 also-notify { 192.168.10.1; }; //指定slave server的IP位址
};
      

Retry

當 slave server 無法和 master 進行 serial check時,要每隔幾秒 retry 一次。

Expire

當時間超過 Expire 所定的秒數而 slave server 都無法和 master 取得連絡,那麼 slave 會刪除自己的這份 copy。

Minimum

代表這個 zone file 中所有 record 的內定的 TTL 值,也就是其它的 DNS server cache 這筆 record 時,最長不應該超過這個時間。
上一步回到第一頁下一步

沒有留言:

張貼留言