尽管我无法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跟踪器上的此错误,看来这是一个长期存在的问题,目前还没有明显的解决方法。不过,如果有人可以提供更多有关这种原因的见解,我们将不胜感激。