我有一台无法通过 mDNS 解析主机名的机器:
### mDNS is working
$ avahi-resolve -n foo.local
foo.local 1.2.3.4
### NSS is configured to use mDNS
$ grep ^hosts /etc/nsswitch.conf
hosts: files mdns4_minimal [NOTFOUND=return] dns
### But something's not working in practice...
$ getent hosts foo.local # returns empty
为避免疑问,getent hosts
对于在单播 DNS 中定义的名称/etc/hosts
和通过单播 DNS 解析的名称均返回成功/正确的结果。
重新启动可以解决问题,但我想知道出了什么问题/如何在不重新启动的情况下解决问题。
大概libnss-mdns
需要某种形式的踢,虽然我得到的印象是nsswitch.conf:是否有我需要重新启动的守护进程?那没有必要。
答案1
我刚刚在 16.04 盒子上遇到了这个问题。可惜我浪费了几个小时却没有意识到简单的解决方案就是弹出盒子。
从我在 bsd 上看到的情况来看,我怀疑需要重新启动的服务是 dbus。参考资料是https://revprez.github.io/posts/2016-06-26-avahi-conquered.html