#dns #dnssec #named #dig #bind

app trust-dns

Trust-DNS 是一个安全且支持 DNSSEC 的 DNS 服务器。最终,它可以替代 BIND9。DNSSEC 支持对所有记录进行实时签名,但它目前不支持离线签名的记录。服务器支持动态 DNS,并支持通过 SIG0 认证的请求。Trust-DNS 基于 Tokio 和 Futures 库,这意味着它应该可以轻松集成到其他也使用这些库的软件中。

81 个版本

0.23.2 2023 年 10 月 23 日
0.23.0 2023 年 8 月 22 日
0.23.0-alpha.42023 年 6 月 11 日
0.22.0 2022 年 9 月 2 日
0.4.0 2015 年 11 月 9 日

#1755 in 网络编程

Download history 286/week @ 2024-03-14 217/week @ 2024-03-21 348/week @ 2024-03-28 270/week @ 2024-04-04 316/week @ 2024-04-11 268/week @ 2024-04-18 468/week @ 2024-04-25 257/week @ 2024-05-02 204/week @ 2024-05-09 217/week @ 2024-05-16 254/week @ 2024-05-23 282/week @ 2024-05-30 201/week @ 2024-06-06 204/week @ 2024-06-13 211/week @ 2024-06-20 198/week @ 2024-06-27

每月 848 次下载
用于 15 包(12 个直接使用)

MIT/Apache

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-tlsopensslrustls(目前只支持rustls进行DoH)。解析器只需要在系统中注册有效的DoT或DoH解析器才能使用。

要与Client一起使用,应使用TlsClientConnectionHttpsClientConnection。同样,要与tokio AsyncClient一起使用,应使用TlsClientStreamHttpsClientStream。ClientAuth,即mTLS目前不支持,还有一些问题正在解决中。TLS对于服务器身份验证和连接隐私很有用。

要启用DoT,必须启用以下功能之一:dns-over-native-tlsdns-over-openssldns-over-rustls,而dns-over-https-rustls用于DoH。

DNSSEC状态

目前,根密钥是硬编码到系统中的。这使DNSKEY和DS记录的验证返回到根。NSEC已实现,但未实现NSEC3。由于尚未启用缓存,已观察到一些DNS服务器似乎对连接进行速率限制,验证RRSIG记录返回根可能需要针对这些记录的大量额外查询。

任何通过动态DNS进行的记录更新都会自动重新签名区域。要启用DNSSEC,必须启用以下功能之一:dnssec-openssldnssec-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