У меня такая ситуация:

raspi3-02-Netw

Raspberry Pi 3 настроен как точка доступа WiFi (согласно https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/) и веб сервер. Я хотел бы дать ему имя хоста, скажем myrpi , которое будет разрешаться в локальной сети с любого клиента - независимо от того, подключены ли они к проводному или беспроводному соединению - так, чтобы при вводе веб-адреса http://myrpi в любом браузере (Firefox, Chrome) на любом локальном ПК (Windows, Ubuntu), я бы получал веб-страницу на 80-м порту Raspberry Pi - без каких-либо изменений на компьютерах веб-клиента (то есть на компьютере с Windows и Ubuntu, если RPi - это веб-сервер)

Сначала я нашел это:

Итак, я пошел по нему. Теперь у меня есть на RPi:

  • В /etc/hosts -> 127.0.1.1 myrpi
  • В /etc/hostname -> myrpi

Затем я выполнил sudo apt-get install avahi-daemon на RPi и перезагрузился.

Затем я пытаюсь из командной строки на ПК с Ubuntu (подключен к RPi в качестве клиента WiFi):

$ ping myrpi.local
PING myrpi.local (172.24.1.1) 56(84) bytes of data.
64 bytes from 172.24.1.1: icmp_seq=1 ttl=64 time=1.54 ms
...
$ wget -O- myrpi.local
Resolving myrpi.local (myrpi.local)... 172.24.1.1
Connecting to myrpi.local (myrpi.local)|172.24.1.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
...
<p>This is the default web page for this server.</p>
...

Итак, пока все выглядит хорошо - НО, если я http://myrpi.local/ в качестве веб-адреса в Firefox или Chromium на ПК с Ubuntu, я получу "Сервер не найден".

Это может иметь какое-то отношение к состоянию Авахи в Ubuntu:

[Решено] Невозможно получить доступ к серверам в домене .local в корпоративной локальной сети

они не работают в Ubuntu. Это связано с тем, что Ubuntu по умолчанию устанавливает систему mDNS AVAHI Zeroconf, настраивает ее на "владение" доменом .local и назначает ей приоритет перед обычным DNS в порядке разрешения имен хостов.

Итак, я подумал, что меня не волнует добавление .local к доменному имени - я просто подумал, что именно так все и должно быть. Поэтому я попытался вызвать имя хоста прямо с ПК с Ubuntu:

$ ping myrpi
PING myrpi (127.0.1.1) 56(84) bytes of data.
64 bytes from myUbuntuLaptop (127.0.1.1): icmp_seq=1 ttl=64 time=0.022 ms
...
$ wget -O- http://myrpi/
--2017-01-26 13:38:56--  http://myrpi/
Resolving myrpi (myrpi)... 127.0.1.1
Connecting to myrpi (myrpi)|127.0.1.1|:80... failed: Connection refused.

Здесь даже не работает wget (и, разумеется, браузеры Firefox и Chromium), хотя понятно, почему - здесь myrpi разрешен до 127.0.1.1, что дословно записано в RPi /etc/hosts - но однажды на ноутбуке Ubuntu , тот же адрес означает "этот ноутбук", так как это петлевой адрес, и, поскольку у меня нет веб-сервера, работающего на ноутбуке Ubuntu, весь процесс завершается ошибкой.

Теперь - вот забавная вещь: в этой настройке ПК с Windows (я думаю, что Windows 7)myrpi.local разрешается до 192.168.0.51 - и веб-страница http://myrpi.local/ отлично работает как в Firefox, так и в Firefox. Хром на винде ?!

В качестве последней меры я попытался изменить /etc/nsswitch.conf на RPi:

# hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 # original
hosts:          files dns mdns4 mdns4_minimal

... и перезагрузка - однако браузеры в Ubuntu по-прежнему не могут получить доступ к http://myrpi/ или http://myrpi.local/ . Мой /etc/resolv.conf на RPi все еще остается неизменным.

Итак, как я могу дать Raspberry Pi имя (.local или нет), разрешаемое в локальной сети, чтобы любой другой ПК в той же локальной сети мог получать содержимое веб-сервера из Raspberry Pi, независимо от ОС и браузер работает на этом ПК?

0