谛听(DITING)是一款本地优先的开源 DNS 加速与网络流量过滤工具,提供低延迟解析、规则阻断、防追踪与流量管控。全部处理在设备本地闭环完成,不上传远程数据;支持 Android、Windows、Linux 三端,并提供开发者维护工具箱。
- 📱 Android:纯 Kotlin 极速模式、Go 用户态全隧道模式(gVisor netstack)、局域网独立 DNS 服务。
- 💻 Windows:特权系统服务 + Wails 桌面 GUI + 局域网 Web 控制台,支持物理网卡双栈 DNS 接管与崩溃自愈。
- 🐧 Linux:单二进制
diting-service+ 内嵌 Web 控制台,systemd 托管,自动适配多种 DNS 后端。 - 🧰 维护工具箱:Python + PyWebView 桌面套件,涵盖压测、代码扫描、Logo 导出、截图、跨端构建与版本同步。
- 多协议:UDP/TCP 53、DNS-over-HTTPS(DoH)、DNS-over-TLS(DoT)。
- 四种调度:单一服务(Single)、智能优选(Smart EWMA)、最快响应(Fastest 并发竞速)、依次尝试(Sequential 备援)。
- 服务商管理:内置阿里、腾讯、Cloudflare、Google、DNSPod 等,支持自定义节点。
- Bootstrap 与防绕过:内置/自定义 Bootstrap IP 解析加密上游域名;启用 DDR 拦截
_dns.resolver.arpa,防止绕过本地通道。
- 分片 LRU 缓存:64 分片并发安全缓存,支持跟随 TTL、平衡、高命中等多档策略。
- 乐观容灾:上游超时或抖动时,在宽限期内复用过期缓存(Stale-While-Revalidate)。
- 并发合并:Singleflight 合并同一域名的并发请求,降低上游负载并防止缓存击穿。
- 多维度匹配:域名黑白名单,兼容 AdGuard 语法、通配符与正则;Trie 前缀树 + Bloom 过滤器加速,支持网页元素隐藏(Cosmetic)规则。
- 规则订阅:AdGuard 格式远程订阅,支持分组、镜像源加速与后台定时更新。
- 静态覆写:A/AAAA 记录静态地址覆写与 CNAME 重定向解析。
- 阻断响应:支持零地址(
0.0.0.0/::)、NXDOMAIN、NODATA、REFUSED 四种行为。
- 应用分流:排除应用(Bypass 直连)、禁止联网、应用白名单。
- 可选 HTTPS 检查:基于 gVisor netstack 与本地 CA,仅对勾选应用解密和 URL 级过滤;支持证书绑定旁路与 QUIC/H3 回退。
- 出站代理:本地 SOCKS5(含 UDP ASSOCIATE)或 HTTP CONNECT。
- 洞察与诊断:悬浮窗/状态栏网速、按 UID 流量排行、Ping/Traceroute/DNS 诊断、快捷设置磁贴。
- 个性化:Material 3 动态取色、深浅主题、配置导入导出;可选 BYOK LLM 助手(默认关闭)。
- 双二进制架构:
diting-service.exe(管理员权限)负责网络核心,diting-gui.exe(免 UAC)负责交互,经本地 IPC 通信。 - 双栈接管与自愈:自动接管活动物理网卡 IPv4/IPv6 DNS,接管前原子备份,退出或异常时自动恢复,支持应急脱困。
- 端口冲突检测:启动前探测 53 端口占用,定位进程名与 PID。
- 局域网 DNS 服务:监听
0.0.0.0:53与[::]:53,一键放行 Windows 防火墙 UDP/TCP 入站。 - 局域网 Web 控制台:默认 15353 端口,管理员鉴权、Session/Token 与防火墙放行,支持浏览器远程管理。
- 系统集成:Windows 服务注册与管理、开机静默启动、界面截图。
- 单二进制交付:
diting-service内嵌 Vue 3 控制台;systemd 托管,开机自启、异常重启。 - 多后端接管:自动适配 systemd-resolved(
resolvectl)→ NetworkManager(nmcli)→/etc/resolv.conf,接管前快照、退出还原、崩溃自愈,并生成离线restore-dns.sh。 - stub 冲突处置:识别
127.0.0.53:53/127.0.0.54:53占用,可写入DNSStubListener=nodrop-in 并重启服务。 - 防火墙适配:探测 firewalld / ufw / nftables / iptables 并维护放行规则;无防火墙管理器时降级为诊断提示。
- FHS 目录:配置在
/etc/diting、数据在/var/lib/diting,支持DITING_DATA_DIR整体覆盖。 - Web 控制台:内嵌仪表盘默认 15353 端口,支持管理员鉴权与全功能远程配置。
- 基于 Python + PyWebView + WebView2,双击
maintenance/run_maintenance.bat即可启动。 - 六大工坊:DNS 诊断压测、代码规模扫描、品牌 Logo 导出、跨端构建打包、统一版本管理、界面自动截图。
| 平台 | 模式 | 最低要求 | 说明 |
|---|---|---|---|
| Android | ⚡ 极速模式 | Android 7.0+ / arm64-v8a |
纯 Kotlin 窄路由,仅接管 DNS(53 端口),轻量省电 |
| Android | 🛡️ 普通模式 | Android 10.0+ / arm64-v8a |
gVisor 全隧道,支持应用分流、HTTPS 检查、出站代理 |
| Android | 🏠 服务器模式 | Android 10.0+ | Go 独立 DNS 服务,监听 0.0.0.0:1053,共享给局域网设备 |
| Android(Flutter 重写) | 三模式 | 同左 | 复用同一 Go 引擎(tunnel.aar),读 1.4.3 的配置与数据库;部分页面数据仍为演示 |
| Windows | ⚙️ 特权核心服务 | Windows 10+ 64-bit | 双栈接管物理网卡、本地 53 监听、缓存规则、局域网 DNS、崩溃自愈 |
| Windows | 🖥️ 桌面 GUI | Windows 10+ 64-bit + WebView2 | Wails v2 + Vue 3,免管理员权限管理服务与实时日志 |
| Windows | 🌐 Web 控制台 | 任意主流浏览器 | 访问 15353 端口远程管理 Windows 核心服务 |
| Linux | ⚙️ 核心服务 | systemd 发行版 / amd64·arm64 |
多后端 DNS 接管、53 监听、缓存规则、局域网 DNS、离线还原 |
| Linux | 🌐 Web 控制台 | 任意主流浏览器 | 访问 15353 端口完成全部配置,无需桌面环境 |
DITING/
├── Android/ # Android 客户端(app + tunnel,构建为 tunnel.aar)
├── DITING_flutter/ # Android 客户端的 Flutter 重写(兼容 1.4.3 的配置与数据库)
│ ├── lib/ui/ # 移植自 1.4.3 的设计系统(GPL-3.0)
│ ├── lib/data/ # 旧版 SharedPreferences(11 个容器)与旧版 SQLite 读写
│ ├── lib/pages/ # 页面(85 条路由)
│ └── android/ # Flutter Android 壳(包名 com.haoze.diting)
├── Desktop/ # Windows / Linux 工程
│ ├── cmd/service/ # 特权核心服务(Windows Service / Linux systemd)
│ ├── internal/ # DNS 内核、平台适配、IPC、鉴权、查询日志
│ ├── frontend/ # Vue 3 + TypeScript + Material Web 前端
│ ├── build/ # 构建产物、NSIS 与 systemd 打包脚本
│ ├── main.go # Wails 桌面 GUI 入口
│ └── build*.bat/sh # 构建、打包与版本同步脚本
├── maintenance/ # Python + PyWebView 维护工具箱
├── docs/ # 开发文档、历史归档与静态资源
├── avatars/ # 赞助者与共建者头像
├── recognition_members.json # 赞助者与共建者名单
├── AGENTS.md # 开发与代码规范
└── README.md
要求 Flutter 3.47+、JDK 11+、Android SDK;产物架构为 arm64-v8a。
cd DITING_flutter
flutter pub get
flutter analyze lib test
flutter test
flutter build apk --debug模拟器(x86_64)联调需多 ABI 的 AAR:flutter build apk --debug -PtunnelAar=libs/tunnel-debug.aar
(该文件不入库),否则 libgojni.so 只有 arm64-v8a,System.loadLibrary 会失败。
详情见 DITING_flutter/README.md 与
Go AAR 构建记录。
cd Android
./gradlew :app:assembleDebug --console=plain # Windows 使用 gradlew.bat
./gradlew :app:assembleRelease --console=plain亦可运行 Android/build_apk.bat:交互式选择编译模式、自动归档,并支持 ADB(含无线调试)部署真机。
产物:Android/app/build/outputs/apk/<buildType>/。
要求 Go 1.25+、Node.js 18+、Wails v2(go install github.com/wailsapp/wails/v2/cmd/wails@latest);打包独立安装包需 NSIS(可选)。
cd Desktop
build.bat一键构建 Windows EXE 安装包,纯净产物输出至 Desktop/build/bin/DITING-release-v*.exe。构建脚本会自动注入版本、提交与构建时间,手动编译仅用于调试。
需要自定义目标或双平台打包时:python ..\maintenance\core\build_manager.py -t both -b release。
手动编译二进制
cd Desktop
REM 编译特权服务
go build -ldflags "-s -w -H windowsgui" -o build/bin/diting-service.exe ./cmd/service
REM 编译 GUI
wails build -platform windows/amd64 -o diting-gui.exe要求 Go 1.25+;生成 .deb 需 dpkg-deb(可选)。
cd Desktop
./build_linux.sh --package # 当前架构
./build_linux.sh -a arm64 --package # 指定 amd64 / arm64 / arm在 Windows 上可通过 build_deb.bat 打包:Windows 本机 Go 交叉编译 Linux 二进制,WSL 仅用 dpkg-deb 组装,无需在 WSL 内安装 Go。产物为 Desktop/build/bin/ 下的 .deb 或单二进制。
安装为 systemd 服务:
cd Desktop/build/linux
sudo ./install.sh --bin ../../build/bin/diting-service
systemctl status diting-dnsservice管理地址:http://127.0.0.1:15353。卸载:sudo ./uninstall.sh(保留配置),加 --purge 一并清理。
WSL 调试时 53 端口可能被 systemd-resolved stub 占用,建议用 DITING_DATA_DIR 重定向数据并以非特权端口验证,详见 Linux 移植说明。
手动交叉编译
cd Desktop
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-trimpath -ldflags "-s -w" \
-o build/bin/diting-service ./cmd/service要求 Python 3.8+。首次运行可执行:
python -m pip install -r maintenance/requirements.txt
python maintenance/app.py也可直接双击 maintenance/run_maintenance.bat:脚本会检测缺失依赖并自动安装,异常退出时保留窗口以便查看报错。发布新版本时,用工具箱的「统一版本管理」,或执行:
REM 同步到目标版本(示例)
.\Desktop\set_version.bat 1.4.3- Android(Kotlin 基线 1.4.3):Kotlin / Jetpack Compose / Material 3 / Coroutines & Flow / Room / DataStore / VpnService / OkHttp / WorkManager
- Android(Flutter 重写):Flutter / Dart 3 / Riverpod / go_router / sqflite(直接打开 1.4.3 的库)/ 移植的 Material 3 设计系统
- Windows:Go 1.25+ / Wails v2 / Vue 3 / TypeScript / Vite / Material Web / Win32 API / Windows Service
- Linux:Go 1.25+ / systemd / resolvectl / nmcli / netlink / Vue 3 内嵌控制台
- DNS 引擎:Go / gVisor netstack / miekg/dns / quic-go / Singleflight
- 维护工具箱:Python 3 / PyWebView (WebView2) / HTML5 / CSS3 / JavaScript
- Flutter 重写交接文档 — 已完成范围、冻结约定、统计口径、剩余缺口与验证口径。
- UI 全覆盖台账 — 逐项对照 1.4.3 的迁移状态,以及数据来源台账(哪些页面仍是演示数据)。
- DITING Android 功能图谱 — 15 章,覆盖内核、规则、UI、测试与迁移策略。
- Windows DNS 内核架构与开发规划 — 双进程架构、网卡接管与恢复状态机、IPC 与 Pipeline 设计。
- Linux 移植说明 — 平台差异、DNS 接管后端、
DITING_DATA_DIR调试与功能差异。 - Go AAR 构建记录 — Android
tunnel.aar的编译环境、参数与交叉编译细节。 - 云控贡献者名单维护 — 名单云控机制、JSON 规范与头像维护。
- 历史设计归档见
docs/development/Archive/。
如果谛听对您有帮助,欢迎赞助支持项目开发。付款时请备注昵称,以便同步加入赞助者名单。
| 支付宝付款码 | 微信付款码 |
|---|---|
![]() |
![]() |
名单展示机制与头像提交规范见 云控贡献者名单维护说明。

