trh*_*178 9 linux networking mdns zeroconf avahi
我使用Fedora 18和avahi命令行工具(版本0.6.31)
我使用avahi-resolve-host-name来发现我子网上单元的IP地址,以便在开发过程中进行测试.我使用Wireshark监控请求和响应.在一次成功的请求和响应之后,Wireshark上没有进一步的请求,但该工具仍然返回一个IP地址.计算机/ avahi守护进程/其他东西是否有可能"缓存"结果?
问题:我希望通过每次调用avahi-resolve-host-name发送请求数据包.这可能吗?
原因:可以说我得到'误报'.我尝试解决'test1.local',我得到了一个结果IP,但该单元不再位于此IP.我希望每次都发送请求,这样我就可以避免看到IP地址不正确的单位.
我自己偶然发现了这个问题,并找到了不需要更改配置的解决方案。似乎只是杀死守护进程 ( avahi-daemon --kill) 会刷新缓存。我在 Ubuntu 18.04 上,守护进程自动重启。如果在其他发行版上它被杀死后没有运行,则可以使用avahi-daemon --daemonize.
请注意,杀死 avahi 守护进程需要 root,因此在某些情况下这可能不是最佳选择。
我看到我回答你的问题有点晚了,但我会留下一个通用的答案,以防其他人偶然发现这个问题。
我的回答基于 avahi-0.6.32_rc。
计算机/avahi 守护进程/其他东西是否有可能“缓存”结果?
是的,avahi-daemon 正在缓存查找结果。虽然这似乎没有在功能中明确列出,但avahi-daemon(8)联机帮助页提示它:
守护进程 [...] 为本地程序提供了两个 IPC API,以利用 avahi-daemon 维护的 mDNS 记录缓存。
我希望每次调用 avahi-resolve-host-name 都发送请求数据包。这可能吗?
是的。相关选项是cache-entries-max(来自avahi-daemon.conf(5)):
cache-entries-max=采用一个无符号整数,指定每个接口缓存了多少资源记录。较大的值允许 mDNS 在大型 LAN 中正常工作,但也会增加内存消耗。
为了达到想要的效果,你可以简单地设置:
cache-entries-max=0
Run Code Online (Sandbox Code Playgroud)
这将完全禁用缓存并强制 avahi-daemon 在每个请求上重新发出 MDNS 数据包,从而使您可以监控它们。
但是,我应该在这里注意,这也会使 avahi 对正常使用几乎毫无用处。虽然 avahi-daemon 将发出查找数据包,但它无法存储结果并且每次调用avahi-resolve-host-name(以及其他命令行工具、nss-mdns、D-Bus API...)都将失败。
| 归档时间: |
|
| 查看次数: |
5056 次 |
| 最近记录: |