使用 dig 命令挖掘域名解析資訊
命令列工具
dig
是用於解析域名和故障排查的一個利器。
從主要功能上來說,dig
和 nslookup
之間差異不大,但 dig
更像一個加強版的 nslookup
,可以查詢到一些由域名伺服器管理的資訊,這在排查某些問題的時候非常有用。總的來說,dig
是一個既簡單易用又功能強大的命令列工具。(LCTT 譯註:dig
和 nslookup
行為的主要區別來自於 dig
使用是是作業系統本身的解析庫,而 nslookup
使用的是該程式自帶的解析庫,這有時候會帶來一些行為差異。此外,從表現形式上看,dig
返回是結果是以 BIND 配置資訊的格式返回的,也帶有更多的技術細節。)
dig
最基本的功能就是查詢域名資訊,因此它的名稱實際上是“域名資訊查詢工具”的縮寫。dig
向使用者返回的內容可以非常詳盡,也可以非常簡潔,展現內容的多少完全由使用者在查詢時使用的選項來決定。
我只需要查詢 IP 地址
如果只需要查詢某個域名指向的 IP 地址,可以使用 +short
選項:
$ dig facebook.com +short
31.13.66.35
在查詢的時候發現有的域名會指向多個 IP 地址?這其實是網站提高其可用性的一種措施。
$ dig networkworld.com +short
151.101.2.165
151.101.66.165
151.101.130.165
151.101.194.165
也正是由於這些網站通過負載均衡實現高可用,在下一次查詢的時候,或許會發現這幾個 IP 地址的排序有所不同。(LCTT 譯註:瀏覽器等應用預設會使用返回的第一個 IP 地址,因此這樣實現了一種簡單的負載均衡。)
$ dig networkworld.com +short
151.101.130.165
151.101.194.165
151.101.2.165
151.101.66.165
標準返回
dig
的標準返回內容則包括這個工具本身的一些資訊,以及請求域名伺服器時返回的響應內容:
$ dig networkworld.com
; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>*gt; networkworld.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39932
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;networkworld.com. IN A
;; ANSWER SECTION:
networkworld.com. 300 IN A 151.101.194.165
networkworld.com. 300 IN A 151.101.130.165
networkworld.com. 300 IN A 151.101.66.165
networkworld.com. 300 IN A 151.101.2.165
;; Query time: 108 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Feb 13 13:49:53 EST 2020
;; MSG SIZE rcvd: 109
由於域名伺服器有快取機制,返回的內容可能是之前快取好的資訊。在這種情況下,dig
最後顯示的查詢時間會是 0 毫秒(0 msec):
;; Query time: 0 msec <==
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Feb 13 15:30:09 EST 2020
;; MSG SIZE rcvd: 109
向誰查詢?
在預設情況下,dig
會根據 /etc/resolv.conf
這個檔案的內容決定向哪個域名伺服器獲取查詢結果。你也可以使用 @
來指定 dig
請求的域名伺服器。
在下面的例子中,就指定了 dig
向 Google 的域名伺服器 8.8.8.8 查詢域名資訊。
$ dig @8.8.8.8 networkworld.com
; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>> @8.8.8.8 networkworld.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21163
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;networkworld.com. IN A
;; ANSWER SECTION:
networkworld.com. 299 IN A 151.101.130.165
networkworld.com. 299 IN A 151.101.66.165
networkworld.com. 299 IN A 151.101.194.165
networkworld.com. 299 IN A 151.101.2.165
;; Query time: 48 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Feb 13 14:26:14 EST 2020
;; MSG SIZE rcvd: 109
想要知道正在使用的 dig
工具的版本,可以使用 -v
選項。你會看到類似這樣:
$ dig -v
DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu
或者這樣的返回資訊:
$ dig -v
DiG 9.11.4-P2-RedHat-9.11.4-22.P2.el8
如果你覺得 dig
返回的內容過於詳細,可以使用 +noall
(不顯示所有內容)和 +answer
(僅顯示域名伺服器的響應內容)選項,域名伺服器的詳細資訊就會被忽略,只保留域名解析結果。
$ dig networkworld.com +noall +answer
; <<>> DiG 9.11.5-P4-5.1ubuntu2.1-Ubuntu <<>> networkworld.com +noall +answer
;; global options: +cmd
networkworld.com. 300 IN A 151.101.194.165
networkworld.com. 300 IN A 151.101.130.165
networkworld.com. 300 IN A 151.101.66.165
networkworld.com. 300 IN A 151.101.2.165
批量查詢域名
如果你要查詢多個域名,可以把這些域名寫入到一個檔案內(domains
),然後使用下面的 dig
命令遍歷整個檔案並給出所有查詢結果。
$ dig +noall +answer -f domains
networkworld.com. 300 IN A 151.101.66.165
networkworld.com. 300 IN A 151.101.2.165
networkworld.com. 300 IN A 151.101.130.165
networkworld.com. 300 IN A 151.101.194.165
world.std.com. 77972 IN A 192.74.137.5
uushenandoah.org. 1982 IN A 162.241.24.209
amazon.com. 18 IN A 176.32.103.205
amazon.com. 18 IN A 176.32.98.166
amazon.com. 18 IN A 205.251.242.103
你也可以在上面的命令中使用 +short
選項,但如果其中有些域名指向多個 IP 地址,就無法看出哪些 IP 地址對應哪個域名了。在這種情況下,更好地做法應該是讓 awk
對返回內容進行處理,只留下第一列和最後一列:
$ dig +noall +answer -f domains | awk '{print $1,$NF}'
networkworld.com. 151.101.66.165
networkworld.com. 151.101.130.165
networkworld.com. 151.101.194.165
networkworld.com. 151.101.2.165
world.std.com. 192.74.137.5
amazon.com. 176.32.98.166
amazon.com. 205.251.242.103
amazon.com. 176.32.103.205
via: https://www.networkworld.com/article/3527430/digging-up-ip-addresses-with-the-dig-command.html
作者:Sandra Henry-Stocker 選題:lujun9972 譯者:HankChow 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 如何使用dig命令挖掘域名解析資訊
- dig 命令
- linux dig 命令使用方法Linux
- Dig命令模仿迭代
- dig的命令除錯除錯
- 常用網路命令 dig 詳解及使用示例
- dig 命令的基本用法(轉)
- Linux基礎命令---dig工具Linux
- 頭位資訊平臺怎麼挖掘使用者需求?
- 全球IP whois資訊獲取與情報挖掘
- IP rDNS(PTR)資訊從理解到情報挖掘DNS
- SQL Story摘錄(四)————資訊挖掘初步 (轉)SQL
- 使用Linux命令來傳送資訊Linux
- 使用日誌挖掘來挖掘TX等待的事務
- 分解uber依賴注入庫dig-使用篇依賴注入
- 賣點挖掘九步曲——資料資訊圖
- dig 簡明教程
- Linux系統中nslookup和dig安裝使用Linux
- 大資料資訊挖掘中文分詞是關鍵大資料中文分詞
- 【RAC】使用crsctl命令獲取Oracle CRS版本資訊Oracle
- 使用 jstat 命令檢視 JVM 的GC資訊JSJVMGC
- docker使用bind9實現域名解析Docker
- 域名解析
- 資訊挖掘 | 面向科技情報的網際網路資訊源自動發現技術
- rda收集資訊命令
- DNS 解析除錯(dig & nslookup)DNS除錯
- 什麼是域名解析?如何設定域名解析?
- 使用蜻蜓安全挖掘漏洞實踐(一)
- DNS域名解析DNS
- 泛域名解析
- Linux基礎命令---修改使用者資訊usermodLinux
- top命令資訊詳解
- Nmap資訊命令詳解
- 資料分析與挖掘-挖掘建模
- 從資料收集到資訊挖掘,我們該看重什麼?
- 使用LOG Miner挖掘日誌基本步驟
- Linux使用者資訊查詢命令有哪些?linux運維命令學習Linux運維
- Liunx運維(七)-使用者管理及使用者資訊查詢命令運維