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

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

[复制链接]
gaosmile 发布时间:2020-12-10 22:32
Dog是一个用于DNS查询的命令行工具,它的工作原理类似于dig。它具有丰富多彩的输出,支持DNS-over-TLS 和 DNS-over-HTTPS协议,并且可以输出JSON格式。
6 Q8 J: m2 ]& W: O4 l3 ^4 b. ^
系统环境

5 D. K$ `# z- V0 b
( a: f* o  d0 w9 J  ~- A6 x- {8 Z
Ubuntu 20.04.1 LTS
微信图片_20201210222728.png
/ O& T5 P( \* d# @1 K3 I
安    装
  x) K/ a6 W4 ^4 X# [

/ X/ N. p! g; z* Q3 P0 ]7 U
Dog是用Rust编写的DNS查询工具。Dog需要rustc的版本高于1.45.0,我们使用apt安装的版本达不到这个要求,下面我们会使用其他方式安装rustc。下面需要先安装libssl-dev安装包:
% T- [- n" c# v% j5 N# B
bob@ubuntu-20-04:~$ sudo apt install -y cargo libssl-dev8 `/ D2 g9 F6 _8 [' \/ J
<以上代码可复制粘贴,可往左滑>
下面安装rust,由于按照官方文档安装rust,有时下载没有进度,所以在这里先修改镜像源,改成国内的,然后执行安装:

" K( u9 c3 R. n% @
bob@ubuntu-18-04:~$ export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
4 E3 {! Y- z2 @$ h) _" h. O: V8 e. a% Qbob@ubuntu-18-04:~$ export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
+ K0 T5 w8 F# h8 G8 U" mbob@ubuntu-18-04:~$ curl https://sh.rustup.rs -sSf | sh! _; q6 Q( Q* t2 ~2 b" j/ z
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222731.png
$ S. \; @3 q* R2 [1 n# i
在下面的地方,选择选项1.
微信图片_20201210222734.png
. e  @- D$ m! s, P; D( J$ | 微信图片_20201210222737.png

+ v1 d  ]. w0 d) L安装完成,需要执行下面命令,才能正常使用cargo命令
bob@ubuntu-18-04:~$ source $HOME/.cargo/env
- l7 P2 c( B/ D9 J4 n4 U! I
<以上代码可复制粘贴,可往左滑>
下面检查rustc的版本:
bob@ubuntu-18-04:~$ rustc --version4 s" J$ I2 n$ U3 c) u, r
rustc 1.47.0 (18bf6b4f0 2020-10-07)
1 c% j* h. e$ a& \, a& a/ ~+ T  u
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222740.png

" X2 _! d% C  t5 V从github下载dog安装包,并解压:
bob@ubuntu-20-04:~$ wget https://github.com/ogham/dog/archive/v0.1.0.tar.gz
! a# ~1 W  }/ a# Abob@ubuntu-20-04:~$ tar xvf v0.1.0.tar.gz
" q4 @2 ^3 i& z
<以上代码可复制粘贴,可往左滑>
进入解压出来的目录,并构建dog程序:
bob@ubuntu-20-04:~$ cd dog-0.1.0/
4 H8 m# ?, s! K. L
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222743.png
使用默认的仓库地址更新会比较慢,在这里按ctrl+c结束更新,在家目录会生成一个.cargo文件夹,进去新建一个config配置文件,将下面内容添加进去这样修改默认仓库,更新速度就快许多了:bob@ubuntu-20-04:~/dog-0.1.0$ cat ~/.cargo/config3 N8 t1 N1 b1 y! b1 d
2 U" s2 K5 ]$ y, O: n' ?7 ^
[source.crates-io]
. g8 N4 Z! H. i3 J! t4 |/ kregistry = "https://github.com/rust-lang/crates.io-index"4 i4 e5 j3 V4 g
  P  J( t1 ]$ j" j0 I9 |
# 替换成你偏好的镜像源
3 r# e* M2 @6 D$ {replace-with = 'sjtu'4 J- Z* R) q9 O' |$ j; s
#replace-with = 'ustc'4 A4 B! w" n- H
8 A# }& m8 ]; z# X& Q
# 清华大学
# ^1 u4 x# D8 p  G, u8 J+ A[source.tuna]
3 q7 x& V- z$ V0 F  t+ Y6 zregistry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"7 p' J! Y* t! {9 x* r, z/ Q

$ d8 I  {, h* g0 x9 L, u, V# 中国科学技术大学
' b* k# H2 t! `4 ^[source.ustc]
7 ]) o3 z: h3 ]! A" {( Tregistry = "git://mirrors.ustc.edu.cn/crates.io-index"% L! f$ r5 E2 A- K. y2 l; \
! n, w! N, N+ F' S' p0 E
# 上海交通大学' \6 ]* b1 l& q4 ^6 D# t! q4 k, t
[source.sjtu]
2 g3 M2 j6 \; Z% z9 uregistry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
3 H) S* Z/ H& G* `5 ~9 {9 i
) j9 L, c# h5 x$ x# rustcc社区# i; u8 y% t5 g$ a& z6 R7 U5 z- K
[source.rustcc]
. U9 T; w) d  q9 o# Bregistry = "git://crates.rustcc.cn/crates.io-index"( q5 ~, M; u- p/ I1 l
<以上代码可复制粘贴,可往左滑>
修改完成之后,再回到dog-0.1.0目录里面,重新构建dog程序,并运行测试一下:
bob@ubuntu-18-04:~/dog-0.1.0$ cargo build1 t; H3 e# q5 Y! p! w
bob@ubuntu-18-04:~/dog-0.1.0$ cargo test, W+ M( y& ?( W9 J$ q
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222746.png
微信图片_20201210222749.png

( R$ f. k! z, P$ e- x! K! D确保dog命令从任何目录运行,将二进制文件放在/usr/local/bin目录中。
bob@ubuntu-18-04:~/dog-0.1.0$ sudo cp -p ~/dog-0.1.0/target/debug/dog /usr/local/bin0 C+ C( Y( b) Q+ ^
<以上代码可复制粘贴,可往左滑>
运行dog工具,查看以下版本:
bob@ubuntu-18-04:~$ dog --version
, D% F4 [2 E5 n; i) hdog ● command-line DNS client
: R! e) M% c6 z! D$ M  Zv0.1.0 [] built on 2020-11-19 (pre-release!): }) M; S8 @7 H$ z2 V
https://dns.lookup.dog/  b0 M9 S, P/ l* H5 U
bob@ubuntu-18-04:~$
/ `  l$ f) i: {. @5 x% `
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222753.png

' a% t7 A2 @( T% x$ B# ?/ T可以使用源码包里面的命令补全脚本,当需要提示的时候按两下TAB键,显示子命令:
bob@ubuntu-18-04:~$ source ~/dog-0.1.0/completions/dog.bash0 O( U9 ]. P7 c! z  X
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222756.png

1 Z, [4 R$ i7 C3 V2 z
如何使用dog命令

% w) A4 d$ K# ^; C/ P0 w

0 a9 I: g" b# E! r* r6 q: H8 U
现在,让我们看看如何使用dog命令查询不同的DNS记录。
查询A记录
bob@ubuntu-18-04:~$ dog www.baidu.com
6 L2 W& h" c* P! Z' oCNAME www.baidu.com.    5s   "www.a.shifen.com."$ F* H0 I2 z2 g6 Y* b. w
    A www.a.shifen.com. 4s   180.101.49.12! ^9 w; i2 V; U# {% f7 j7 P7 f
    A www.a.shifen.com. 4s   180.101.49.11
1 ^  B. y6 ?- F. R/ p; r$ B' ~
<以上代码可复制粘贴,可往左滑>
查询NS记录
bob@ubuntu-18-04:~$ dog aliyun.com NS
2 Q. B, ^) a# r' v5 k4 O6 |NS aliyun.com. 5s   "ns3.aliyun.com."
, q/ `8 R7 P  b% b" b" _. L5 JNS aliyun.com. 5s   "ns5.aliyun.com."3 k0 W. j6 S, v/ Z
NS aliyun.com. 5s   "ns4.aliyun.com."/ Z9 f/ k' M* z
<以上代码可复制粘贴,可往左滑>
使用指定的域名服务器地址查询
bob@ubuntu-18-04:~$ dog google.com MX @1.1.1.1, b5 L3 i5 l& m3 Z' v) _7 ?* w2 W
MX google.com. 6m23s   30 "alt2.aspmx.l.google.com."+ v% E% f8 G( [$ {3 K- r% l
MX google.com. 6m23s   40 "alt3.aspmx.l.google.com."9 O0 {  ]+ ^2 s3 H
MX google.com. 6m23s   10 "aspmx.l.google.com."
/ D. c" t# e7 t4 BMX google.com. 6m23s   50 "alt4.aspmx.l.google.com."/ t- z0 @+ ^7 I, h& X+ {
MX google.com. 6m23s   20 "alt1.aspmx.l.google.com."" u2 y6 j3 ]8 l3 j2 J" Q' d1 h' c' G: y
<以上代码可复制粘贴,可往左滑>
JSON格式输出
bob@ubuntu-18-04:~$ dog A www.baidu.com -J
, j8 C5 l+ ^0 r* v, \2 _" P2 m{"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}]}]}
' q2 K3 [+ G! G! @& b
<以上代码可复制粘贴,可往左滑>
0 x9 k0 l' v; O* \8 A
微信图片_20201210222758.png
2 f. h+ O8 i. F
查看帮助
bob@ubuntu-18-04:~$ dog --help( I! M$ ]% P. I+ ?( N
<以上代码可复制粘贴,可往左滑>
微信图片_20201210222801.png
$ Y$ K5 K& Z' D" g; N4 l4 f: V2 r
赞 收藏 评论0 发布时间:2020-12-10 22:32

举报

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