国内 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中的内容 - 能够访问 GitHub 下载资源文件
- 如果在 Windows 下出现以下问题,请改用
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/dnspymake updatemake configurationmake build编译完成后,生成的可执行文件将位于当前目录下。
本项目采用开源许可证,欢迎贡献代码和提出建议。

