|
Dog是一个用于DNS查询的命令行工具,它的工作原理类似于dig。它具有丰富多彩的输出,支持DNS-over-TLS 和 DNS-over-HTTPS协议,并且可以输出JSON格式。 系统环境 6 T% X* K" { {: ^Ubuntu 20.04.1 LTS
安 装 5 O( @$ V; E, J! k, G Dog是用Rust编写的DNS查询工具。Dog需要rustc的版本高于1.45.0,我们使用apt安装的版本达不到这个要求,下面我们会使用其他方式安装rustc。下面需要先安装libssl-dev安装包:% m [' Y; F) W( j6 b bob@ubuntu-20-04:~$ sudo apt install -y cargo libssl-dev <以上代码可复制粘贴,可往左滑> 下面安装rust,由于按照官方文档安装rust,有时下载没有进度,所以在这里先修改镜像源,改成国内的,然后执行安装: / y; `& `" G6 o, X4 V8 n bob@ubuntu-18-04:~$ export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static k# C) s3 U) n% q# Abob@ubuntu-18-04:~$ export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup" ^, I. M, k4 [ bob@ubuntu-18-04:~$ curl https://sh.rustup.rs -sSf | sh <以上代码可复制粘贴,可往左滑>
- J& J6 F/ Y3 C. K1 g* w 在下面的地方,选择选项1.
5 h3 `7 a; c' l bob@ubuntu-18-04:~$ source $HOME/.cargo/env安装完成,需要执行下面命令,才能正常使用cargo命令 <以上代码可复制粘贴,可往左滑> 下面检查rustc的版本: bob@ubuntu-18-04:~$ rustc --version' x9 v6 d9 r p7 R/ d% J! Crustc 1.47.0 (18bf6b4f0 2020-10-07) <以上代码可复制粘贴,可往左滑>
* X+ V+ k. }' w! h" u bob@ubuntu-20-04:~$ wget https://github.com/ogham/dog/archive/v0.1.0.tar.gz从github下载dog安装包,并解压: bob@ubuntu-20-04:~$ tar xvf v0.1.0.tar.gz7 q2 x% c8 W1 u7 F <以上代码可复制粘贴,可往左滑> 进入解压出来的目录,并构建dog程序: bob@ubuntu-20-04:~$ cd dog-0.1.0/<以上代码可复制粘贴,可往左滑>
[source.crates-io] registry = "https://github.com/rust-lang/crates.io-index"0 s1 P- @- Z, [# o1 N9 ]) O * G: K. Z, U. M/ h8 T1 y # 替换成你偏好的镜像源 replace-with = 'sjtu', v& G R, Z( W. R #replace-with = 'ustc' ( m$ M5 s3 `7 O- E # 清华大学" d& @( |7 s, ? a4 C! n! s% l [source.tuna] registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"% q5 X5 w& ^; `& M. H1 T # 中国科学技术大学 [source.ustc] registry = "git://mirrors.ustc.edu.cn/crates.io-index"" ] I- A" j$ M, b0 B % _/ I# a7 W/ E* p, `) B # 上海交通大学0 i2 x" R; S6 L: h% @4 I" Y: h [source.sjtu]+ H& i6 M/ w: o5 C. R' C registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"( Z' |" o; [2 s/ m! } & q% [9 g* K! A+ Y( l0 n. j # rustcc社区 [source.rustcc] | s5 \7 v7 Y, e registry = "git://crates.rustcc.cn/crates.io-index" <以上代码可复制粘贴,可往左滑> 修改完成之后,再回到dog-0.1.0目录里面,重新构建dog程序,并运行测试一下: bob@ubuntu-18-04:~/dog-0.1.0$ cargo build! K) j) I$ [& k- x- j# fbob@ubuntu-18-04:~/dog-0.1.0$ cargo test: m* d0 Q2 l6 s$ |5 S <以上代码可复制粘贴,可往左滑>
确保dog命令从任何目录运行,将二进制文件放在/usr/local/bin目录中。 <以上代码可复制粘贴,可往左滑> 运行dog工具,查看以下版本: bob@ubuntu-18-04:~$ dog --version$ u5 ?1 {" f+ {0 K0 }0 Jdog ● command-line DNS client v0.1.0 [] built on 2020-11-19 (pre-release!)! u( F4 e' V+ n# }$ u3 }1 A1 B+ r https://dns.lookup.dog/ bob@ubuntu-18-04:~$ <以上代码可复制粘贴,可往左滑>
可以使用源码包里面的命令补全脚本,当需要提示的时候按两下TAB键,显示子命令: <以上代码可复制粘贴,可往左滑>
如何使用dog命令 现在,让我们看看如何使用dog命令查询不同的DNS记录。 查询A记录 bob@ubuntu-18-04:~$ dog www.baidu.comCNAME www.baidu.com. 5s "www.a.shifen.com." A www.a.shifen.com. 4s 180.101.49.12 ]) L$ o/ x7 T- ~ A www.a.shifen.com. 4s 180.101.49.111 C) ^- I! p; N* Y <以上代码可复制粘贴,可往左滑> 查询NS记录 bob@ubuntu-18-04:~$ dog aliyun.com NS5 J$ m0 T+ g9 DNS aliyun.com. 5s "ns3.aliyun.com."' F( f( z& U/ D& h NS aliyun.com. 5s "ns5.aliyun.com." NS aliyun.com. 5s "ns4.aliyun.com." <以上代码可复制粘贴,可往左滑> 使用指定的域名服务器地址查询 bob@ubuntu-18-04:~$ dog google.com MX @1.1.1.1MX google.com. 6m23s 30 "alt2.aspmx.l.google.com."6 r" D& X& c3 n4 x MX google.com. 6m23s 40 "alt3.aspmx.l.google.com."5 E7 `! u v l5 c6 }! c MX google.com. 6m23s 10 "aspmx.l.google.com."+ r2 ~% t# x' v) e& U1 x% P MX google.com. 6m23s 50 "alt4.aspmx.l.google.com." MX google.com. 6m23s 20 "alt1.aspmx.l.google.com."9 U) [0 @1 @3 d# Q7 ]& v7 _5 n( q& _$ r <以上代码可复制粘贴,可往左滑> JSON格式输出 bob@ubuntu-18-04:~$ dog A www.baidu.com -J{"responses":[{"additionals":[],"answers":[{"class":"IN","domain":"www.a.shifen.com.","name":"www.baidu.com.","ttl":5,"type":"CNAME"},{"address":"180.101.49.11","class":"IN","name":"www.a.shifen.com.","ttl":4,"type":"A"},{"address":"180.101.49.12","class":"IN","name":"www.a.shifen.com.","ttl":4,"type":"A"}],"authorities":[],"queries":[{"class":"IN","name":"www.baidu.com.","type":1}]}]} <以上代码可复制粘贴,可往左滑>
查看帮助 bob@ubuntu-18-04:~$ dog --help- r" q& K& Y5 K<以上代码可复制粘贴,可往左滑>
|
微信公众号
手机版