У меня такая ситуация:
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 - это веб-сервер)
Сначала я нашел это:
- http://www.howtogeek.com/167190/how-and-why-to-assign-the-.local-domain-to-your-raspberry-pi/
- http://www.howtogeek.com/167195/how-to-change-your-raspberry-pi-or-other-linux-devices-hostname/
Итак, я пошел по нему. Теперь у меня есть на 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 в порядке разрешения имен хостов.
- 173804 - [rfe] Добавить поддержку Bonjour (Rendezvous/zeroconfig) в браузер
- https://stackoverflow.com/questions/29637622/resolve-mdns-local-url-in-browser-address-bar
- ПК-версия Google Chrome не распознает доменное имя .local
Итак, я подумал, что меня не волнует добавление .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, независимо от ОС и браузер работает на этом ПК?