无法解析.foo.local域名


15

我的工作场所有一个内部网,其域名如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不会呢?


在VMBox中运行Ubuntu时遇到了完全相同的问题。@ adam820的解决方案也对我有用。
jimbo 2012年

Answers:


22

尽管我无法100%理解其为何无法按预期运行的原因,但似乎与mDNS服务(Linux中的Avahi,Mac / Windows中的Bonjour / Zeroconf)和Windows网络存在很大的冲突,使用.local作为域的内部路由名称。似乎发生的情况是,在ping server01时,它跳过使用mDNS进行解析,然后将搜索域(foo.local)附加到请求中,从而成功地查询了DNS服务器中的server01.foo.local。但是,在使用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跟踪器上的此错误,看来这是一个长期存在的问题,目前还没有明显的解决方法。不过,如果有人可以提供更多有关这种原因的见解,我们将不胜感激。


删除mdns部分已解决了问题
rhollencamp 2011年

非常感谢您添加了此内容。遇到了完全相同的问题,移动dns条目首先解决了它。就我而言,我使用的是最新的Ubuntu,而不是Fedora,但是解决方案完全相同。
jimbo,2012年

没什么看头,我只是尝试这样做,发现思科VPN的使用vpnc上删除这些条目后无法连接hosts: .*在行/etc/nsswitch.conf。替换这些设置解决了该问题。
dobbs

“当失败时,无论出于何种原因,它都不会继续使用直接DNS。” 。原因很明显。[NOTFOUND=return]意思是“如果mDNS告诉您找不到.local名称,那是权威性的,进一步询问毫无意义”。解决办法是在mDNS之前移动DNS,但仅使mDNS故障变为非授权就足够了。
MSalters

是的,这是有效的评论;那是7年前,当时我还不知道。但是,是的,删除它,按如下所述删除软件包或更改顺序都是有效的解决方法/解决方案。
adam820 '18 -10-4

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).

1

您可以检查一些事情:

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

  • 是/ etc / hosts中的server01?

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

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


* host.conf与命令无关。* server01不在/ etc / hosts中。我在编辑/etc/resolv.conf后尝试对其进行写保护,以使NM无法覆盖并重新启动。没有骰子
rhollencamp

@rhollencamp:您的系统上有nslookup吗?
ott-- 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.