Назад | Перейти на главную страницу

При подключении к хосту с помощью 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

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

hosts:      files mdns4_minimal [NOTFOUND=return] dns

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