你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Dog——DNS查询的命令行工具

[复制链接]
gaosmile 发布时间:2020-12-10 22:32
Dog是一个用于DNS查询的命令行工具,它的工作原理类似于dig。它具有丰富多彩的输出,支持DNS-over-TLS 和 DNS-over-HTTPS协议,并且可以输出JSON格式。
8 Z$ m- M% \# R1 [/ G
系统环境
6 T% X* K" {  {: ^

% }4 `, V1 O# d- x1 ^2 Z0 v
Ubuntu 20.04.1 LTS
微信图片_20201210222728.png

' V& \& G: Z+ O/ q! P6 Z
安    装

6 c0 \6 H: a0 V; F) I$ q  P
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
8 C) i# E: h& A: J: T
<以上代码可复制粘贴,可往左滑>
下面安装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# A
bob@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
) G6 {3 J$ x% w4 J& Q: b% P) F
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222731.png
- J& J6 F/ Y3 C. K1 g* w
在下面的地方,选择选项1.
微信图片_20201210222734.png ) }+ z* S/ a3 G3 s
微信图片_20201210222737.png
5 h3 `7 a; c' l
安装完成,需要执行下面命令,才能正常使用cargo命令
bob@ubuntu-18-04:~$ source $HOME/.cargo/env
5 S/ x0 s: F4 }! L
<以上代码可复制粘贴,可往左滑>
下面检查rustc的版本:
bob@ubuntu-18-04:~$ rustc --version' x9 v6 d9 r  p7 R/ d% J! C
rustc 1.47.0 (18bf6b4f0 2020-10-07)
/ o( I# c, j& C. R& k8 w! e+ @+ j
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222740.png
* X+ V+ k. }' w! h" u
从github下载dog安装包,并解压:
bob@ubuntu-20-04:~$ wget https://github.com/ogham/dog/archive/v0.1.0.tar.gz
; w9 \0 ]. y6 F  }# t5 {: \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/
) b. Y" L1 v2 i5 A5 M* F
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222743.png
使用默认的仓库地址更新会比较慢,在这里按ctrl+c结束更新,在家目录会生成一个.cargo文件夹,进去新建一个config配置文件,将下面内容添加进去这样修改默认仓库,更新速度就快许多了:bob@ubuntu-20-04:~/dog-0.1.0$ cat ~/.cargo/config
' {% m1 P( ]- S& y
* C% S' s' z8 [[source.crates-io]
: s4 ~; C+ W& b7 Tregistry = "https://github.com/rust-lang/crates.io-index"0 s1 P- @- Z, [# o1 N9 ]) O
* G: K. Z, U. M/ h8 T1 y
# 替换成你偏好的镜像源
9 B& C" M, I1 yreplace-with = 'sjtu', v& G  R, Z( W. R
#replace-with = 'ustc'
' [7 y, [7 B5 P. D( m$ M5 s3 `7 O- E
# 清华大学" d& @( |7 s, ?  a4 C! n! s% l
[source.tuna]
3 V) K# d% a0 H$ Q2 T7 }5 Fregistry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"% q5 X5 w& ^; `& M. H1 T

* @& o" M* U0 d" ?3 T% ~# 中国科学技术大学
. z  Y/ p0 f* ^, i[source.ustc]
2 _4 w+ A/ Q5 c( rregistry = "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社区
  _! s, K+ [: m, ]) F[source.rustcc]  |  s5 \7 v7 Y, e
registry = "git://crates.rustcc.cn/crates.io-index"
8 L' V( d0 \/ |1 C/ I' S
<以上代码可复制粘贴,可往左滑>
修改完成之后,再回到dog-0.1.0目录里面,重新构建dog程序,并运行测试一下:
bob@ubuntu-18-04:~/dog-0.1.0$ cargo build! K) j) I$ [& k- x- j# f
bob@ubuntu-18-04:~/dog-0.1.0$ cargo test: m* d0 Q2 l6 s$ |5 S
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222746.png
微信图片_20201210222749.png

' o8 ^, H) v+ d# u1 V- ]确保dog命令从任何目录运行,将二进制文件放在/usr/local/bin目录中。
bob@ubuntu-18-04:~/dog-0.1.0$ sudo cp -p ~/dog-0.1.0/target/debug/dog /usr/local/bin1 `2 f5 [5 n0 f5 ^3 B* W, o# r
<以上代码可复制粘贴,可往左滑>
运行dog工具,查看以下版本:
bob@ubuntu-18-04:~$ dog --version$ u5 ?1 {" f+ {0 K0 }0 J
dog ● command-line DNS client
* N1 l( ]; o7 V0 |v0.1.0 [] built on 2020-11-19 (pre-release!)! u( F4 e' V+ n# }$ u3 }1 A1 B+ r
https://dns.lookup.dog/
( U2 A' m! v+ \1 N3 cbob@ubuntu-18-04:~$
$ \  \. ~0 h: Z+ F
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222753.png

0 p. J; `0 Z% g- t% r+ P# {; A; v- A可以使用源码包里面的命令补全脚本,当需要提示的时候按两下TAB键,显示子命令:
bob@ubuntu-18-04:~$ source ~/dog-0.1.0/completions/dog.bash
5 w6 U* v- d" ]8 M( M; Q* F
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222756.png

+ H8 ^* s( _6 ~9 L# ]6 B
如何使用dog命令

( @6 s3 X8 y& q9 l0 q& }" f

6 Q3 l( r4 y- ~2 M7 s
现在,让我们看看如何使用dog命令查询不同的DNS记录。
查询A记录
bob@ubuntu-18-04:~$ dog www.baidu.com
; B6 V+ Z9 L8 @- _CNAME www.baidu.com.    5s   "www.a.shifen.com."
% {! z  U; n% I) P' }. N    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 D
NS aliyun.com. 5s   "ns3.aliyun.com."' F( f( z& U/ D& h
NS aliyun.com. 5s   "ns5.aliyun.com."
0 Z% e5 C: B% u: l) eNS aliyun.com. 5s   "ns4.aliyun.com."
3 |9 M3 z* g6 {
<以上代码可复制粘贴,可往左滑>
使用指定的域名服务器地址查询
bob@ubuntu-18-04:~$ dog google.com MX @1.1.1.1
1 w2 G; P" N7 @4 ^+ d' FMX 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."
9 @8 E$ Y7 ]) e' NMX 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
3 p8 I$ e. f- t8 I( ?; t/ r{"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}]}]}
) g6 q! @/ m- u' k3 g
<以上代码可复制粘贴,可往左滑>
0 {; M" W. m) c0 U
微信图片_20201210222758.png

" O. X+ M& U& a+ U# J) s
查看帮助
bob@ubuntu-18-04:~$ dog --help- r" q& K& Y5 K
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222801.png
8 r5 w3 H9 o# Q. B! B# T
赞 收藏 评论0 发布时间:2020-12-10 22:32

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版