ubuntu服务器无法解析局域网主机名


14

有点卡在这里。

我有2台不能解析LAN主机名的机器,除非/ etc / hosts中有特定的条目

但是LAN上的其他计算机可以解析主机名。

我的局域网:

  • 1个运行DD-WRT v24-sp2且启用了DNSMasq的Cisco路由器。我已经使用局域网上的主机名和IP配置了它。
  • 1 x Kubuntu 12.10(只要在路由器上的DNSMasq中输入了所有主机名,即可正确解析所有主机名)
  • 2个NAS(也可以正确解析所有名称)

  • 1个Ubuntu Server 12.04(除非将本地主机名输入到/ etc / hosts中,否则它不会解析)

  • 1 x XBMCLive(Dharma)(相同-除非条目位于/ etc / hosts中,否则不会解析)

如何获得最后2个以在路由器上使用DNSMasq条目?每台机器都设置为将路由器用作名称服务器,并且所有设备都可以正确解析外部地址。

谢谢。

一些更多的信息:

在服务器上时,如果我ping另一台PC(wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

如果我然后附加.local

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

直接

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       

我不知道答案,我不知道这是否会有所帮助,但是如果您不知道...我发现,如果我在机器名称后附加“ .local”,将会以某种方式找到它无需任何配置。它实际上对我有所帮助,因为我正在指定地址,但是当我添加或删除用于测试的操作系统等时,需要不断更改条目。但是,通过指定machinename.local,我不再需要担心。如果您知道这是哪里来的,请随时告诉我。:)
Marty Fried

1
嗨,马蒂,谢谢您的回答。我已为问题添加了更多信息,以显示.local发生的情况
teracow 2013年

Answers:


15

关于当前输出

ping wstation
PING wstation.local.domain

清楚地表明您的个人计算机将追加.local.domain到非FQDN查询中。这是配置不正确或至少在您的设置中是错误的。(除非您实际上是.local.domain故意使用后缀)

名称解析和句点

很多人不知道的重要一件事是,全名应始终以句号(.)结尾。如果您省略它,则计算机将尝试在本地搜索域(例如,mydomain.tld)中解析它。因此,在这种情况下,对的查询mypc.local将变为mypc.local.mydomain.tld。为了防止这种情况,查询周期。

解析器配置

解析器配置在这里非常重要。在Ubuntu(和Debian)中,这是在文件中配置的/etc/network/interfaces(假设您没有运行NetworkManager):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

Linux中的名称解析也可以通过其他方式完成。不仅要查询所有本地DNS服务器。查看您的/etc/nsswitch.conf文件以hosts了解解析的配置:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

这意味着首先尝试文件(这是/etc/hosts文件),然后再尝试mDNS,然后才尝试查询真正的DNS服务器。mDNS是在Linux中使用Avahi实现的,在Apple设备上称为Bonjour。.local默认情况下使用后缀,并通过广播消息起作用。就像ARP一样,但是对于DNS而言。

.local在与mDNS设备混合使用的常规DNS设置中使用时,所有这些系统都可能非常混乱,甚至更加混乱。我想这就是为什么您现在对为什么一台设备可以工作而另一台设备不能工作的原因感到困惑的原因:它们并非都使用相同的解析方法。

整理东西

  • .local除非您想完全依赖mDNS,否则请避免使用。根据您的问题,我知道您想将自己的配置放在一个中央位置,因此我的做法是避免这种情况。
  • 将本地DNS服务器(在您的情况下为DD-WRT设备)配置为使用特殊域名,例如my.home。对于dnsmasq,这是一个设置,但是在常规设置中,应该在DNS服务器和DHCP服务器上都进行配置(因为它是通过DHCP宣布的)。
  • 配置所有PC以使其具有简单且唯一的主机名。他们在请求DHCP时使用此地址,并在路由器上运行的dnsmasq中使用此地址来解析它们。或者,手动配置它们以不必依赖DHCP。
  • 删除任何剩余的配置,/etc/resolv.conf以防您过去弄弄它。
  • 将网络中的PC配置my.home为用作本地搜索域。这可以通过DHCP自动完成,或者通过/etc/network/interfaces文件或在网络管理器中使用静态地址来完成:

    在此处输入图片说明

  • 现在,简单名称解析(ping hostname)和全名(ping hostname.my.home)都应该起作用。

5
哇!真棒答案gertvdijk!非常全面。如此之多,以至于我将需要一些时间来理解您所说的话。我可以说我在主机名后面用点测试了ping,它可以正常工作。对于永久性机器,我不在此LAN上使用DHCP。我从未在任何计算机上配置过.local设置,因为我不了解它的全部含义。我会按照您的指示进行进一步调查,然后再回覆您。
teracow

谢谢您的全面回答。我更改了/etc/nsswitch.conf,以便在mDNS之前尝试DNS files mdns4_minimal [NOTFOUND=return] dns mdns4。现在,所有事情的表现都更像是我期望的(主机名不佳)host.foo.local寻址的计算机。在此更改之前ping hostname可行,但ping hostname.foo.local失败了。dig hostname失败dig hostname.foo.local并返回结果时,我感到非常困惑,这与我的预期相反。现在,我可以按预期的方式ping FQDN。以这种方式设置订单是否有不利之处?
TafT

1

基于gertvdijk的答案,我只是在nsswitch.conf中注释掉了这一行

sudo vim /etc/nsswitch.conf

.
.
.
hosts:          files dns # mdns4_minimal [NOTFOUND=return] dns

0

在/ etc / hosts中,我在IP和主机名之间包含多个空格而不是使用TAB时遇到了类似的问题。更改为TAB后,可以通过ping解析主机名。

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

另请参阅/superuser//a/938366/467479


3
对不起,那是不正确的。主机文件将使用空格或制表符。此外,127.0.0.1应该首先具有localhost,然后是localhost.localdomain-并取决于您的设置,计算机的主机名。(在某些设置中,Ubuntu / Debian是否将主机名放在127.0.1.1行上),我不建议在主机文件中安装任何.local地址,因为它们与mDNS / Avahi
The Dude

1
如果您的域上装有Windows计算机,则显然使用单播DNS,该单播DNS与Avahi或Zeroconf mD​​NS实施不兼容。另外,请检查您的/etc/nsswitch.conf,以查看它是否在mdns4_minimal [NOTFOUND = return]之后运行,或进行完整的mdns4查找(将其移回)。另外,请勿将任何DNS服务器配置为使用.local域,因为mDNS / sd-DNS解析程序将屏蔽对该域的查找。对于内部DNS TLD,请使用.lan,.work,.home等(但不要使用新的TLD之一,例如.biz,.xyz,.web等)。祝您好运,欢迎来到有趣的DNS解析世界。
花花公子
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.