使用avahi连接到主机给出错误:名称或服务未知

我一直在创build和销毁虚拟机,以便testing各种服务或应用程序,所以我想用avahi来连接它们的名字,所以我不必在脑海中使用宝贵的空间对于dynamicIP地址,明天可能会消失。 这似乎并不总是奏效。

我目前有两个CentOS 6.3虚拟机,都运行avahi-daemon,但其中一个不能通过它的名字到达。

问题机器:

error@underground ~ $ ssh nagios.local ssh: Could not resolve hostname nagios.local: Name or service not known 

工作机器:

 error@underground ~ $ ssh puppet.local [email protected]'s password: 

然而,我可以在networking上看到它:(地下是我工作的主机)

 error@underground ~ $ avahi-browse -at + br0 IPv4 puppet SSH Remote Terminal local + br0 IPv4 nagios SSH Remote Terminal local + br0 IPv4 puppet [52:54:00:d0:31:c7] Workstation local + br0 IPv4 nagios [52:54:00:93:ec:af] Workstation local + br0 IPv4 underground [6c:62:6d:d1:df:ad] Workstation local + virbr0 IPv4 underground [52:54:00:8e:60:30] Workstation local 

基于反馈, getent hosts的输出:

 error@underground ~ $ getent hosts nagios.local error@underground ~ $ getent hosts puppet.local 192.168.12.146 puppet.local 

在nagios.local,无法访问的虚拟机,avahi-daemon(显然)已经安装并正在运行,并且我在防火墙上打了适当的洞:

  pkts bytes target prot opt in out source destination 74 15950 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 state NEW udp dpt:5353 

nagios.local上的系统日志让我完全不知道可能会发生什么:

 Jul 18 04:24:18 nagios avahi-daemon[1384]: Leaving mDNS multicast group on interface eth0.IPv4 with address 192.168.12.132. Jul 18 04:24:18 nagios avahi-daemon[1476]: Found user 'avahi' (UID 70) and group 'avahi' (GID 70). Jul 18 04:24:18 nagios avahi-daemon[1476]: Successfully dropped root privileges. Jul 18 04:24:18 nagios avahi-daemon[1476]: avahi-daemon 0.6.25 starting up. Jul 18 04:24:18 nagios avahi-daemon[1476]: WARNING: No NSS support for mDNS detected, consider installing nss-mdns! Jul 18 04:24:18 nagios avahi-daemon[1476]: Successfully called chroot(). Jul 18 04:24:18 nagios avahi-daemon[1476]: Successfully dropped remaining capabilities. Jul 18 04:24:18 nagios avahi-daemon[1476]: Loading service file /services/ssh.service. Jul 18 04:24:18 nagios avahi-daemon[1476]: Joining mDNS multicast group on interface eth0.IPv4 with address 192.168.12.132. Jul 18 04:24:18 nagios avahi-daemon[1476]: New relevant interface eth0.IPv4 for mDNS. Jul 18 04:24:18 nagios avahi-daemon[1476]: Network interface enumeration completed. Jul 18 04:24:18 nagios avahi-daemon[1476]: Registering new address record for 2001:db8:1600:80bf:5054:ff:fe93:ecaf on eth0.*. Jul 18 04:24:18 nagios avahi-daemon[1476]: Registering new address record for 192.168.12.132 on eth0.IPv4. Jul 18 04:24:18 nagios avahi-daemon[1476]: Registering HINFO record with values 'X86_64'/'LINUX'. Jul 18 04:24:19 nagios avahi-daemon[1476]: Server startup complete. Host name is nagios.local. Local service cookie is 3129794608. Jul 18 04:24:19 nagios avahi-daemon[1476]: Service "nagios" (/services/ssh.service) successfully established. 

这两个安装的主要区别在于,puppet.local安装为“Desktop”安装,而nagios.local安装为“Minimal”安装,稍后安装各种与avahi相关的软件包。

我不知道为什么我无法解决这台机器的名字。 我错过了什么完全明显的事情?

更新:基于mgorven的build议,我再次检查了主机,发现它没有安装nss-mdns 。 所以我安装了它,现在问题完全颠倒了! 从主持人看来:

 error@underground ~ $ getent hosts puppet.local error@underground ~ $ getent hosts nagios.local 192.168.12.132 nagios.local 

我的猜测是,当查找主机名时,NSS库没有configuration为咨询mDNS,所以当程序查找失败的主机名时(即使Avahi本身正在提取名称)。 检查是否安装了nss-mdns软件包(似乎只能在EPEL中使用 ,而不是CentOS本身),并且/etc/nsswitch.conf中的hosts行包含mdns4 (或mdns4_minimal )数据库。 它应该看起来像这样:

 hosts: files mdns4_minimal [NOTFOUND=return] dns 

您可以使用getent hosts <hostname>testing主机名查找。