У мене така ситуація:
Raspberry Pi 3 налаштовується як точка доступу до Wi-Fi (відповідно до 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, тоді я отримую "Сервер не знайдено".
Це може бути пов'язане зі станом Avahi на Ubuntu:
[SOLVED] Неможливо отримати доступ до серверів у домені .local у корпоративній локальній мережі
вони не працюють в Ubuntu. Це відбувається тому, що Ubuntu за замовчуванням встановлює систему mDNS AVAHI Zeroconf 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, що написано у /etc/hostsдослівному режимі RPi - але колись на ноутбуці Ubuntu одна і та ж адреса означає " цей ноутбук ", як це циклічний зворотний зв'язок, і оскільки у мене немає веб-сервера, який працює на ноутбуці Ubuntu, весь процес виходить з ладу.
Тепер - ось найцікавіше: у цій програмі ПК з Windows (я думаю, що Windows 7) myrpi.localвирішує 192.168.0.51- а веб-сторінка справно http://myrpi.local/працює як у Firefox, так і в Chrome у Windows ?!
Як остаточний захід, я спробував змінити /etc/nsswitch.confRPi:
# 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 все ще незмінний.
Отже, як я можу дати ім'я ( .localчи ні), яке можна вирішити в локальній мережі, до Raspberry Pi - щоб будь-який інший ПК у тій самій локальній мережі міг отримати вміст веб-сервера з Raspberry Pi, незалежно від операційної системи та браузера на цьому ПК?
