Dig 命令讲解
原文地址:https://www.jianshu.com/p/71f61652ec23
DNS 命令輸出格式
輸入 dig rss.newyingyong.cn 命令,通常返回
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49814;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 17;; QUESTION SECTION: ;rss.newyingyong.cn. IN A;; ANSWER SECTION: rss.newyingyong.cn. 600 IN A 139.129.23.162;; AUTHORITY SECTION: newyingyong.cn. 86398 IN NS dns10.hichina.com. newyingyong.cn. 86398 IN NS dns9.hichina.com.;; ADDITIONAL SECTION: dns9.hichina.com. 3490 IN A 140.205.81.15 dns9.hichina.com. 3490 IN A 140.205.81.25;; Query time: 5 msec ;; SERVER: 10.202.72.116#53(10.202.72.116) ;; WHEN: Sat Jul 01 11:00:38 CST 2017 ;; MSG SIZE rcvd: 369各個返回參數說明下:
DNS 服務器記錄類型
默認 dig rss.newyingyong.cn 返回的是 A 記錄類型,其他類型還包括 MX、NS、SOA 等,我們可以使用 dig -t a/mx/soa/mx rss.newyingyong.cn 進行查詢。
其中 +noall +answer 表示返回簡短信息,這里表示查詢 A 記錄。
注意,這里返回 2 個 A 記錄,這相當于 DNS 均衡,比如瀏覽器客戶端查詢 www.weibo.com 域名得到兩個 A 記錄,然后連接其中的一個 IP 地址對應的 WEB 服務器,假如發現連接不上,可以使用另外一個地址連接。
比如在萬網域名管理后臺,可以給同一個域名添加兩條 A 記錄,相當于實現了域名負載均衡。
注意假如用戶輸入 dig -t ns www.weibo.com 是查詢不出 NS 任何記錄的,原因在于只有一級域名(或者頂級域名)才有 NS 記錄,通過 FQDN 是查詢不出 NS 信息的,所以要輸入 dig -t ns weibo.com ,返回:
;; ANSWER SECTION: weibo.com. 9962 IN NS ns3.sina.com.cn. weibo.com. 9962 IN NS ns2.sina.com.cn. weibo.com. 9962 IN NS ns1.sina.com.cn. weibo.com. 9962 IN NS ns4.sina.com. weibo.com. 9962 IN NS ns4.sina.com.cn. weibo.com. 9962 IN NS ns3.sina.com.;; ADDITIONAL SECTION: ns1.sina.com.cn. 14162 IN A 202.106.184.166 ns2.sina.com.cn. 14906 IN A 61.172.201.254 ns3.sina.com. 26496 IN A 61.172.201.254 ns3.sina.com.cn. 9714 IN A 123.125.29.99 ns4.sina.com. 24154 IN A 123.125.29.99 ns4.sina.com.cn. 9733 IN A 121.14.1.22微博的權威服務器是微博自己建立的,有 6 個名稱和 IP 地址:
有這么多地址,主要是防止單點問題,比如某個 NS 服務器連接不上,可以連接其他 NS 服務器
上述的 NS IP 地址屬于不同的運營商,不同的運營商可能會查詢對應的 NS 服務器,原因就是加速查詢。
這里返回的 CNAME 表示查詢 www.baidu.com 的信息其實是 www.a.shifen.com 返回的 A 記錄。
CNAME 的存在原因:
某個域名(A)可能會下線,但是這些域名可能還是被訪問到,為了避免不友好的提示,可以將這個域名 cname 到另外個域名(B),這樣訪問 B 相當于返回 A。
很多公司項目可能有很多個域名,但是指定的 IP 地址可能每幾個,一旦 IP 地址變化,可能要修改每個域名的 DNS 信息。假如這些域名 cname 到某個特定的域名,那么修改域名信息的時候就會非常方便。
返回 MX 記錄,注意這里不能輸入 dig -t mx rss.newyingyong.cn ,因為 MX 記錄一般配置在一級域名下。
DNS 迭代查詢的具體流程
對于客戶端(比如瀏覽器)查詢本地域名 DNS 信息的時候,是遞歸查詢的方式。而本地 DNS 服務器為了獲取到某個域名的 DNS 信息,會使用迭代的方式(一步步詢問)。通過 dig +trace blog.newyingyong.cn 來進行了解
本地 DNS 服務器首先查詢根域名服務器(10.202.72.118),得到 13 組根域名服務器中的一個,并返回對應某個根域名的 NS 服務器。
根域名NS 服務器(192.36.148.17)說并不知道 blog.newyingyong.cn 頂級域名的具體信息,你去問 .cn 頂級域名服務器去把,并返回 .cn 域名服務器的 NS 記錄。
.cn 域名服務器(203.119.29.1)說,我也不知道 blog.newyingyong.cn 的信息,但是我知道是阿里云管理的,并返回阿里云服務器的 NS 地址。
阿里云 DNS 服務器(106.11.211.55)說,這個域名確實是我管理的,最終返回 blog.rss.newyingyong.cn 的 A 記錄(139.129.23.162)。
DNS 緩存
假如 DNS 服務器每次都需要迭代或遞歸查詢上一級的 DNS 服務器,那么 DNS 可能就不堪重負,考慮到域名的 DNS 信息不會頻繁的修改,所以每一級中的 DNS 服務器都會緩存結果(包括瀏覽器這樣的客戶端也會緩存 DNS 結果)。
緩存帶來的弊端可能就是 DNS 信息可能不是最新的,比如某個域名管理員修改了某個域名的 A 記錄,由于每一級的 DNS 服務器都有緩存,所以最后客戶端拿到的結果不是最新的,為了獲取到最新的結果,可以直接向權威域名服務器進行信息查詢。
比如 blog.rss.newyingyong.cn 的域名是由 dns9.hichina.com.(106.11.211.55)管理的,可以直接通過 dig @106.11.211.55 -t a newyingyong.cn 或者 dig @dns9.hichina.com -t a newyingyong.cn 獲取最新 A 記錄。
另外你也可以不查詢本地 DNS 服務器獲取信息,比如可以使用 8.8.8.8 Google Public DNS 進行查詢,dig @8.8.8.8 -t a newyingyong.cn 。
總結
- 上一篇: plecs matlab 联合仿真,利用
- 下一篇: java 如何执行dig 命令_如何在c