4 个版本
0.2.7 | 2024年5月8日 |
---|---|
0.2.6 | 2024年4月19日 |
0.2.5 | 2024年2月22日 |
#205 在 命令行工具
每月 21 次下载
315KB
2.5K SLoC
doge 可以查询!
doge 是一个命令行 DNS 客户端,类似于 dig
,它从 这里 的出色工作中衍生而来。它具有彩色输出,理解正常的命令行参数语法,支持 DNS-over-TLS 和 DNS-over-HTTPS 协议,并且可以输出 JSON。我相信这是一个令人惊叹的项目,应该得到改进。
示例
doge example.net Query a domain using default settings
doge example.net MX ...looking up MX records instead
doge example.net MX @1.1.1.1 ...using a specific nameserver instead
doge example.net MX @1.1.1.1 -T ...using TCP rather than UDP
doge exapple.net MX @1.1.1.1 -p 53 ...using a nonstandart port
doge -q example.net -t MX -n 1.1.1.1 -T As above, but using explicit arguments
命令行选项
查询选项
<arguments> Human-readable host names, nameservers, types, or classes
-q, --query=HOST Host name or domain name to query
-t, --type=TYPE Type of the DNS record being queried (A, MX, NS...)
-n, --nameserver=ADDR Address of the nameserver to send packets to
-p, --port=PORT Port options for sending queries on nonstandart ports
--class=CLASS Network class of the DNS record being queried (IN, CH, HS)
发送选项
--edns=SETTING Whether to OPT in to EDNS (disable, hide, show)
--txid=NUMBER Set the transaction ID to a specific value
-Z=TWEAKS Set uncommon protocol-level tweaks
协议选项
-U, --udp Use the DNS protocol over UDP
-T, --tcp Use the DNS protocol over TCP
-S, --tls Use the DNS-over-TLS protocol
-H, --https Use the DNS-over-HTTPS protocol
输出选项
-1, --short Short mode: display nothing but the first result
-J, --json Display the output as JSON
--color, --colour=WHEN When to colourise the output (always, automatic, never)
--seconds Do not format durations, display them as seconds
--time Print how long the response took to arrive
安装
目前:要安装 dog,您可以下载预编译的二进制文件,或者从源代码编译。根据您的平台,您可能可以使用操作系统包管理器安装 dog。
问题:我根本不是 rust 专家,说实话,我正好相反,只是在学习编码。我在我的 arch 系统上使用了 dog
,以及一些我不断修复和破坏的随机 *nix 笔记本电脑。因此,该项目的一部分将超出我的技能范围或目前的能力。对于 Windows,我不打算很快安装 windows 11,因此我可能不会添加新的 windows 功能。对于 Macos,直到我能负担得起购买 mac 的费用,构建发布包的工作流程将是 macos 将得到的唯一支持。对于 Docker,对我来说这是一项魔法。当我学习如何有意义地使用它时,请期待事情会出错。
If any of these are things you want to see make a PR and I'll read and merge it, Be on the lookout for some potentially dumb questions from me.
包
They exist now !!!
$ cargo install dns-doge
$ yay -S dns-doge
下载
doge 的二进制文件可以从 GitHub 的发布部分 下载,适用于 64 位 Windows、macOS 和 Linux 目标。它们包含编译后的可执行文件、手册页和 shell 完整性。
编译
doge 用 Rust 编写。我正在使用 rustc 版本 1.76.0,您应该运行此版本或更高版本。开发 Rust 的推荐方式是从 官方下载页面 使用 rustup 安装。
要构建,下载源代码并运行
$ cargo build
$ cargo test
-
如果您在为自己编译副本,请确保运行以下命令以利用发布模式优化:
cargo build --release
或make build-release
。将生成的二进制文件(位于target/release
目录中)复制到您的$PATH
中的一个文件夹。通常,/usr/local/bin
是一个不错的选择。 -
要编译和安装手册页,您需要 pandoc。使用
make man
命令将 Markdown 编译为手册页,并将其放置在target/man
目录中。要使用它们,将它们复制到man
可以读取的目录中。通常,/usr/local/share/man
是一个不错的选择。
容器镜像
要构建 doge 的容器镜像,您可以使用 Docker、Podman 或 Kaniko。以下是一个使用 Docker 的示例
$ docker build -t doge .
然后您可以使用以下命令运行它
$ docker run -it --rm doge
要直接运行 dog,您可以定义以下别名
$ alias doge="docker run -it --rm doge"
功能切换
doge 有三个 Cargo 功能可以被禁用来移除功能。虽然这样做会使 doge 变得不那么有用,但它会生成一个更小的二进制文件,构建时间也更短。
有三个可用的功能切换,默认都是激活的
with_idna
,它启用 IDNA 处理with_tls
,它启用 DNS-over-TLSwith_https
,它启用 DNS-over-HTTPS(需要with_tls
)
使用 cargo
构建一个使用功能切换的二进制文件。例如,要禁用 TLS 和 HTTPS 支持,但保持 IDNA 支持启用,您可以运行
$ cargo build --no-default-features --features=with_idna
已禁用的功能列表可以在运行时作为 --version
字符串的一部分进行检查。
文档
有关如何使用 doge 的文档,请参阅 dog 网站:https://dns.lookup.dog/ 最终我会制作一个新的
依赖项
~2–13MB
~155K SLoC