可以使用“host”通过 dns 解析主机名,但无法 ping/ssh/ntp

可以使用“host”通过 dns 解析主机名,但无法 ping/ssh/ntp

我正在设置本地网络并配置了 DNS 服务器。我可以通过查询 DNS 服务器来解析主机名,但没有程序可以查找它们。

我卸载了 libnss-mdns 并删除了 avahi-daemon,然后重新启动了。

这里有些例子:

root@cloud2:~# host ns.example.com
ns.example.com has address 10.10.10.100
root@cloud2:~# ping ns.example.com
ping: unknown host ns.example.com

root@cloud2:~# grep hosts /etc/nsswitch.conf 
hosts:          files dns

我的 ntp 服务器配置为 ns.example.com,但我得到的只是 ntpq 上的 nxdomain

有任何想法吗?

编辑:

这也适用于外部 DNS 条目。我的路由器既是自定义 DNS 服务器上的 DNS 转发器,也是 resolvconf 中的条目。

例如

root@cloud2:~# host google.com | head
google.com has address 74.125.225.65
google.com has address 74.125.225.66
google.com has address 74.125.225.67
google.com has address 74.125.225.68
google.com has address 74.125.225.69
google.com has address 74.125.225.70
google.com has address 74.125.225.71
google.com has address 74.125.225.72
google.com has address 74.125.225.73
google.com has address 74.125.225.78
root@cloud2:~# traceroute google.com
google.com: Temporary failure in name resolution
Cannot handle "host" cmdline arg `google.com' on position 1 (argc 1)

答案1

这是在 Ubuntu 服务器 12.04 LTS 和 Ubuntu 12.04 LTS 上

感谢大家的帮助。结果发现这是由于主机和 glibc 解析器读取 /etc/resolv.conf 的方式不同造成的。

我用 puppet 模块管理 resolv.conf,该模块编辑了 中的相应文件/etc/resolvconf/resolv.conf.d/

所述 puppet 模块导致 /etc/resolv.conf 如下所示:

 nameserver 10.10.10.100
 nameserver 192.168.3.100
 nameserver 10.10.10.1

 search example.com

每行开头都有一个空格。删除这些空格后,我能够通过 ping 和手动查找(host/nslookup/etc...)来解决问题

我可以发誓我在其他操作系统上也拥有这些空间而没有任何问题,但我刚刚在 SL6.3 盒子上尝试过,它导致了同样的行为。

谢谢您的帮助,很抱歉给您带来麻烦!

答案2

您需要为每种连接类型提供 DNS 配置。

网络管理器是你的朋友(或者如果你使用 DHCP,那么在那里配置你的 DNS)

相关内容