linux - Avahi 主机名解析 : Is it caching somewhere?

标签 linux networking zeroconf mdns avahi

我正在使用带有 avahi 命令行工具(版本 0.6.31)的 Fedora 18

我使用 avahi-resolve-host-name 来发现我子网上单元的 IP 地址,用于开发期间的测试目的。我使用 Wireshark 监控请求和响应。在一次成功的请求和响应后,Wireshark 上不再显示任何请求,但该工具仍会返回一个 IP 地址。计算机/avahi 守护程序/其他东西是否可能正在“缓存”结果?

问题:我希望在每次调用 avahi-resolve-host-name 时发送请求数据包。这可能吗?

原因:可以这么说,我遇到了“误报”。我尝试解析“test1.local”,我得到了一个结果 IP,但该单元不再位于该 IP。我希望每次都发送请求,这样我就可以避免看到 IP 地址不正确的单元。

最佳答案

我知道我回答你的问题有点晚了,但我会留下一个通用的答案,以防其他人偶然发现这个问题。

我的答案是基于 avahi-0.6.32_rc。


Is it possible the computer/avahi daemon/something else is 'caching' the result?

是的,avahi-daemon 正在缓存查找结果。虽然这似乎没有在功能中明确列出,但 avahi-daemon(8) 联机帮助页提示它:

The daemon [...] provides two IPC APIs for local programs to make use of the mDNS record cache the avahi-daemon maintains.


I wish to send out the request packet with EVERY CALL of avahi-resolve-host-name. Is this possible?

是的,是的。相关选项是 cache-entries-max(来自 avahi-daemon.conf(5)):

cache-entries-max= Takes an unsigned integer specifying how many resource records are cached per interface. Bigger values allow mDNS work correctly in large LANs but also increase memory consumption.

要达到预期的效果,您可以简单地设置:

cache-entries-max=0

这将完全禁用缓存并强制 avahi-daemon 在每次请求时重新发出 MDNS 数据包,因此您可以监控它们。

但是,我在这里应该注意,这也会使 avahi 对于正常使用来说几乎毫无用处。虽然 avahi-daemon 将发出查找数据包,但它无法存储结果和 avahi-resolve-host-name 的每次调用(以及其他命令行工具,nss-mdns, D-Bus API…) 会失败。

关于linux - Avahi 主机名解析 : Is it caching somewhere?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18388334/

相关文章:

c - 端口扫描时的随机端口连接

macos - 如何找出我的多播 (Bonjour) 主机名?

android - 处理未找到的 Intent Action (ACTION_NETWORK_OPERATOR_SETTINGS)

java - 是否可以在应用程序周围设置防火墙?

macos - Mono.Zeroconf 的 OSX 端口

android - jmdns.jar 不适用于 android 4.0 或更高版本

python - 跨平台部署Python Qt应用 : Win, OSX, Linux

c - 尝试在 Linux 上用 C 语言制作一个简单的数据包路由器。 select() 无限期闲置,我不知道为什么

linux - 这不应该记录每个新添加的 udev 吗?

linux - select调用的第一个参数是传入的要监听的fd的最大值加一