哈嘍大家好,我是鹹魚 不知道大家在日常學習或者工作當中用 dig 命令多不多 dig 是 Domain Information Groper 的縮寫,對於網路管理員和在功能變數名稱系統(DNS)領域工作的小伙伴來說,它是一個非常常見且有用的工具。 無論是簡單的 DNS 解析查找還是更高級的故障排除和分析,d ...
哈嘍大家好,我是鹹魚
不知道大家在日常學習或者工作當中用 dig
命令多不多
dig
是 Domain Information Groper 的縮寫,對於網路管理員和在功能變數名稱系統(DNS)領域工作的小伙伴來說,它是一個非常常見且有用的工具。
無論是簡單的 DNS 解析查找還是更高級的故障排除和分析,dig
都能夠勝任
那麼今天鹹魚將和大家一起瞭解一下 dig
命令的一些常見用法以及示例
除了
dig
命令,還有一種跟dig
功能是差不多的 命令nslookup
安裝
如果 Linux 發行版沒有安裝 dig
命令,則可以通過下麵的命令來安裝
- Debian 和 基於 Debian 的發行版
apt install dnsutils
- Red Hat 和基於 RHEL 的發行版
dnf install bind-utils
# 或
yum install bind-utils
- Arch Linux 和基於 Arch 的發行版
pacman -S dnsutils
以我的測試環境為例(CentOS 7.9)
常見用法
# 基本語法
dig [@server] [name] [type]
@server
:請求所指向的 DNS 伺服器的主機名或IP地址。如果沒有指定 DNS 伺服器,則使用系統當前配置的 DNS 伺服器name
:要查找的功能變數名稱type
:要檢索的 DNS 記錄的類型,預設為 A 記錄類型
比如說我想解析 www.baidu.com
這個功能變數名稱,指定使用 Google 的 dns 伺服器(8.8.8.8)
# A 記錄
dig @8.8.8.8 www.baidu.com
如果要查找 MX 記錄
dig @8.8.8.8 www.baidu.com MX
前面我們講到,dig
命令會在 ANSWER 部分中預設顯示 A 記錄,下麵我們來看下命令輸出的信息
可以看到一共有五列,我們以最後一行行為例:
- 第一列
www.wshifen.com
:要查找的功能變數名稱 - 第二列
192
:生存周期,告訴 DNS 解析器在請求一個新查詢之前緩存查詢多長時間 - 第三列
IN
:查詢的類,IN 指互聯網 - 第四列
A
:DNS 查詢類型( A, AAAA, CNAME, MX, NS, PTR, CERT, SRV, TXT, SOA 等) - 第五列
104.193.88.77
:功能變數名稱關聯的 IP 地址
由前面的輸出信息我們可以看到,內容還是挺多的,這時候有小伙伴會想:如何減少 dig
命令輸出的內容呢?我只想要最有用的,其他的我看得頭昏眼花
可以加上 +nocomments
選項
dig @8.8.8.8 www.baidu.com +nocomments
可以看到,加上 +nocomments
選項後返回的內容有一部分註釋是被去掉了的
這時候有的小伙伴還會說:不行不行,信息還是太多了,我只要 ANSWER 部分。該如何讓命令只輸出 ANSWER 部分呢?
dig www.baidu.com +noall +answer
可以看到,加了 +noall
和 +answer
選項之後,會顯示出乾凈且易於閱讀的內容
那如果我只想要返回解析出來的結果呢?可以使用 +short
選項
dig www.baidu.com +short
進階用法
- 指定返回類型信息
前面我們提到過,DNS 記錄的類型(type)有很多種,例如 A, AAAA, CNAME, MX, NS, PTR, CERT, SRV, TXT, SOA 等
我們可以在命令的末尾加上對應的類型名以此來返回解析後特定類型信息
# 返回 MX 類型
dig www.baidu.com MX
# 返回 CNAME 類型
dig www.baidu.com CNAME
或者使用特殊關鍵字 ALL
將所有類型記錄放在一起
# 將會返回所有類型信息
dig www.baidu.com ALL
- 查看 DNS 解析過程
如果我們不確定 DNS 配置在哪裡有問題,我們可以使用 dig
命令來查看 DNS 解析的每一過程,只需要加上 +trace
選項即可
dig www.baidu.com +trace
- DNS 反向查找
DNS 正向查找就是通過功能變數名稱找解析 IP;反向查找就是通過 IP 地址找功能變數名稱
# 查找 ip 95.217.163.246 對應的功能變數名稱
dig -x 95.217.163.246
- 批量查詢
有小伙伴會想:我每次查詢一個功能變數名稱效率太慢了,我能不能一次查詢多個功能變數名稱呢?
是可以的,dig
是支持批量查詢的
首先我們把要查詢的功能變數名稱放在一個文件裡面,每行一個
[root@localhost ~]# cat domains.txt
www.baidu.com
archlinux.org
然後執行 dig
命令的時候加上 -f
選項
# 加上 +short 簡化輸出內容
dig -f domains.txt +short
修改 dig 預設選項
前面我們在使用 dig
命令的時候,為了簡化輸出信息每次敲命令都得帶上+nocomments
選項
那我們能不能把這個選項設置成預設值,這樣在敲命令的時候就不需要額外加上這個選項了
答案是可以的,我們需要在家目錄下創建一個 ~/.digrc
文件,然後添加選項
[root@localhost ~]# cat ~/.digrc
+nocomments
+short
這樣我們執行 dig
命令的時候就算沒加上去,也會預設使用這兩個選項