Подключение к хосту с помощью avahi выдает ошибку: имя или служба неизвестна

Я все время создаю и уничтожаю виртуальные машины, чтобы протестировать различные сервисы или приложения, и поэтому я хотел бы использовать avahi для подключения к ним по их именам, чтобы мне не пришлось использовать ценное пространство в моей голове для динамических IP-адресов, которые, скорее всего, завтра исчезнут. Это не всегда работает.

В настоящее время у меня есть две виртуальные машины 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
error@puppet.local's password: 

Тем не менее, я вижу это в сети: (андерграунд - хост-машина, с которой я работаю)

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 был установлен как "настольный", тогда как nagios.local был установлен как "минимальный", и позже были установлены различные связанные с avahi пакеты.

Я затрудняюсь понять, почему я не могу определить имя этой машины. Что совершенно очевидно, что я пропустил?

Обновление: по рекомендации mgorven я снова проверил хост и обнаружил, что на нем нет nss-mdns установлены. Так что я установил его, и теперь проблема точно решена! Как видно из хоста:

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

1 ответ

Решение

Я предполагаю, что библиотека NSS не настроена для обращения к mDNS при поиске имен хостов, и поэтому, когда программы ищут имя хоста, она не работает (даже если сама Avahi выбирает имя). Проверьте, что nss-mdns пакет установлен (кажется, что он доступен только в EPEL, а не в самом CentOS), и что hosts линия в /etc/nsswitch.conf содержит mdns4 (или же mdns4_minimal) база данных. Это должно выглядеть примерно так:

hosts:      files mdns4_minimal [NOTFOUND=return] dns

Вы можете проверить поиск имени хоста с getent hosts <hostname>,

Другие вопросы по тегам