Skip to content

dnspy 是一个批量 DNS 服务器基准测试工具,用于本地测量全世界的 DNS 服务器的可访问性和性能。生成可视化图表。dnspy is a bulk DNS server benchmarking tool used to measure the local accessibility and performance of DNS servers worldwide. It generates visual charts.

Notifications You must be signed in to change notification settings

xxnuo/dns-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dnspy - DNS 服务器的可访问性和性能测试工具

English | 中文

项目简介

国内 DNS 服务常遭运营商劫持,被插入各种广告,同时存在隐私泄露风险。为了保障安全可靠的上网体验,我们需要寻找值得信赖的 DNS 服务。

现有的同类工具并不多,较为知名的 DNSJumper 仅支持 Windows 平台,且存在数据源较少、评测维度单一等问题。

因此开发了这款工具,用于测试本地网络环境下可用的 DNS 服务器及其性能表现。该工具使用 Golang 编写,跨平台支持 Windows、macOS、Linux。

并且配套提供可视化数据分析面板,让您一目了然地了解可用的 DNS 服务器 😊

温馨提示:点击数据分析面板中的柱状图即可复制服务器地址。

使用流程:按照下文指导下载测试工具并获得测试结果的 JSON 文件,然后打开数据分析面板网站上传数据即可分析。网站不存储任何数据。

数据分析面板预览

数据分析面板预览

数据分析面板(内含示例数据)

使用方式

dnspy

1. 下载工具

在本仓库的 releases 页面中,根据您的系统架构下载对应的 dnspy-* 文件。

例如:M 系列处理器的 macOS 用户应下载 dnspy-darwin-arm64 文件。

2. 准备测试环境

重要提示:必须关闭所有代理软件的 Tun 模式、虚拟网卡模式,否则会严重影响测试结果的准确性。

3. 运行测试

将下载的文件重命名为 dnspy(Windows 系统为 dnspy.exe),然后打开终端,切换到该文件所在的目录,执行以下命令:

unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
./dnspy

按照提示输入即可开始测试。

4. 测试说明

程序默认使用多线程模式以加快测试速度。

性能要求:默认参数(10 个线程)需要至少上下行 1 MB/s 的网络带宽和至少 4 核心处理器。

如果网络或处理器性能不足,可能导致测试结果不准确,建议通过 -w 参数降低线程数。

测试完成后,结果将输出到当前目录下,文件名格式为 dnspy_result_2024-11-07-17-32-13.json

5. 查看结果

按程序提示输入 Yy 或直接按回车键,程序将自动打开数据分析面板网站。点击网站右上角的"读取分析"按钮,选择刚生成的 JSON 文件,即可查看可视化测试结果。

可用参数

~> dnspy -h

使用示例:

  dnspy
    使用内置的世界所有域名直接启动测试

  dnspy -s 114.114.114.114
    测试单个服务器

  dnspy dnspy_benchmark_2024-10-22-08-18.json
    对测试结果进行可视化分析

参数说明:
  -c, --concurrency int   每个测试的并发数
                          (默认 10)

  -d, --domains string    要批量测试的域名数据存储的文件路径
                          必须是相对当前程序工作路径的文件路径
                          文件内部格式为每行一条域名
                          不修改则使用内置的 10000 个热门域名
                          (默认 "@sampleDomains@")

  -t, --duration int      每个测试的持续时间,单位:秒
                          (默认 10)

  -f, --file string       要批量测试的服务器数据存储的文件路径
                          必须是相对当前程序工作路径的文件路径
                          文件内部格式为每行一条服务器地址

  -g, --geo string        独立功能:使用 GeoIP 数据库进行 IP 或域名归属地查询

      --json              以 JSON 格式输出日志

  -l, --level string      日志级别
                          可选:debug、info、warn、error、fatal、panic
                          (默认 "info")

      --no-aaaa           每个测试不解析 AAAA 记录(不测试 IPv6)

      --old-html          已弃用,不建议使用
                          建议改用新方式:程序先输出数据 JSON 文件,按提示查看可视化分析
                          下次需要查看时,直接用程序打开 JSON 文件
                          本参数使用旧版方式输出单个 HTML 文件到数据 JSON 同目录
                          可双击打开查看

  -o, --output string     输出结果的文件路径
                          必须是相对当前程序工作路径的文件路径
                          不指定则输出到当前工作路径下的 dnspy_result_<当前时间>.json

      --prefer-ipv4       在 DNS 服务器的域名转换为 IP 地址过程中优先使用 IPv4 地址
                          (默认 true)

  -s, --server strings    手动指定要测试的服务器,支持多个

  -w, --worker int        同一时间测试多少个 DNS 服务器
                          (默认 20)

编译

编译环境要求

  • 你的电脑上需要有 Go 环境、curl 命令
  • 最好有 make 命令,否则可能需要手动执行 Makefile 中的内容
  • 能够访问 GitHub 下载资源文件
  • 如果在 Windows 下出现以下问题,请改用 Git Bash 执行命令
'GOOS' is not recognized as an internal or external command,
operable program or batch file.

编译步骤

1. 克隆本仓库

git clone https://github.com/xxnuo/dns-benchmark.git
cd dns-benchmark/dnspy

2. 更新数据文件(可选)

make update

3. 配置依赖

make configuration

4. 进行编译

make build

编译完成后,生成的可执行文件将位于当前目录下。

许可证

本项目采用开源许可证,欢迎贡献代码和提出建议。

About

dnspy 是一个批量 DNS 服务器基准测试工具,用于本地测量全世界的 DNS 服务器的可访问性和性能。生成可视化图表。dnspy is a bulk DNS server benchmarking tool used to measure the local accessibility and performance of DNS servers worldwide. It generates visual charts.

Resources

Stars

Watchers

Forks

Packages

No packages published