我正在编写一个需要使用用户指定的 DNS 服务器查询 DNS 记录的脚本。DNS 服务器可以采用任何协议,包括 UDP、TCP、DNS over HTTPS (DoH) 和 DNS over TLS (DoT)。
我知道dig
能够处理 UDP 和 TCP 的 DNS(带有+tcp
标志)。有没有办法可以使用dig
或其他工具来查询 DoH 和 DoT 服务器?
我更喜欢已经存在的流行工具,curl
这样我的脚本会更便携,但也欢迎其他建议。
我正在编写一个需要使用用户指定的 DNS 服务器查询 DNS 记录的脚本。DNS 服务器可以采用任何协议,包括 UDP、TCP、DNS over HTTPS (DoH) 和 DNS over TLS (DoT)。
我知道dig
能够处理 UDP 和 TCP 的 DNS(带有+tcp
标志)。有没有办法可以使用dig
或其他工具来查询 DoH 和 DoT 服务器?
我更喜欢已经存在的流行工具,curl
这样我的脚本会更便携,但也欢迎其他建议。
我没有找到用于这两个目的的单一工具,但我确实找到了使用它们的方法。
查询DoH有两种方式:
对于 DoT,您可以
kdig
使用knot
. 命令行类似于dig
:其中是 tls 主机 ( )
8.8.8.8
的预解析地址。dns.google.com
更新:这是一个工具(https://github.com/ameshkov/dnslookup),它自己支持所有主要的 DNS 协议,并且能够产生机器可读的输出。
curl自版本 7.62.0 起具有官方DoH支持(问题是您的目标端点中有多少 curl 更新到此版本。)
通过使用该
--doh-url
选项来使用它。例子:见: https ://github.com/curl/curl/wiki/DOH-implementation https://daniel.haxx.se/blog/2018/09/06/doh-in-curl/
Dog是用 Rust 编写并支持 DOH/DOT 的挖掘替代方案。安装
例子:
dog -H @https://dns.google/dns-query google.com
dog google.com --tls @dns.google
它也可以输出为json。
对于 DoH(DNS-over-HTTPS):
-v
。如果 dig 被编译为支持它 +tls:
有
q
( https://github.com/natesales/q ) 支持 DNS-over-QUIC 以及 DNS-over-TLS 和 DNS-over-HTTPS。它还支持 DNSSEC。查询和响应的一些示例。