我正在使用 Ubuntu 22.04。我希望能够解析连接到本地网络的设备的主机名。该设备正在使用 mDNS 发布其主机名。在我的计算机上,我可以 ping device.local,但 nslookup 返回:

** 服务器找不到设备。本地:NXDOMAIN

avahi-resolve也返回正确的地址。

nsswitch.conf有:

hosts:          files mdns4_minimal [NOTFOUND=return] 

请注意,该设备具有静态 IP 地址。device.local我的 DNS 服务器不知道该 IP 地址,因此我想以这种方式保留该 IP 地址。

我尝试了各种修改 nsswitch.conf 和 dnsmasq 配置的方法。我期望 nslookup 能够解析设备的地址,但没有结果。

添加条目是/etc/hosts可行的,但我不喜欢这个解决方案,因为设备的地址将来可能会改变。


最佳答案
1

nslookup是专门用于常规(非多播)DNS的故障排除工具。除非您明确指定要查询的其他DNS服务器,否则它会故意忽略/etc/nsswitch.conf并联系列出的第一个DNS服务器。/etc/resolv.conf

avahi-resolve是一个类似的专用于 mDNS 的工具:它将始终仅使用 mDNS。

相反,使用例如getent hosts device.localgetent ahosts device.local。这些命令将使用 中配置的主机名解析方法/etc/nsswitch.conf,执行大多数实际应用程序在解析主机名时所做的操作。

1

  • 一切正常。不幸的是,当我在配置文件中使用主机名时,Prometheus 服务返回查找错误,但我猜这是 Prometheus 错误?


    –