Dog是用于DNS查询的命令行工具,其工作方式与dig类似。它具有丰富多彩的输出,支持DNS-over-TLS和DNS-over-HTTPS协议,可以输出JSON格式。系统环境Ubuntu20.04.1LTS安装Dog是一款用Rust编写的DNS查询工具。Dog需要高于1.45.0的rustc版本。我们使用apt安装的版本不符合这个要求。接下来,我们将通过其他方式安装rustc。接下来需要先安装libssl-dev安装包:bob@ubuntu-20-04:~$sudoaptinstall-ycargolibssl-dev<以上代码可复制粘贴,向左滑动即可>下面安装rust,因为你按照官方文档安装rust,有时候下载没有进度,所以先修改这里的镜像源,改成国内的,然后执行安装:bob@ubuntu-18-04:~$exportRUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-staticbob@ubuntu-18-04:~$exportRUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustupbob@ubuntu-18-04:~$curlhttps://sh.rustup.rs-sSf|sh<上面的代码可以复制粘贴,可以向左滑动>在下面的地方,选择选项1,安装完成后,需要执行以下命令使用cargo命令bob@ubuntu-18-04:~$source$HOME/.cargo/env<以上代码可复制粘贴,向左滑动>查看rustc版本以下:bob@ubuntu-18-04:~$rustc--versionrustc1.47.0(18bf6b4f02020-10-07)<上面的代码可以复制粘贴,可以去左边滑>从github下载dog安装包并解压它:bob@ubuntu-20-04:~$wgethttps://github.com/ogham/dog/archive/v0.1.0.tar.gzbob@ubuntu-20-04:~$tarxvfv0.1.0.tar.gz<以上代码可复制粘贴,可向左滑动>进入解压目录,构建dog程序:bob@ubuntu-20-04:~$cddog-0.1.0/<以上代码可复制并粘贴,可以向左滑动>默认仓库地址更新会比较慢,这里按ctrl+c结束更新,home目录下会生成一个.cargo文件夹,进去新建config配置文件,并添加如下内容进去修改默认仓库这样,更新速度会快很多:bob@ubuntu-20-04:~/dog-0.1.0$cat~/.cargo/config[source.crates-io]registry="https://github.com/rust-lang/crates.io-index"#替换成你喜欢的图片源replace-with='sjtu'#replace-with='ustc'#青华大学[source.tuna]registry="https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"#中国科技大学[source.ustc]registry="git://mirrors.ustc.edu.cn/crates.io-index"#上海交通大学[source.sjtu]registry="https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"#rustcccommunity[source.rustcc]registry="git://crates.rustcc.cn/crates.io-index"<以上代码可复制粘贴,可向左滑动>修改完成后,回到dog-0.1.0目录下,重建dog程序,运行测试:bob@ubuntu-18-04:~/dog-0.1.0$cargobuildbob@ubuntu-18-04:~/dog-0.1.0$cargotest<以上代码可复制粘贴,可向左滑动>确保从任意目录运行dog命令,将二进制文件放在/usr/local/bin目录下bob@ubuntu-18-04:~/dog-0.1.0$sudocp-p~/dog-0.1.0/target/debug/dog/usr/local/bin<以上代码可以复制粘贴,你可以向左滑动>运行dog工具查看以下版本:bob@ubuntu-18-04:~$dog--versiondogcommand-lineDNSclientv0.1.0[]builton2020-11-19(pre-release!)https://dns.lookup.dog/bob@ubuntu-18-04:~$<以上代码可复制粘贴,向左滑动>即可使用源码包中的命令完成脚本。需要提示时,按两次TAB键显示子命令:bob@ubuntu-18-04:~$source~/dog-0.1.0/completions/dog.bash<以上代码可复制粘贴,可以向左滑动>dog命令的使用方法下面,让我们看看如何使用dog命令查询不同的DNS记录。查询A记录bob@ubuntu-18-04:~$dogwww.baidu.comCNAMEwww.baidu.com.5s"www.a.shifen.com."Awww.a.shifen.com.4s180.101.49.12Awww.a。shifen.com.4s180.101.49.11<以上代码可复制粘贴,可向左滑动>查询NS记录bob@ubuntu-18-04:~$dogaliyun.comNSNSaliyun.com.5s"ns3.aliyun.com."NSaliyun.com.5s"ns5.aliyun.com."NSaliyun.com.5s"ns4.aliyun.com."<以上代码可复制粘贴,可向左滑动>使用指定域名要查询的服务器地址bob@ubuntu-18-04:~$doggoogle.comMX@1.1.1.1MXgoogle.com.6m23s30"alt2.aspmx.l.google.com."MXgoogle.com.6m23s40"alt3.aspmx.l.google.com."MXgoogle.com.6m23s10"aspmx.l.google.com."MXgoogle.com.6m23s50"alt4.aspmx.l.google.com."MXgoogle.com.6m23s20"alt1.aspmx.l.google.com."<以上代码可复制粘贴,左滑即可>JSON格式输出bob@ubuntu-18-04:~$dogAwww.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<以上代码可复制粘贴已粘贴,您可以向左滑动>
