13 个版本 (稳定版)

2.0.0 2022 年 9 月 18 日
1.3.0 2022 年 2 月 18 日
1.2.3 2022 年 1 月 31 日
1.2.1 2021 年 11 月 17 日
0.1.0 2020 年 11 月 29 日

#1442命令行工具

每月 42 次下载

MIT 许可证

270KB
5K SLoC

toluol

crates.io docs.rs

toluol 是一个用于进行 DNS 查询的命令行工具,旨在替代 dig。它可以用于所有类型的 DNS 查询,包括

  • 常规 DNS 查询
  • 带有 +do 标志的 DNSSEC 记录查询
  • 带有 dot/+tls 标志的 DNS over TLS (DoT)
  • 带有 +doh/+https 标志的 DNS over HTTPS (DoH)
  • 带有 +http 标志的 DNS over HTTP (DoH 但不带 TLS,非常适合本地调试 DoH)
  • 带有 -x 选项的反向查询

其他有用功能包括

  • 默认为简洁的输出 —— 可选择详细输出
  • 默认支持 IPv6
  • 脚本友好的选项
    • JSON 输出(例如,用于与 jq(1) 一起使用,见下文示例)
    • 无填充输出(例如,用于与 cut(1) 一起使用,见下文示例)

此存储库包含一个用于创建、编码和解析 DNS 消息的库 crate,以及一个用于从命令行进行 DNS 查询的二进制 crate。

要查看库大部分功能的使用示例,请查看二进制文件的代码(src/main.rs)。

安装

Arch Linux (AUR)

yay-S toluol

通过 cargo install

cargoinstall toluol

cargo-update致敬——在按照上述方法安装了toluol之后,您可以通过cargo install-update toluol来更新它,如果您已安装了cargo-update(或者运行cargo install-update -a来更新通过cargo install安装的所有包)。

示例

AAAA查询

# the query type is not case-sensitive and order of the arguments does not matter, so `toluol example.com aaaa` would also work
# also, AAAA is the default query type, so in this case just `toluol example.com` would work as well
$ toluol AAAA example.com
example.com.  30283  AAAA  2606:2800:220:1:248:1893:25c8:1946

response from ordns.he.net:53 in 23 ms

使用指定名称服务器的DNS over TLS (DoT) 查询

# or `toluol @dns.google AAAA example.com +tls`
$ toluol @dns.google AAAA example.com +dot
example.com.  86400  AAAA  2606:2800:220:1:248:1893:25c8:1946

response from dns.google:853 in 35 ms

带有DNSSEC记录的查询

$ toluol AAAA example.com +do
example.com.  26860  AAAA   2606:2800:220:1:248:1893:25c8:1946
example.com.  26860  RRSIG  AAAA 8 2 86400 20220309052808 20220216115840 1618 example.com. JlODulmkXKTi5EvxUJDcVh2pDZY8CovFWykPS9HhjbicMQJyCsngkHeRWVzndGU9nTYKiBGRJY2cMPzV5S4Lxh3AojM42xsuT0kQh7dDWOgfuZEeaLbSsZgLA1Xy2WnrxHlHv965cOMDcylqXHi7WEgBhiFTBMP6w6R5vgKxp5w=

response from ordns.he.net:53 in 15 ms

详细输出

$ toluol AAAA example.com
Header:
        id: 57320, opcode: QUERY, rcode: NOERROR, flags: rd ra ad cd

OPT Pseudosection:
        EDNS: Version 0, flags: <none>; payload size: 512

Question Section:
        example.com.         AAAA

Answer Section:
        example.com.  28653  AAAA  2606:2800:220:1:248:1893:25c8:1946

Query metadata:
        Time:        15 ms
        Reply size:  68 bytes
        Server:      ordns.he.net:53

逆向查询

$ toluol -x 2001:470:20::2
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.7.4.0.1.0.0.2.ip6.arpa.  86400  PTR  ordns.he.net.

response from ordns.he.net:53 in 141 ms

使用cut(1)仅打印RDATA

$ toluol MX gmail.com +no-padding +no-meta | cut -d' ' -f4-
10 alt1.gmail-smtp-in.l.google.com.
5 gmail-smtp-in.l.google.com.
40 alt4.gmail-smtp-in.l.google.com.
30 alt3.gmail-smtp-in.l.google.com.
20 alt2.gmail-smtp-in.l.google.com.

使用jq(1)仅以JSON数组格式打印RDATA

$ toluol MX gmail.com +json | jq '[.[] | .rdata]'
[
  [
    "10",
    "alt1.gmail-smtp-in.l.google.com."
  ],
  [
    "5",
    "gmail-smtp-in.l.google.com."
  ],
  [
    "40",
    "alt4.gmail-smtp-in.l.google.com."
  ],
  [
    "30",
    "alt3.gmail-smtp-in.l.google.com."
  ],
  [
    "20",
    "alt2.gmail-smtp-in.l.google.com."
  ]
]

有用资源

许可证

LICENSE.txt


版权(c)2022 Max von Forell

依赖关系

~12–23MB
~447K SLoC