
У меня такая ситуация:
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 PC, то получаю сообщение «Сервер не найден».
Это может быть связано с состоянием Avahi в Ubuntu:
[РЕШЕНО] Невозможно получить доступ к серверам в домене .local в корпоративной локальной сети
Они не работают в Ubuntu. Это происходит потому, что Ubuntu по умолчанию устанавливает систему AVAHI Zeroconf mDNS, настраивает ее на «владение» доменом .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 PC:
$ 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, так и в Chrome на Windows?!
В качестве последней меры я попробовал изменить /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, независимо от операционной системы и браузера, запущенных на этом ПК?