| English | 中文 | 
国内 DNS 服务常遭运营商劫持,被插入各种广告,同时存在隐私泄露风险。为了保障安全可靠的上网体验,我们需要寻找值得信赖的 DNS 服务。
现有的同类工具并不多,较为知名的 DNSJumper 仅支持 Windows 平台,且存在数据源较少、评测维度单一等问题。
因此开发了这款工具,用于测试本地网络环境下可用的 DNS 服务器及其性能表现。该工具使用 Golang 编写,跨平台支持 Windows、macOS、Linux。
并且配套提供可视化数据分析面板,让您一目了然地了解可用的 DNS 服务器 😊
温馨提示:点击数据分析面板中的柱状图即可复制服务器地址。
使用流程:按照下文指导下载测试工具并获得测试结果的 JSON 文件,然后打开数据分析面板网站上传数据即可分析。网站不存储任何数据。
在本仓库的 releases 页面中,根据您的系统架构下载对应的 dnspy-* 文件。
例如:M 系列处理器的 macOS 用户应下载 dnspy-darwin-arm64 文件。
重要提示:必须关闭所有代理软件的 Tun 模式、虚拟网卡模式,否则会严重影响测试结果的准确性。
将下载的文件重命名为 dnspy(Windows 系统为 dnspy.exe),然后打开终端,切换到该文件所在的目录,执行以下命令:
unset http_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY ALL_PROXY
./dnspy
按照提示输入即可开始测试。
程序默认使用多线程模式以加快测试速度。
性能要求:默认参数(10 个线程)需要至少上下行 1 MB/s 的网络带宽和至少 4 核心处理器。
如果网络或处理器性能不足,可能导致测试结果不准确,建议通过
-w参数降低线程数。
测试完成后,结果将输出到当前目录下,文件名格式为 dnspy_result_2024-11-07-17-32-13.json。
按程序提示输入 Y 或 y 或直接按回车键,程序将自动打开数据分析面板网站。点击网站右上角的”读取分析”按钮,选择刚生成的 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 中的内容Git Bash 执行命令'GOOS' is not recognized as an internal or external command,
operable program or batch file.
git clone https://github.com/xxnuo/dns-benchmark.git
cd dns-benchmark/dnspy
make update
make configuration
make build
编译完成后,生成的可执行文件将位于当前目录下。
本项目采用开源许可证,欢迎贡献代码和提出建议。