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