项目概述
DNS Benchmark Tool 是由开发者 frankovo 创建的一个专业的DNS性能测试工具。该项目旨在帮助用户快速、全面地测试DNS解析器的性能,支持DNSSEC验证、DoH/DoT等现代DNS安全特性,并提供企业级的功能特性。
项目亮点
核心功能特性
🚀 性能测试能力
- 异步查询: 支持同时测试100+个DNS解析器
- 多轮测试: 运行多轮基准测试以确保结果准确性
- 统计分析: 提供均值、中位数、P95、P99、抖动、稳定性等详细统计
- 缓存控制: 支持有/无DNS缓存的测试模式
- 高并发: 支持大规模并发查询测试
🔒 安全与隐私特性
- DNSSEC验证: 内置DNSSEC信任链验证
- DNS-over-HTTPS (DoH): 支持加密DNS基准测试
- DNS-over-TLS (DoT): 安全传输测试
- DNS-over-QUIC (DoQ): 实验性QUIC支持
📊 分析与导出功能
- 多格式输出: CSV、Excel、PDF、JSON格式
- 可视化报告: 图表和图形分析
- 域名统计: 按域名的性能分析
- 错误分析: 识别有问题的解析器
- 详细报告: 包含执行摘要和技术深度分析
🏢 企业级功能
- TSIG认证: 安全的企业查询
- 区域传输: AXFR/IXFR验证
- 动态更新: 测试DNS写入操作
- 合规报告: 审计就绪的文档
🌐 跨平台支持
- 多操作系统: Linux、macOS、Windows全平台支持
- CI/CD友好: JSON输出、退出代码支持
- IDNA支持: 国际化域名支持
- 自动检测: Windows WMI DNS发现
快速开始
安装方法
1 2 3 4 5 6 7 8 9 10
| pip install dns-benchmark-tool
pip install dns-benchmark-tool[pdf]
git clone https://github.com/frankovo/dns-benchmark-tool.git cd dns-benchmark-tool pip install -e .
|
基本使用
1 2 3 4 5 6 7 8 9 10 11
| dns-benchmark benchmark --use-defaults --formats csv,excel
dns-benchmark top
dns-benchmark compare Cloudflare Google Quad9
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600
|
实际应用场景
🔧 开发者:优化API性能
1 2 3 4 5 6
| dns-benchmark benchmark \ --domains api.myapp.com,cdn.myapp.com \ --record-types A,AAAA \ --resolvers production.json \ --iterations 10
|
🛡️ DevOps/SRE:迁移前验证
1 2 3 4 5 6
| dns-benchmark benchmark \ --resolvers current-dns.json,new-dns.json \ --use-defaults \ --output migration-report/ \ --formats csv,excel
|
🏠 自建用户:验证Pi-hole性能
1 2 3 4 5
| dns-benchmark compare \ --resolvers pihole.local,1.1.1.1,8.8.8.8,9.9.9.9 \ --domains common-sites.txt \ --rounds 10
|
📊 网络管理员:自动化健康检查
1 2 3 4 5 6 7
| 0 0 1 * * dns-benchmark benchmark \ --use-defaults \ --output /var/reports/dns/ \ --formats excel,csv \ --domain-stats \ --error-breakdown
|
高级功能
CLI命令详解
🚀 Top命令 - 快速排名
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| dns-benchmark top
dns-benchmark top --limit 5
dns-benchmark top --metric success
dns-benchmark top --metric reliability
dns-benchmark top --category privacy
|
📊 Compare命令 - 并排比较
1 2 3 4 5 6 7 8
| dns-benchmark compare Cloudflare Google Quad9
dns-benchmark compare Cloudflare Google --show-details
dns-benchmark compare Cloudflare Google -d ./domains.txt
|
🔄 Monitoring命令 - 持续监控
1 2 3 4 5 6 7 8 9
| dns-benchmark monitoring --use-defaults
dns-benchmark monitoring --use-defaults --interval 30 --duration 3600
dns-benchmark monitoring --use-defaults \ --alert-latency 150 --alert-failure-rate 5
|
配置管理
解析器JSON格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| { "resolvers": [ { "name": "Cloudflare", "ip": "1.1.1.1", "ipv6": "2606:4700:4700::1111" }, { "name": "Google DNS", "ip": "8.8.8.8", "ipv6": "2001:4860:4860::8888" } ] }
|
域名列表格式
1 2 3 4 5 6 7 8 9 10 11 12 13
| # 流行网站 google.com github.com stackoverflow.com
# 企业域名 microsoft.com apple.com amazon.com
# CDN和云服务 cloudflare.com aws.amazon.com
|
输出格式详解
CSV输出
- 原始数据:带时间戳和元数据的单个查询结果
- 汇总统计:每个解析器的聚合指标
- 域名统计:按域名的指标(使用–domain-stats时)
- 记录类型统计:按记录类型的指标(使用–record-type-stats时)
- 错误分析:按错误类型的计数(使用–error-breakdown时)
Excel报告
- 原始数据表:所有查询结果及格式
- 解析器汇总:带条件格式的综合统计
- 域名统计:按域名性能(可选)
- 记录类型统计:按记录类型性能(可选)
- 错误分析:聚合错误计数(可选)
- 性能分析:图表和比较分析
PDF报告
- 执行摘要:关键发现和建议
- 性能图表:延迟比较;可选的成功率图表
- 解析器排名:按平均延迟排序
- 详细分析:带百分位的技术深度分析
性能优化建议
快速运行
1
| dns-benchmark benchmark --iterations 1 --timeout 1 --retries 0 --warmup-fast
|
适用于:快速反馈,最小重试,轻量级预热。适合快速检查。
彻底测试
1
| dns-benchmark benchmark --iterations 3 --use-cache --warmup --timeout 5 --retries 2
|
适用于:多次运行,启用缓存,完全预热。适合详细基准测试。
调试模式
1
| dns-benchmark benchmark --iterations 1 --timeout 10 --retries 0 --quiet
|
适用于:长超时,无重试,最小输出。适合诊断解析器问题。
平衡运行
1
| dns-benchmark benchmark --iterations 2 --use-cache --warmup-fast --timeout 2 --retries 1
|
适用于:中等速度,一些重试,启用缓存,快速预热。平衡速度和准确性。
自动化与CI/CD
Cron作业示例
1 2 3 4 5
| 0 2 * * * /usr/local/bin/dns-benchmark benchmark --use-defaults --formats csv --quiet --output /var/log/dns_benchmark/daily_$(date +\%Y\%m\%d)
0 */6 * * * /usr/local/bin/dns-benchmark benchmark --use-defaults --formats csv --quiet --output /var/log/dns_benchmark/$(date +\%Y\%m\%d_\%H)
|
GitHub Actions集成
1 2 3 4 5 6 7 8
| - name: DNS Performance Test run: | pip install dns-benchmark-tool dns-benchmark benchmark \ --resolvers "1.1.1.1,8.8.8.8" \ --domains "api.service.com,database.service.com" \ --formats csv \ --quiet
|
社区与反馈
社区亮点
- 星标增长: 从7个增长到110+个,在Hacker News上发布后
- 下载量: 最初停滞后反弹到200+/天
- 社区反馈: HN社区的建设性意见直接影响了v0.3.0 → v0.3.1的补丁
反馈机制
项目提供智能反馈提示:
- 在第5次、第15次和第30次基准测试运行后出现
- 提示之间有24小时冷却时间
- 只有在尚未提供反馈时才显示
隐私保护
- 所有数据存储在本地机器上
- 无遥测或跟踪
- 无自动数据传输
- 反馈状态存储在
~/.dns-benchmark/feedback.json
未来发展路线图
✅ 当前版本(CLI版)
- 跨域和记录类型的DNS解析器基准测试
- 导出到CSV、Excel、PDF、JSON
- 统计分析(P95、P99、抖动、稳定性)
- 自动化支持(CI/CD、cron)
🚧 托管版本(2026年Q1)
CLI版本永久免费。托管版本增加:
- 🌍 多区域测试(美国、欧盟、亚洲、自定义)
- 📊 历史跟踪,带图表和趋势
- 🚨 告警(电子邮件、Slack、PagerDuty、webhooks)
- 👥 团队协作和分享
- 📈 SLA合规报告
- 🔌 API访问和集成
🔜 更多网络工具(2026年Q1-Q2)
作为BuildTools - 网络性能套件的一部分:
- 🔍 HTTP/HTTPS基准测试 - 测试API端点和CDN
- 🔒 SSL证书监控 - 永不错过续期
- 📡 正常运行时间监控 - 24/7可用性跟踪
- 🌐 API健康仪表板 - 完整的网络可观测性
项目统计
- 下载量: 本周1,400+次下载
- 活跃用户: 600+
- 贡献者: 2名主要贡献者
- 语言分布: Python 97.5%, Makefile 2.5%
- 发布版本: 21个标签版本
总结
DNS Benchmark Tool是一个功能强大、文档完善的DNS性能测试工具,适合各种规模的用户使用。无论是开发者优化API性能、DevOps团队验证迁移方案,还是网络管理员进行合规检查,这个工具都能提供专业、准确的DNS性能分析。
其跨平台支持、丰富的输出格式、自动化集成能力,以及活跃的社区支持,使其成为DNS性能测试领域的优秀选择。随着托管版本的即将推出,该项目将继续为用户提供更全面的网络性能解决方案。
该项目是BuildTools - 网络性能套件的一部分,致力于为用户提供全面的网络性能测试和监控解决方案。
项目地址: https://github.com/frankovo/dns-benchmark-tool
PyPI地址: https://pypi.org/project/dns-benchmark-tool/