Dog-用於DNS查詢的命令列工具

安全劍客發表於2020-11-25
Dog是一個用於DNS查詢的 行工具,它的工作原理類似於dig。它具有豐富多彩的輸出,支援DNS-over-TLS 和 DNS-over-HTTPS協議,並且可以輸出JSON格式。
系統環境

Ubuntu 20.04.1 LTS
Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

安裝

Dog是用Rust編寫的DNS查詢工具。Dog需要rustc的版本高於 1.45.0,我們使用apt安裝的版本達不到這個要求,下面我們會使用其他方式安裝rustc。下面需要先安裝libssl-dev安裝包:

bob@ubuntu-20-04:~$ sudo apt install -y cargo libssl-dev

下面安裝rust,由於按照官方文件安裝rust,有時下載沒有進度,所以在這裡先修改映象源,改成國內的,然後執行安裝:

bob@ubuntu-18-04:~$ export RUSTUP_DIST_SERVER=
bob@ubuntu-18-04:~$ export RUSTUP_UPDATE_ROOT=/rustup
bob@ubuntu-18-04:~$ curl | sh

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具
在下面的地方,選擇選項1.
Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具
安裝完成,需要執行下面 ,才能正常使用cargo命令:

bob@ubuntu-18-04:~$ source $HOME/.cargo/env

下面檢查rustc的版本:

bob@ubuntu-18-04:~$ rustc --version
rustc 1.47.0 (18bf6b4f0 2020-10-07)

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具
從github下載dog安裝包,並解壓:

bob@ubuntu-20-04:~$ wget 
bob@ubuntu-20-04:~$ tar xvf v0.1.0.tar.gz

進入解壓出來的目錄,並構建dog程式:

bob@ubuntu-20-04:~$ cd dog-0.1.0/

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具
使用預設的倉庫地址更新會比較慢,在這裡按ctrl+c結束更新,在家目錄會生成一個 .cargo資料夾,進去新建一個 config配置檔案,將下面內容新增進去這樣修改預設倉庫,更新速度就快許多了:

bob@ubuntu-20-04:~/dog-0.1.0$ cat ~/.cargo/config
[source.crates-io]
registry = "
# 替換成你偏好的映象源
replace-with = 'sjtu'
#replace-with = 'ustc'
# 清華大學
[source.tuna]
registry = "
# 中國科學技術大學
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
# 上海交通大學
[source.sjtu]
registry = "
# rustcc社群
[source.rustcc]
registry = "git://crates.rustcc.cn/crates.io-index"

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具
修改完成之後,再回到dog-0.1.0目錄裡面,重新構建dog程式,並執行測試以下:

bob@ubuntu-18-04:~/dog-0.1.0$ cargo build
bob@ubuntu-18-04:~/dog-0.1.0$ cargo test

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具
確保dog命令從任何目錄執行,將二進位制檔案放在 /usr/local/bin目錄中。

bob@ubuntu-18-04:~/dog-0.1.0$ sudo cp -p ~/dog-0.1.0/target/debug/dog /usr/local/bin

執行dog工具,檢視以下版本:

bob@ubuntu-18-04:~$ dog --version
dog ● command-line DNS client
v0.1.0 [] built on 2020-11-19 (pre-release!)

bob@ubuntu-18-04:~$

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具
可以使用原始碼包裡面的命令補全 ,當需要提示的時候按兩下TAB鍵,顯示子命令:

bob@ubuntu-18-04:~$ source ~/dog-0.1.0/completions/dog.bash

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

如何使用dog命令

現在,讓我們看看如何使用dog命令查詢不同的DNS記錄。

查詢A記錄
bob@ubuntu-18-04:~$ dog 
CNAME .    5s   "www.a.shifen.com."
    A 
    A 

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

查詢NS記錄
bob@ubuntu-18-04:~$ dog aliyun.com NS
NS aliyun.com. 5s   "ns3.aliyun.com."
NS aliyun.com. 5s   "ns5.aliyun.com."
NS aliyun.com. 5s   "ns4.aliyun.com."

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

使用指定的域名伺服器地址查詢
bob@ubuntu-18-04:~$ dog google.com MX @1.1.1.1
MX google.com. 6m23s   30 "alt2.aspmx.l.google.com."
MX google.com. 6m23s   40 "alt3.aspmx.l.google.com."
MX google.com. 6m23s   10 "aspmx.l.google.com."
MX google.com. 6m23s   50 "alt4.aspmx.l.google.com."
MX google.com. 6m23s   20 "alt1.aspmx.l.google.com."

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

JSON格式輸出
bob@ubuntu-18-04:~$ dog A  -J
{"responses":[{"additionals":[],"answers":[{"class":"IN","domain":"www.a.shifen.com.","name":".","ttl":5,"type":"CNAME"},{"address":"180.101.49.11","class":"IN","name":"},{"address":"180.101.49.12","class":"IN","name":"}],"authorities":[],"queries":[{"class":"IN","name":".","type":1}]}]}

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

檢視幫助
bob@ubuntu-18-04:~$ dog --help

Dog-用於DNS查詢的命令列工具Dog-用於DNS查詢的命令列工具

總結

Dog是一個用於DNS查詢的命令列工具,它的工作原理類似於dig。它具有豐富多彩的輸出,支援DNS-over-TLS 和 DNS-over-HTTPS協議,並且可以輸出JSON格式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2789956/,如需轉載,請註明出處,否則將追究法律責任。

相關文章