DNS dig命令
dig命令
- dig工具
- 記錄類型
- DNS 迭代查詢流程
- DNS 緩存
- TTL
- 創(chuàng)建屬于你自己的named.root文件
- 其他
dig工具
dig是DNS 的一個工具,通過它可以更好的理解 DNS。dig is a command-line DNS diagnostic tool from BIND,其下載地址為:BIND for windows,其他平臺請 BIND 下載
記錄類型
默認(rèn) dig csdn.net 返回的是 A 記錄類型,其他類型還包括 MX、NS、SOA 等,我們可以使用 dig -t a/mx/soa/mx csdn.net 進(jìn)行查詢
dig csdn.net +noall +answer 表示返回簡短信息
- NS 記錄:只有一級域名(或者頂級域名)才有 NS 記錄
- A記錄
dig -t a www.baidu.com
或者 dig www.baidu.com A
dig www.isc.org AAAA +short
可以用 -x的選項查找IP地址的主機(jī)名:
> dig -x 204.152.184.167 +short > #查詢大量主機(jī) > dig -f /host-list.txt +noall +answer D:\ToolExe\BIND9.17.5>dig -t a www.baidu.com; <<>> DiG 9.17.5 <<>> -t a www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 165 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.baidu.com. IN A;; ANSWER SECTION: www.baidu.com. 1006 IN CNAME www.a.shifen.com. www.a.shifen.com. 33 IN A 14.215.177.39 www.a.shifen.com. 33 IN A 14.215.177.38;; Query time: 46 msec ;; SERVER: 114.114.114.114#53(114.114.114.114) ;; WHEN: Wed Oct 14 10:16:45 中國標(biāo)準(zhǔn)時間 2020 ;; MSG SIZE rcvd: 101這里返回的 CNAME 表示查詢 www.baidu.com 的信息其實是 www.a.shifen.com 返回的 A 記錄。
CNAME 的存在原因:
- mx 記錄
MX 記錄一般配置在一級域名下。
DNS 迭代查詢流程
查詢本地域名 DNS 信息的時候,是遞歸查詢的方式。而本地 DNS 服務(wù)器為了獲取到某個域名的 DNS 信息,會使用迭代的方式(一步步詢問)。通過 dig +trace blog.newyingyong.cn 來進(jìn)行了解
D:\ToolExe\BIND9.17.5>dig +trace www.baidu.com; <<>> DiG 9.17.5 <<>> +trace www.baidu.com ;; global options: +cmd . 560 IN NS m.root-servers.net. . 560 IN NS h.root-servers.net. . 560 IN NS a.root-servers.net. . 560 IN NS c.root-servers.net. . 560 IN NS d.root-servers.net. . 560 IN NS i.root-servers.net. . 560 IN NS j.root-servers.net. . 560 IN NS e.root-servers.net. . 560 IN NS b.root-servers.net. . 560 IN NS l.root-servers.net. . 560 IN NS g.root-servers.net. . 560 IN NS k.root-servers.net. . 560 IN NS f.root-servers.net. ;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 45 mscom. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E 268FB5885044A833FC5459588F4A9184CF C41A5766 com. 86400 IN RRSIG DS 8 1 86400 20201026220000 202 1013210000 26116 . MwE2vyS1lYPD6VQG15ds4gLFhV/UXusEkzvdefXQsX8A1EAfO5FRFyzZ HkH D8zW72YT7sCSOZyWYNo1s5ypbpm6IKQ1ZwQLLoUJYrq52mwy4nk5 4nWgyr+Kp3PSXOoFWKfHJVEU1v I9Sco37DIZRy9DqNXAKtATmABlFG9 WGh3ewlZSrk+JM3xbE+bBkqJ5z8/PEyW3b1HZxWAI5GHn8eN+ tq4L7/ a6cB+0sbdnfR/kFosvIG5aZCJzSN7GZhPNVyDzjpofuB95rmlo1QDWUB vKOaR0E78vFskqX Q6suu9tE6T0xRqk+fx1KoZFq0bQvinMYNiLQZRTp oRmoAg== ;; Received 1173 bytes from 198.97.190.53#53(h.root-servers.net) in 1121 msbaidu.com. 172800 IN NS ns2.baidu.com. baidu.com. 172800 IN NS ns3.baidu.com. baidu.com. 172800 IN NS ns4.baidu.com. baidu.com. 172800 IN NS ns1.baidu.com. baidu.com. 172800 IN NS ns7.baidu.com. CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9O M6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 2020102004 147 20201013033147 24966 com. glqlnylc6am2Iyk0X/Nfj944Do6IXXMDqT+9FYp+Vua0j3pz0 VfZECx LkyQtVxRDbq8fobKrEeam4uYc9hEKHooF49vAzOGsORtjCCnGoZf0hI3 IuDZ5r1ivkCi3nd H1iK260O1lrcMlgZU61ActCW5ioguyT/uEa+sigh 3C0GotKDajpnJ1TnObvnwrqsw2FOZBiN4PrB5T mZD4hlA== HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN NSEC3 1 1 0 - HPVVN3Q5E5GOQP2QFE LEM4SVB9C0SJ6 NS DS RRSIG HPVUSBDNI26UDNIV6R0SV14GC3KGR4JP.com. 86400 IN RRSIG NSEC3 8 2 86400 2020102006 513 20201013052513 24966 com. QFzYYTQtVU3O8aHj27ZCTeEqZEfVWlm06vR0qZgyclz1muZis 7fTbJ9 Jzghkuo00UUNSB9b1lwC3cUhQuWtSBwGX9tyi6MboZdaVGK/FMpZaWum /chvBlJ5PoIXXth k2CN2PnsK76OoyOoAI7vpg4A8bxqHLiQdPOS5zDh YTqDWSLE3xOMhgt2V+zO5E0xLs54adGA3scCxY v4DPIWQ== couldn't get address for 'ns3.baidu.com': not found couldn't get address for 'ns7.baidu.com': not found ;; Received 761 bytes from 192.35.51.30#53(f.gtld-servers.net) in 404 mswww.baidu.com. 1200 IN CNAME www.a.shifen.com. a.shifen.com. 1200 IN NS ns3.a.shifen.com. a.shifen.com. 1200 IN NS ns4.a.shifen.com. a.shifen.com. 1200 IN NS ns1.a.shifen.com. a.shifen.com. 1200 IN NS ns5.a.shifen.com. a.shifen.com. 1200 IN NS ns2.a.shifen.com. ;; Received 239 bytes from 14.215.178.80#53(ns4.baidu.com) in 1791 msDNS 緩存
假如 DNS 服務(wù)器每次都需要迭代或遞歸查詢上一級的 DNS 服務(wù)器,那么 DNS 可能就不堪重負(fù),考慮到域名的 DNS 信息不會頻繁的修改,所以每一級中的 DNS 服務(wù)器都會緩存結(jié)果
緩存帶來的弊端可能就是 DNS 信息可能不是最新的,比如某個域名管理員修改了某個域名的 A 記錄,由于每一級的 DNS 服務(wù)器都有緩存,所以最后客戶端拿到的結(jié)果不是最新的,為了獲取到最新的結(jié)果,可以直接向權(quán)威域名服務(wù)器進(jìn)行信息查詢。
比如 baidu.com 的域名是由 ns4.baidu.com.(14.215.178.80)管理的,可以直接通過
dig @14.215.178.80 -t a www.baidu.com或者
dig @ns4.baidu.com -t a www.baidu.com獲取最新 A 記錄
TTL
如果你從本地DNS查詢互聯(lián)網(wǎng)地址,服務(wù)器指出從哪里獲得權(quán)威的答案并獲得地址,一旦服務(wù)器獲知答案,它將這個答案保存在本地緩存中以免你在稍后的時間內(nèi)再次查詢同樣的地址,這樣它就會很快地從緩存中獲取你要的答案,比你再次從internet查詢要快很多。
當(dāng)域管理員配置DNS記錄時,他們可以決定這個記錄可以在緩存中保存多長時間,這就是TTL數(shù)值(通常用多少秒來表示)。
通常地,遠(yuǎn)端服務(wù)器一般對記錄的緩存只保存TTL數(shù)值長的時間。時間過期后,服務(wù)器會刷新它的本地緩存并
重新查詢一個權(quán)威答案。
當(dāng)你用dig來查詢DNS服務(wù)器某條記錄時,服務(wù)器會告訴dig這條記錄可以在緩存中保持的時間長短。
舉個例子,gmail.com域的MX記錄的TTL值是300s,gmail.com域的管理員要求遠(yuǎn)端服務(wù)器緩存它的MX記錄不能高于5分鐘,所以當(dāng)你第一次查詢那個記錄(gmail.com的MX記錄)時,dig會告訴你一個300的TTL。
第一次
過一段時間再次時:
D:\ToolExe\BIND9.17.5>dig +nocmd gmail.com MX +noall +answer gmail.com. 35 IN MX 40 alt4.gmail-smtp-in.l.google.c om. gmail.com. 35 IN MX 5 gmail-smtp-in.l.google.com. gmail.com. 35 IN MX 30 alt3.gmail-smtp-in.l.google.c om. gmail.com. 35 IN MX 10 alt1.gmail-smtp-in.l.google.c om. gmail.com. 35 IN MX 20 alt2.gmail-smtp-in.l.google.c om.創(chuàng)建屬于你自己的named.root文件
任何連接到internet 的DNS服務(wù)器肯定會有InterNIC的named.root文件的拷貝,文件列出所有internet的根
DNS,如果你不怕麻煩的話,你可以經(jīng)常從InterNIC的ftp服務(wù)器上把它下載下來,或者,你可以使用dig命令
創(chuàng)建屬于你自己的時髦的named.root
其他
# 查看 zone 數(shù)據(jù)傳輸 dig @server baidu.com AXFR # 查看 zone 數(shù)據(jù)的增量傳輸 dig @server baidu.com IXFR=N # 用 dig 查看反向解析 dig -x 124.42.102.203 @server # 查找一個域的授權(quán) dns 服務(wù)器 dig baidu.com +nssearch # 從根服務(wù)器開始追蹤一個域名的解析過程 dig baidu.com +trace # 查看你使用的是哪個 F root dns server dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT # 查看 bind 的版本號 dig @bind_dns_server CHAOS TXT version.bind總結(jié)