SelfHost Hub SelfHost Hub
EN
← 返回到所有服务

GitHub 仓库信息

获取时间 · 2026年6月5日
★ 709 最新版本: v2.0.2 最后更新: 2026年6月4日
README
# dnspy - DNS 服务器的可访问性和性能测试工具

[English](./README.en.md) | [中文](./README.md)

## 项目简介

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

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

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

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

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

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

## 数据分析面板预览

![数据分析面板预览](https://github.com/user-attachments/assets/c743f7ba-4d77-4d16-8515-02c0dc99ddfa)

[数据分析面板(内含示例数据)](https://bench.dash.2020818.xyz)

## 使用方式

![dnspy](https://github.com/user-attachments/assets/a499d2fc-ffcd-4b71-a0dd-d6e5839792dd)

### 1. 下载工具

在本仓库的 [releases](https://github.com/xxnuo/dns-benchmark/releases) 页面中,根据您的系统架构下载对应的 `dnspy-*` 文件。

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

### 2. 准备测试环境

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

### 3. 运行测试

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

```bash
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. 查看结果

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

## 可用参数

```bash
~> 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. 克隆本仓库

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

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

```bash
make update
```

#### 3. 配置依赖

```bash
make configuration
```

#### 4. 进行编译

```bash
make build
```

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

## 许可证

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

DNS Benchmark 是一个强大的开源工具,用于测试和比较不同 DNS 服务器的性能和可访问性。

主要功能

  • 批量测试:同时测试多个 DNS 服务器的性能
  • 可视化分析:生成直观的性能对比图表
  • 全球覆盖:支持测试世界各地的 DNS 服务器
  • 开源免费:完全开源且免费使用
  • 跨平台支持:支持 Windows、macOS、Linux 系统

技术特点

  • Go 语言开发:高性能的并发测试实现
  • 多线程测试:支持多线程并发测试,提高测试效率
  • JSON 输出:测试结果以 JSON 格式保存
  • 可视化面板:提供 Web 界面展示测试结果
  • 自定义配置:支持自定义测试参数和线程数

部署要求

  • Go 环境(用于编译)
  • 现代浏览器(用于查看可视化结果)
  • 网络连接
  • 足够的系统资源(建议至少 4 核处理器和 1MB/s 网络带宽)

特色功能

  • 性能指标:测试 DNS 服务器的响应时间和稳定性
  • 可访问性测试:检测 DNS 服务器的可用性
  • 数据导出:支持导出测试结果为 JSON 格式
  • 自定义测试:支持自定义测试域名和测试次数
  • 实时监控:实时显示测试进度和结果

发现更多