无法解析 .foo.local 域名

无法解析 .foo.local 域名

我的工作场所有一个内联网,其中的域名包括server01.foo.localserver02.foo.local等。我最近启动了 Fedora 16 实时环境进行测试,发现这些域名无法解析。

例如:

$ ping server01.foo.local
ping:未知主机 server01.foo.local
$ ping server01
PING server01.foo.local (XXXX) ...

为什么会server01解析(并将名称打印为server01.foo.local),但server01.foo.local不会?

答案1

虽然我并不完全清楚为什么它不能按预期工作,但似乎与 mDNS 服务(Linux 中的 Avahi、Mac/Windows 中的 Bonjour/Zeroconf)和使用 .local 作为域的内部路由名称的 Windows 网络存在很大冲突。似乎发生的情况是,当 ping server01 时,它会跳过使用 mDNS 进行解析,然后将搜索域(foo.local)附加到请求中,从而成功查询 server01.foo.local 的 DNS 服务器。但是,当使用 mDNS(使用 .local 作为默认计算机名称扩展名)时,当您尝试 ping server01.foo.local 时,它实际上是通过 mDNS 广播,寻找名为“server01.foo”的计算机;当它失败时,无论出于何种原因,它都不会直接转到 DNS。解决此问题的主要方法是不将您的域命名为 .local,这可能违背了大多数 Windows 管理员对域结构的培训。话虽如此:

如果 mDNS 在您的网络中无关紧要(这在企业中很常见,企业往往运行专用的 DNS 服务器,而在家庭网络中有时会使用 mDNS),那么更改搜索顺序是最简单的解决方法。

这可以在 /etc/nsswitch.conf 中找到。主机部分将列出顺序,对于 Fedora 16,默认顺序为:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

如果将其更改为:

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

在搜索顺序中将 dns 向前移动,这应该可以暂时解决问题。或者,如果您知道根本不需要 mDNS,只需删除“mdns4_minimal [NOTFOUND=return]”部分。

看着Red Hat 跟踪器上的这个错误,这似乎是一个长期存在的问题,目前还没有明显的解决办法。不过,如果有人能提供更多有关为什么会出现这种情况的见解,我将不胜感激。

答案2

如果您使用域,我建议您使用另一种解决方案。首先,这不是一个好主意,因为它似乎是用于某些多播动态发现的.local标准/惯例。.local

但如果你坚持的话,只需删除nss-mdns软件包或libnss-mdns取决于你的发行版的软件包,问题就会得到解决。如果你不需要该功能,那为什么还要保留它呢?

这里是yum info nss-mdns

Summary     : glibc plugin for .local name resolution
URL         : http://0pointer.de/lennart/projects/nss-mdns/
License     : LGPLv2+
Description : nss-mdns is a plugin for the GNU Name Service Switch (NSS)
            : functionality of the GNU C Library (glibc) providing host name
            : resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous,
            : aka Apple Bonjour), effectively allowing name resolution by common
            : Unix/Linux programs in the ad-hoc mDNS domain .local.
            : 
            : nss-mdns provides client functionality only, which means that you
            : have to run a mDNS responder daemon separately from nss-mdns if
            : you want to register the local host name via mDNS (e.g. Avahi).

答案3

您可以检查以下事项:

  • /etc/host.conf 中是否有一条命令,指定在查询 DNS 之前检查 /etc/hosts?

  • server01 是否在 /etc/hosts 中?

  • /etc/resolv,conf 中是否有search foo.local?这会将 foo.local 附加到您查找的任何主机名

我想知道您的名称服务器是否设置正确。如果您仍有 nslookup,它会返回什么server01server01.foo.local以及 ip 地址(反向查找)?

相关内容