Dog-用于DNS查询的命令行工具

2023-10-31 11:21

本文主要是介绍Dog-用于DNS查询的命令行工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导读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=https://mirrors.ustc.edu.cn/rust-static
bob@ubuntu-18-04:~$ export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
bob@ubuntu-18-04:~$ curl https://sh.rustup.rs -sSf | 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 https://github.com/ogham/dog/archive/v0.1.0.tar.gz
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 = "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"# 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!)
https://dns.lookup.dog/
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 www.baidu.com
CNAME www.baidu.com.    5s   "www.a.shifen.com."A www.a.shifen.com. 4s   180.101.49.12A www.a.shifen.com. 4s   180.101.49.11

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 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}]}]}

Dog-用于DNS查询的命令行工具Dog-用于DNS查询的命令行工具

查看帮助

bob@ubuntu-18-04:~$ dog --help

Dog-用于DNS查询的命令行工具Dog-用于DNS查询的命令行工具

总结

Dog是一个用于DNS查询的命令行工具,它的工作原理类似于dig。它具有丰富多彩的输出,支持DNS-over-TLS 和 DNS-over-HTTPS协议,并且可以输出JSON格式。

本文原创地址:https://www.linuxprobe.com/dog-dns-query-tools.html

这篇关于Dog-用于DNS查询的命令行工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315013

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

MySQL多列IN查询的实现

《MySQL多列IN查询的实现》多列IN查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL多列IN查询的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析与优化1.

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批