Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dnsdiag — DNS 测量、故障排除和安全审计工具集 | Kitploit
工具/GitHubGitHub/farrokhi/dnsdiag
侦察网络映射漏洞分析信息收集网络安全DNS 分析DNS 分析 分类第 1 名
GitHubfarrokhi/dnsdiag

dnsdiag

DNS 测量、故障排除和安全审计工具集

查看仓库
1.1k111537天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

PyPI PyPI Downloads Downloads PyPI Docker Pulls GitHub stars

DNS 测量、故障排查与安全审计工具集

你是否曾怀疑你的 ISP 正在拦截你的 DNS 流量? 你是否注意到 DNS 响应中有任何异常行为,或者被重定向到错误的地址,并怀疑你的 DNS 可能出了问题?我们提供了一套工具,可对你的 DNS 请求和响应执行基本审计,帮助你确保 DNS 按预期运行。

使用 dnsping,你可以测量任意 DNS 服务器对任意查询的响应时间。与常规 ping 工具类似,dnsping 为 DNS 请求提供了类似功能,帮助你监控服务器响应能力。

你还可以使用 dnstraceroute 追踪 DNS 请求到目的地的路由,验证它是否被重定向或拦截。通过比较发送到同一服务器的 DNS 查询,dnstraceroute 允许你观察所走路径的任何差异,从而提醒你可能存在的问题。

dnseval 会评估多个 DNS 解析器,帮助你为网络选择最佳 DNS 解析器。虽然建议使用你自己的 DNS 解析器以避免依赖第三方 DNS 解析器,但在需要时,dnseval 可以帮助选择最优 DNS 解析器。它让你能够根据性能(延迟)和可靠性(丢包)比较 DNS 服务器,为你提供全面的视图,以便做出明智决策。

安装

使用此工具集有多种方式,不过我们建议直接从源代码运行,以获得最佳的灵活性和控制力。从源代码运行或使用 pip 安装需要 Python 3.11 或更高版本。

源代码

  1. 检出 git 仓库并安装依赖:
git clone https://github.com/farrokhi/dnsdiag.git
cd dnsdiag
pip3 install -r requirements.txt
  1. 你也可以使用 pip 安装该软件包:
pip3 install dnsdiag

使用 uv(推荐)

uv 是一个快速的 Python 包管理器,可以直接运行工具而无需安装:

# Run dnsping directly without installation
uvx --from dnsdiag dnsping google.com

# Run with specific options
uvx --from dnsdiag dnsping -c 5 --tls -s 8.8.8.8 example.com

# Run dnstraceroute
uvx --from dnsdiag dnstraceroute cloudflare.com

# Run dnseval
uvx --from dnsdiag dnseval -f public-servers.txt github.com

要持久安装 dnsdiag:

# Install dnsdiag tools
uv tool install dnsdiag

# Upgrade to the latest version
uv tool upgrade dnsdiag

二进制包

我们会不定期发布适用于 Windows、Mac OS X 和 Linux 的二进制包。你可以从发布页面获取最新版本。

支持的平台

预构建二进制文件适用于:

  • Linux(x86_64、ARM64)
  • macOS(Intel、Apple Silicon)
  • Windows(x86_64)

目前不支持 Windows ARM64,因为构建依赖需要原生编译工具链,而这些工具链并不容易获得。如果你在 ARM 上使用 Windows,可以通过 Windows Subsystem for Linux(WSL2)运行 dnsdiag,或直接从源代码安装。

Docker

如果你不想在本地机器上安装 dnsdiag,可以使用 Docker 镜像在容器化环境中运行这些工具。例如:

docker run --network host -it --rm farrokhi/dnsdiag dnsping.py

dnsping

dnsping 允许你通过多次发送任意 DNS 查询来“ping”DNS 解析器。要查看支持的完整命令行选项列表,请使用 --help。以下是一些关键标志:

  • 使用 --tcp、--tls、--doh、--quic 或 --http3 选择传输协议(默认是 UDP)。这些选项互斥;每条命令只能指定一种协议。
  • 使用 --flags 显示每个响应的响应标志,包括 EDNS 标志。
  • 使用 --dnssec 请求 DNSSEC 验证(如果可用)。
  • 当存在扩展 DNS 错误消息(RFC 8914)时,会自动显示。
  • 使用 --nsid 显示名称服务器标识符(NSID)(如果可用)(RFC 5001)。
  • 使用 --ecs 包含 EDNS Client Subnet 信息,以进行地理路由优化。
  • 使用 --cookie 在响应中存在 DNS cookies(RFC 7873)时显示它们。
./dnsping.py -c 5 --dnssec --flags --tls -t AAAA -s 8.8.8.8 brokendnssec.net
dnsping.py DNS: 8.8.8.8:853, hostname: brokendnssec.net, proto: TLS, class: IN, type: AAAA, flags: [RD]
75  bytes from 8.8.8.8: seq=1   time=73.703 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=2   time=69.523 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=3   time=58.058 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=4   time=54.235 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]
75  bytes from 8.8.8.8: seq=5   time=57.806 ms  SERVFAIL [QR RD RA -- DO] [EDE:10("For brokendnssec.net/soa")]

--- 8.8.8.8 dnsping statistics ---
5 requests transmitted, 5 responses received, 0% lost
min=54.235 ms, avg=22.665 ms, max=69.523 ms, stddev=38.202 ms

dnsping 还提供统计信息,例如最小、最大和平均响应时间,以及抖动(标准差)和丢包率。

