Skip to content

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/DoH11-加密传输指南
访问控制配 [acl.*] 和 [access-control] 分级控制12-安全与访问控制
缓存系统LRU + TTL + 负缓存 + Serving Stale,自动生效04-配置参考手册
动态更新REST API 增删记录 或 TSIG 认证的 DNS UPDATE07-权威DNS服务
管理接口REST API + tdnsctl CLI 远程管理13-REST-API参考
可观测性Prometheus 指标 + JSON 日志 + 健康检查15-监控与可观测性
安全加固RRL、ANY 拒绝、CNAME 循环检测等 18 项默认生效02-功能特性总览

技术栈 ​

核心依赖 ​

组件版本用途
Rust≥ 1.75.0 (edition 2021)开发语言
Tokio1.35异步运行时(多线程调度器)
serde / toml1.0 / 0.8配置文件序列化
tracing0.1结构化日志框架
rustls0.23纯 Rust TLS 实现(DoT/DoH)
hyper1.1HTTP/2 服务端(DoH)
ring0.17密码学原语(TSIG HMAC)
axum0.7REST API 框架
dashmap5.5并发 HashMap
clap4.4CLI 参数解析

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)

竞品定位 ​

特性BIND9UnboundCoreDNSTDNS
语言CCGoRust
内存安全无无有(GC)有(编译期保证)
递归支持支持插件支持
权威支持不支持插件支持
DoT/DoH支持支持支持支持
REST API不支持不支持插件内置
配置复杂度高中低低(TOML)
云原生不支持不支持支持支持

TDNS 的差异化优势:Rust 内存安全 + 权威与递归一体化 + 内置 REST API + 加密传输全链路覆盖。


下一步 ​