外观
01 - 项目概述
TDNS 是什么
TDNS(Trustworthy DNS)是一款用 Rust 从零构建的 DNS 服务器。
用 Rust 的内存安全保证,从根本上消除缓冲区溢出、内存泄漏、数据竞争等隐患,同时保持原生级性能。一个进程覆盖权威、递归、转发、混合四种运行模式;内置 DoT / DoH 加密传输、ACL 访问控制、RRL 速率限制、TSIG 认证的动态更新(DDNS),以及 REST API + CLI 管理。TOML 配置,安全策略默认收紧,上手门槛低。
设计目标
| 维度 | 目标 |
|---|---|
| 性能 | 单节点支撑高并发 DNS 查询,缓存命中查询延迟 < 1ms |
| 安全 | 内置 ACL、RRL、TSIG 认证、缓存投毒防护,支持 DoT/DoH 加密传输 |
| 可靠 | 零内存泄漏、优雅降级(Serving Stale)、崩溃自动恢复 |
| 易用 | TOML 配置、热重载、REST API 管理、CLI 工具操作 |
| 可观测 | 结构化日志 + Prometheus 指标 + 健康检查端点 |
核心能力
TDNS v0.1.1 已实现以下能力,点击对应文档查看使用方法:
| 能力 | 怎么用 | 详细文档 |
|---|---|---|
| 四种运行模式 | 配置 server.mode 一键切换 | 06-运行模式详解 |
| 标准 DNS 协议 | UDP + TCP 双栈监听 53 端口,开箱即用 | 03-安装指南 |
| 加密传输 | 配 [tls] 和 [doh] 段启用 DoT/DoH | 11-加密传输指南 |
| 访问控制 | 配 [acl.*] 和 [access-control] 分级控制 | 12-安全与访问控制 |
| 缓存系统 | LRU + TTL + 负缓存 + Serving Stale,自动生效 | 04-配置参考手册 |
| 动态更新 | REST API 增删记录 或 TSIG 认证的 DNS UPDATE | 07-权威DNS服务 |
| 管理接口 | REST API + tdnsctl CLI 远程管理 | 13-REST-API参考 |
| 可观测性 | Prometheus 指标 + JSON 日志 + 健康检查 | 15-监控与可观测性 |
| 安全加固 | RRL、ANY 拒绝、CNAME 循环检测等 18 项默认生效 | 02-功能特性总览 |
技术栈
核心依赖
| 组件 | 版本 | 用途 |
|---|---|---|
| Rust | ≥ 1.75.0 (edition 2021) | 开发语言 |
| Tokio | 1.35 | 异步运行时(多线程调度器) |
| serde / toml | 1.0 / 0.8 | 配置文件序列化 |
| tracing | 0.1 | 结构化日志框架 |
| rustls | 0.23 | 纯 Rust TLS 实现(DoT/DoH) |
| hyper | 1.1 | HTTP/2 服务端(DoH) |
| ring | 0.17 | 密码学原语(TSIG HMAC) |
| axum | 0.7 | REST API 框架 |
| dashmap | 5.5 | 并发 HashMap |
| clap | 4.4 | CLI 参数解析 |
Feature Flags
通过 Cargo Feature 按需裁剪功能模块:
bash
# 默认启用 sqlite + dnssec + tls(推荐)
cargo build --release
# 不需要 DoT/DoH,减体积
cargo build --release --no-default-features --features sqlite,dnssec
# 最小核心
cargo build --release --no-default-features| Feature | 默认 | 包含功能 |
|---|---|---|
sqlite | 是 | SQLite 持久化存储后端 |
dnssec | 是 | DNSSEC 配置段支持(框架占位) |
tls | 是 | DoT/DoH 加密传输(rustls + hyper) |
竞品定位
| 特性 | BIND9 | Unbound | CoreDNS | TDNS |
|---|---|---|---|---|
| 语言 | C | C | Go | Rust |
| 内存安全 | 无 | 无 | 有(GC) | 有(编译期保证) |
| 递归 | 支持 | 支持 | 插件 | 支持 |
| 权威 | 支持 | 不支持 | 插件 | 支持 |
| DoT/DoH | 支持 | 支持 | 支持 | 支持 |
| REST API | 不支持 | 不支持 | 插件 | 内置 |
| 配置复杂度 | 高 | 中 | 低 | 低(TOML) |
| 云原生 | 不支持 | 不支持 | 支持 | 支持 |
TDNS 的差异化优势:Rust 内存安全 + 权威与递归一体化 + 内置 REST API + 加密传输全链路覆盖。
下一步
- 想快速安装试试 → 03-安装指南
- 不确定选哪种模式 → 06-运行模式详解
- 想看完整配置项 → 04-配置参考手册
- 想看真实场景配置 → 18-适用场景与网络环境