以下是 dnsping 的一些有趣用例:

  • 比较不同传输协议(例如 UDP 与 DoH)之间的响应时间。
  • 通过测量抖动和丢包来评估 DNS 服务器的可靠性。
  • 使用 --dnssec 标志测量启用 DNSSEC 时的响应时间。
  • 测试 EDNS Client Subnet 行为,以获得地理定位感知响应:
./dnsping.py -c 3 --ecs 203.0.113.0/24 -s 94.140.14.14 google.com
dnsping.py DNS: 94.140.14.14:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
66  bytes from 94.140.14.14: seq=1   time=31.407 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=2   time=29.156 ms  NOERROR [ECS:203.0.113.0/24/24]
66  bytes from 94.140.14.14: seq=3   time=30.892 ms  NOERROR [ECS:203.0.113.0/24/24]

--- 94.140.14.14 dnsping statistics ---
3 requests transmitted, 3 responses received, 0% lost
min=29.156 ms, avg=30.485 ms, max=31.407 ms, stddev=1.176 ms
  • 使用 NSID 选项识别 DNS 服务器:
./dnsping.py -c 2 --nsid -s 8.8.8.8 google.com
dnsping.py DNS: 8.8.8.8:53, hostname: google.com, proto: UDP, class: IN, type: A, flags: [RD]
68  bytes from 8.8.8.8: seq=1   time=36.399 ms  NOERROR [NSID:gpdns-ams]
68  bytes from 8.8.8.8: seq=2   time=32.156 ms  NOERROR [NSID:gpdns-ams]

--- 8.8.8.8 dnsping statistics ---
2 requests transmitted, 2 responses received, 0% lost
min=32.156 ms, avg=34.278 ms, max=36.399 ms, stddev=2.122 ms
  • 测试 DNS cookies,以增强安全性和缓存优化:
./dnsping.py -c 2 --cookie -s anyns.pch.net quad9.net
dnsping.py DNS: anyns.pch.net:53, hostname: quad9.net, proto: UDP, class: IN, type: A, flags: [RD]
82  bytes from anyns.pch.net: seq=1   time=30.552  ms  NOERROR [COOKIE:27f609c017bb2ec4ea70de5c68eec3fc39f6a53ee49c55f8]
82  bytes from anyns.pch.net: seq=2   time=24.794  ms  NOERROR [COOKIE:719631dd9fcce722d3ac859b68eec3fd2e5430b5c8a7f8cf]

--- anyns.pch.net dnsping statistics ---
2 requests transmitted, 2 responses received, 0% lost
min=24.794 ms, avg=27.673 ms, max=30.552 ms, stddev=4.072 ms

解读 DNSSEC 和安全相关标志

使用 --dnssec 和 --flags 时,dnsping 会暴露与 DNS 安全验证直接相关的 DNS 协议字段。这些值表示解析器是否能够验证 DNSSEC,以及响应是否已成功验证。

常见标志:

  • DO (DNSSEC OK)
    表示客户端正在请求与 DNSSEC 相关的记录。它的存在表明解析器支持 DNSSEC 查询。

  • AD (Authenticated Data)
    当响应已使用 DNSSEC 进行加密验证时,由执行验证的解析器设置。这是 DNSSEC 验证已启用且成功的强烈信号。

典型模式:

结果含义
带 AD 标志的 NOERRORDNSSEC 验证成功
带 DO 标志的 SERVFAILDNSSEC 验证失败(通常由于签名损坏或配置错误)
不存在 AD 标志解析器未执行 DNSSEC 验证

扩展 DNS 错误(EDE,RFC 8914)在 DNSSEC 验证失败时提供额外的诊断信息。例如:

  • EDE:10 – DNSSEC Bogus(无效或损坏的 DNSSEC 数据)
  • EDE:6 – DNSSEC Signature Expired
  • EDE:7 – DNSSEC Signature Not Yet Valid

这些指标使 dnsping 不仅可用于性能测试,还可用于验证解析器是否正确执行 DNSSEC,以及诊断 DNSSEC 部署问题。

dnstraceroute

dnstraceroute 是一个用于追踪 DNS 请求到目的地路径的实用工具。你可能希望将其与实际的网络 traceroute 进行比较,以确保你的 DNS 流量没有经过任何不需要的路径。

dnstraceroute 支持多种传输协议(互斥):

  • UDP(默认)- 传统 DNS 查询
  • TCP(--tcp)- DNS over TCP
  • DoQ(--quic)- DNS over QUIC(由 AdGuard DNS 支持)
  • DoH3(--http3)- DNS over HTTP/3(由 Google DNS 和 Cloudflare 支持)
./dnstraceroute.py --expert --asn -C -t A -s 8.8.4.4 facebook.com

你也可以测试现代 DNS 协议:

# Test DNS over QUIC with AdGuard DNS
./dnstraceroute.py --quic -s 94.140.14.14 -c 3 google.com

# Test DNS over HTTP/3 with Google DNS
./dnstraceroute.py --http3 -s 8.8.8.8 -c 3 google.com
dnstraceroute.py DNS: 8.8.4.4:53, hostname: facebook.com, rdatatype: A
1	192.168.0.1 (192.168.0.1) 1 ms
2	192.168.28.177 (192.168.28.177) 4 ms
3	192.168.0.1 (192.168.0.1) 693 ms
4	172.19.4.17 (172.19.4.17) 3 ms
5	dns.google (8.8.4.4) [AS15169 GOOGLE, US] 8 ms

=== Expert Hints ===
 [*] public DNS server is next to a private IP address (possible hijacking)

在 dnstraceroute 中使用 --expert 标志将启用专家提示的显示,包括有关潜在 DNS 流量劫持的警告。

下载工具