81 个版本
0.23.2 | 2023 年 10 月 23 日 |
---|---|
0.23.0 | 2023 年 8 月 22 日 |
0.23.0-alpha.4 | 2023 年 6 月 11 日 |
0.22.0 | 2022 年 9 月 2 日 |
0.4.0 | 2015 年 11 月 9 日 |
#1755 in 网络编程
每月 848 次下载
用于 15 个 包(12 个直接使用)
2.5MB
38K SLoC
注意 此项目已更名为 Hickory DNS 并已移至 https://github.com/hickory-dns/hickory-dns 组织和存储库,此包/二进制文件已移至 hickory-dns,从 0.24
概述
Trust-DNS 提供了用于托管或转发 DNS 区域的二进制文件。
这是一个用于 DNS 区域托管的 named 实现。它能够执行区域中所有记录的签名,并生成与区域中所有记录关联的服务器 DNSSEC RRSIG 记录。还有一个可以从库中生成的 trust-dns
二进制文件,使用 cargo install trust-dns
命令。通过 SIG0
(一个正在开发中的 mTLS 认证方法) 支持动态更新。
特性
- 带有 sqlite 日志后端的动态更新(SIG0)
- DNSSEC 在线签名(NSEC 而不是 NSEC3)
- DNS over TLS(DoT)
- DNS over HTTPS(DoH)
- 转发存根解析器
- ANAME 解析,用于将别名映射到 A 和 AAAA 记录
- 为别名记录类型生成附加部分
DNS-over-TLS 和 DNS-over-HTTPS
服务器上的 TLS 通过 pkcs12 der 文件管理。文档在示例测试配置文件 example.toml 中记录。可以使用 add_ca()
方法将注册到服务器的证书固定到客户端。或者,由于客户端使用 rust-native-tls 库,它应该可以与任何标准 CA 签署的证书一起工作。
支持DoT和DoH。这是通过使用以下之一实现的:native-tls
、openssl
或rustls
(目前只支持rustls
进行DoH)。解析器只需要在系统中注册有效的DoT或DoH解析器才能使用。
要与Client
一起使用,应使用TlsClientConnection
或HttpsClientConnection
。同样,要与tokio AsyncClient
一起使用,应使用TlsClientStream
或HttpsClientStream
。ClientAuth,即mTLS目前不支持,还有一些问题正在解决中。TLS对于服务器身份验证和连接隐私很有用。
要启用DoT,必须启用以下功能之一:dns-over-native-tls
、dns-over-openssl
或dns-over-rustls
,而dns-over-https-rustls
用于DoH。
DNSSEC状态
目前,根密钥是硬编码到系统中的。这使DNSKEY和DS记录的验证返回到根。NSEC已实现,但未实现NSEC3。由于尚未启用缓存,已观察到一些DNS服务器似乎对连接进行速率限制,验证RRSIG记录返回根可能需要针对这些记录的大量额外查询。
任何通过动态DNS进行的记录更新都会自动重新签名区域。要启用DNSSEC,必须启用以下功能之一:dnssec-openssl
或dnssec-ring
。
未来目标
- 具有共识的分布式动态DNS更新
- 基于mTLS的动态更新授权
- 查询的在线NSEC创建
- 基于完全提示的解析
- 可能支持NSEC3和/或NSEC5
最低Rust版本
此项目当前最低的rustc版本是1.64
版本控制
Trust-DNS尽最大努力遵循semver。当公开的API稳定后,Trust-DNS将被提升到1.0。这并不意味着Trust-DNS在0.x更新之间升级时一定会破坏。尽可能的情况下,旧API将带有说明其替代方案的信息进行弃用。Trust-DNS将尽最大努力,不会因为API更改而破坏依赖于它的软件,尽管这不能保证。弃用接口将在弃用后至少维护一个主要版本(在可能的情况下),但1.0升级除外,其中所有弃用接口都将计划移除。
依赖项
~12-30MB
~469K SLoC