#mdns #resolver #async #query #packet #processing #key

bin+lib mdns-resolver

一个简单的异步传统 mDNS 解析器

1 个不稳定版本

0.1.0 2021 年 8 月 25 日

#33#mdns

MIT 许可证

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 以获取简单的库使用示例。它应该能够很好地处理并发请求,并且 MdnsQueryClone,适用于多线程使用。

依赖项

~4–12MB
~108K SLoC