33 个版本
0.25.0-alpha.2 | 2024 年 8 月 6 日 |
---|---|
0.25.0-alpha.1 | 2024 年 6 月 16 日 |
0.24.1 | 2024 年 4 月 18 日 |
0.24.0 | 2023 年 10 月 14 日 |
0.19.5 | 2020 年 4 月 28 日 |
#537 in 网络编程
每月 30,521 次下载
用于 55 个 Crates (11 直接)
390KB
7.5K SLoC
概述
Hickory DNS Async-Std Resolver 是一个库,它使用 Hickory DNS 解析库实现 DNS 解析器。
此库包含 IPv4(A)和 IPv6(AAAA)解析的实现,更多功能正在开发中。它基于 async-std 异步 IO 项目构建,这允许它集成到使用 async-std 和 futures 库的其他系统中。Hickory DNS 项目 包含其他 DNS 库:用于原始协议使用的 客户端库、用于托管区域的 服务器库,以及基于 rustls 和 native-tls 的 TLS 实现的变体。
注意 此项目已从 Trust-DNS 重命名为 Hickory DNS,并已移动到 https://github.com/hickory-dns/hickory-dns 组织和仓库,从 0.24
开始。
功能
- 各种 IPv4 和 IPv6 查找策略
/etc/resolv.conf
基于 Unix/Posix 系统的配置- 基于性能的优先级使用的名称服务器池
- 查询结果的缓存
- NxDomain/NoData 缓存(负缓存)
- TBD(在 tokio 实现):DNSSEC 验证
- 通用记录类型查找
- CNAME 链解析
- 实验性 mDNS 支持(使用
mdns
功能启用) - 待定(在tokio实现中):DNS over TLS(使用
native-tls
、rustls
和openssl
;推荐使用native-tls
或rustls
) - 待定(在tokio实现中):DNS over HTTPS(目前仅支持
rustls
)
示例
use std::net::*;
use async_std::prelude::*;
use async_std_resolver::{resolver, config};
#[async_std::main]
async fn main() {
// Construct a new Resolver with default configuration options
let resolver = resolver(
config::ResolverConfig::default(),
config::ResolverOpts::default(),
).await;
// Lookup the IP addresses associated with a name.
// This returns a future that will lookup the IP addresses, it must be run in the Core to
// to get the actual result.
let mut response = resolver.lookup_ip("www.example.com.").await.unwrap();
// There can be many addresses associated with the name,
// this can return IPv4 and/or IPv6 addresses
let address = response.iter().next().expect("no addresses returned!");
if address.is_ipv4() {
assert_eq!(address, IpAddr::V4(Ipv4Addr::new(93, 184, 215, 14)));
} else {
assert_eq!(address, IpAddr::V6(Ipv6Addr::new(0x2606, 0x2800, 0x21f, 0xcb07, 0x6820, 0x80da, 0xaf6b, 0x8b2c)));
}
}
最低Rust版本
本项目的当前最低rustc版本为1.70
版本管理
Hickory DNS会尽力遵循semver。Hickory DNS将在公开API稳定后将升级到1.0版本。这并不意味着Hickory DNS在0.x更新之间的升级必然会出现破坏。尽可能的情况下,旧的API将被弃用,并注明被弃用的替代方案。Hickory DNS会尽最大努力不因API更改而破坏依赖于它的软件,尽管这不能保证。弃用的接口将在它们被弃用后的至少一个主要版本中维护(如果可能),但升级到1.0的情况除外,届时所有弃用的接口都将计划移除。
依赖关系
~10–21MB
~317K SLoC