1 个不稳定版本
0.1.0 | 2021 年 8 月 25 日 |
---|
#33 在 #mdns
15KB
297 行
mdns-resolver
一个简单的 mDNS 解析器,由 simple-mdns
衍生,使用异步 Rust 编写,无原生依赖。
这是什么?
这个包以类似 avahi-resolve -n
的方式执行本地 DNS 查找;换句话说,它将 Bonjour 风格的主机名(例如 foo.local
)转换为 IP 地址。
大多数解析器(包括 simple-mdns
)旨在通过类型而不是名称浏览或查询服务。这个包旨在以类似桌面设备使用 Avahi 或其他类似本地解析器在虚拟 .local
域下解析主机的方式,可靠地发现给定主机名的 IP 地址。
它基于 simple_mdns::OneShotMdnsResolver
,有一些关键的不同之处
- 使用异步而非阻塞的 Rust
- 重写的数据包处理可以处理任意数量的并发查询
- 监听查询回复的正确接口
此库是为在 homedns
DNS 服务器中使用而开发的,该服务器将常规 DNS 查询转换为 mDNS,以支持客户端(例如 Docker 容器、预装物联网设备等)在其自身上不支持或无法支持 mDNS 查找。
用法
包含的示例实用程序 mdns-query
可用于查找单个主机名
$ cargo run -q --features=bins --bin mdns-query linux.local
linux.local = 192.168.10.104
查看 mdns-query.rs
以获取简单的库使用示例。它应该能够很好地处理并发请求,并且 MdnsQuery
是 Clone
,适用于多线程使用。
依赖项
~4–12MB
~108K SLoC