Linux getaddrinfo 不适用于 .local 域名

Linux getaddrinfo 不适用于 .local 域名

我通过 PPTP VPN 连接到另一个网络,主要是 Windows 网络。运行全新安装的 Ubuntu 16.04.1。

我想要连接的大多数东西都在 .local 域上。我发现在连接到 .local 域的阶段执行 getaddrinfo 的任何应用程序都会失败:

例如,Remmina 给出了这个错误:

tcp_connect:getaddrinfo(名称或服务未知)错误:协议安全协商或连接失败

我在 .local 和 .com 域上的 DNS 中设置了一个工作站,并且它们都可以正常解析:

rduz@henry:~$ nslookup bidsk0127.redacted.local
Server:     127.0.1.1
Address:    127.0.1.1#53

Name:   bidsk0127.redacted.local
Address: 172.16.5.155

rduz@henry:~$ nslookup bidsk0127.redacted.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Name:   bidsk0127.redacted.com
Address: 172.16.5.155

我可以正常连接到 .com 名称,没有 getaddrinfo 错误。我无法连接到 .local,它显示 getaddrinfo 错误。

在过去,我记得在 SLES 上,我们会更新 /etc/host.conf,添加一行“mdns off”以使 .local 解析正常工作。man host.conf 不再将其显示为有效选项。

有没有什么方法可以解决这个问题,以便 getaddrinfo 调用可以正确解析 .local 名称?

谢谢。

问候,Rich

答案1

经过更多的谷歌搜索,我找到了答案。就我而言,我不需要 mdns,因此我更新了 /etc/nsswitch.conf,如下所示:

root@henry:/etc# diff nsswitch.conf.orig nsswitch.conf
12c12
< hosts:          files mdns4_minimal [NOTFOUND=return] dns
---
> hosts:          files dns

相关内容