4

У меня есть raspberry pi (raspbian jessie) с сервисами ssh & vnc, зарегистрированными в avahi. Я вижу обе службы в моем клиенте (Chromebook)

chronos@localhost ~ $ avahi-browse -arl
+  mlan0 IPv4 raspberrypi SSH                               _ssh._tcp            local
+  mlan0 IPv4 raspberrypi VNC                               _rfb._tcp            local
+  mlan0 IPv4 raspberrypi [30:b5:c2:1e:2f:df]               _workstation._tcp    local
=  mlan0 IPv4 raspberrypi SSH                               _ssh._tcp            local
   hostname = [raspberrypi.local]
   address = [192.168.1.200]
   port = [22]
   txt = []
=  mlan0 IPv4 raspberrypi [30:b5:c2:1e:2f:df]               _workstation._tcp    local
   hostname = [raspberrypi.local]
   address = [192.168.1.200]
   port = [9]
   txt = []
=  mlan0 IPv4 raspberrypi VNC                               _rfb._tcp            local
   hostname = [raspberrypi.local]
   address = [192.168.1.200]
   port = [5900]
   txt = []

И кажется, что я могу решить как имя, так и адрес:

chronos@localhost ~ $ avahi-resolve --address 192.168.1.200
192.168.1.200   raspberrypi.local
chronos@localhost ~ $ avahi-resolve --name raspberrypi.local
raspberrypi.local       192.168.1.200

Но всякий раз, когда я пытаюсь пинговать или ssh малину с моего chromebook, она не разрешается:

chronos@localhost ~ $ ping raspberrypi.local
ping: unknown host raspberrypi.local
chronos@localhost ~ $ ssh pi@raspberrypi.local
ssh: Could not resolve hostname raspberrypi.local: Name or service not known

Я что-то пропустил? На самом деле я могу подключить мой Raspberry Pi к другому клиенту (Arch Linux) в моей локальной сети, поэтому я полагаю, что проблема должна быть на стороне Chromebook.

Это определение сервиса, которое я использую в Raspberry Pi (/etc/avahi/services/ssh.service):

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
        <name replace-wildcards="yes">%h SSH</name>
        <service>
                <type>_ssh._tcp</type>
                <port>22</port>
        </service>
</service-group>

2 ответа2

1

Avahi ищет сервисы Avahi на локальной сети, запрашивает их (в вашем примере), чтобы показать разрешение IP.

Использование IP-адреса на вашей Chromebook приведет к тому результату, который вы ищете (ping reply или ssh access).

Большинство сетей не хранят имя машины, только IP. Вы можете предоставить свой собственный поиск доменного имени (для статического IP-адреса) в /etc/hosts (chromebook должен быть в режиме разработчика), добавив строку:raspberrypi.local 192.168.1.200

Или, автоматизировав его в сценарии, используя sed чтобы заменить строку, начинающуюся с raspberrypi.local , выводом команды avahi-resolve --name raspberrypi.local . Это будет работать для динамического распределения IP-адресов, но вам все равно придется запускать сценарий хотя бы один раз при каждом включении RPi (в случае его изменения).

Причина, по которой вы не получаете результат (который вы ожидаете), заключается в том, что служба доменных имен (или DNS-сервер) не знает об именах сетевых адресов.


Следующее также будет работать:

ping `avahi-resolve --name raspberrypi.local`
ssh `avahi-resolve --name raspberrypi.local`

`находится на тильде (~)

0

Обычный способ поддержки поиска имен avahi *.local чтобы он просто работал с ping raspberrypi.local - через mdns4_minimal в /etc/nsswitch.conf например, как описано в разделе Как настроить поиск локальных DNS в Ubuntu 16.10? - Спроси Ubuntu

Похоже, что это было возможно в Chrome OS после исправления этой ошибки: 199397 - FR: разрешение имен mDNS - хром - монорельс, но это приводило к проблемам в некоторых сетях, в которых использовался собственный домен не-mdns .local , как описано в 626377 - Включить разрешение имени хоста mDNS без прерывания .local одноадресной DNS - хром - монорельс.

Похоже, что в начале 2018 года выпуск 626377 близок к выпуску, чтобы снова включить поиск в mdns.

Тем временем я предполагаю, что это можно исправить локально, если вы войдете в режим разработчика и измените раздел rootfs. И до тех пор, ответ Пола Уратта имеет несколько полезных обходных путей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .