#dns #dns-records #dnssec #bind #named #dig #tls-server

程序 hickory-dns

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

5个不稳定版本

0.25.0-alpha.22024年8月6日
0.25.0-alpha.12024年6月16日
0.24.1 2024年4月18日
0.24.0 2023年10月14日
0.1.0 2023年5月17日

#819 in 网络编程

Download history 24/week @ 2024-05-01 85/week @ 2024-05-08 10/week @ 2024-05-15 20/week @ 2024-05-22 9/week @ 2024-05-29 32/week @ 2024-06-05 82/week @ 2024-06-12 46/week @ 2024-06-19 18/week @ 2024-06-26 24/week @ 2024-07-03 4/week @ 2024-07-10 1/week @ 2024-07-17 16/week @ 2024-07-24 75/week @ 2024-07-31 56/week @ 2024-08-07 204/week @ 2024-08-14

每月351次下载

MIT/Apache

2.5MB
40K SLoC

概览

Hickory DNS提供用于托管或转发DNS区域的二进制文件。

这是一个用于DNS区域托管的named实现。它能够对区域中的所有记录进行签名,并为区域中的所有记录创建服务器DNSSEC RRSIG记录。还有一个可以从库中生成的hickory-dns二进制文件,可以使用cargo install hickory-dns命令安装。支持通过SIG0(正在开发中的mTLS认证方法)进行动态更新。

注意 此项目已从Trust-DNS更名为Hickory DNS,并已移动到https://github.com/hickory-dns/hickory-dns组织和仓库,此crate/binary已移动到hickory-dns,从版本0.24开始,对于先前版本请参阅trust-dns

特性

  • 使用sqlite日志后端的动态更新(SIG0)
  • DNSSEC在线签名(NSEC非NSEC3)
  • DNS over TLS(DoT)
  • DNS over HTTPS/2(DoH)
  • DNS over HTTPS/3(DoH3)
  • DNS over Quic(DoQ)
  • 转发存根解析器
  • 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.70

版本控制

Hickory DNS会尽力遵循semver。当公开的API稳定后,Hickory DNS将被提升到1.0。这并不意味着Hickory DNS在0.x更新之间升级时一定会出现破坏。尽可能的情况下,旧API将被弃用,并注明替代这些弃用API的内容。Hickory DNS将尽力保证因API更改而不会破坏依赖于它的软件,尽管这不能保证。弃用的接口将在它们被弃用的那个主要版本发布后至少维护一个主要版本(尽可能),除了升级到1.0的情况,所有弃用的接口都计划在该升级中被删除。

依赖项

~11–28MB
~444K SLoC