Raspberry Pi — популярный одноплатный компьютер, предлагающий безграничные возможности для проектов и экспериментов. Когда дело доходит до доступа к Raspberry Pi в локальной сети, использование mDNS (многоадресный DNS) может упростить процесс, позволяя вам подключаться к устройству, используя имя хоста, например «raspberrypi.local», а не полагаясь на его IP-адрес. В этой статье мы рассмотрим несколько методов с примерами кода для доступа к Raspberry Pi с помощью mDNS.
Метод 1: Avahi-daemon (системы на базе Linux)
Avahi-daemon — это система, которая облегчает обнаружение служб в локальной сети через набор протоколов mDNS/DNS-SD. Вот как вы можете использовать Avahi-daemon в системе на базе Linux:
-
Установить пакет Avahi-daemon:
sudo apt-get install avahi-daemon -
Настройте имя хоста:
sudo nano /etc/hostname -
Добавьте в файл нужное имя хоста (например, raspberrypi) и сохраните его.
-
Перезапустите демон Avahi:
sudo /etc/init.d/avahi-daemon restart -
Теперь вы сможете получить доступ к Raspberry Pi, используя имя хоста, за которым следует «.local» (например, raspberrypi.local).
Метод 2: Bonjour (MacOS и Windows)
Bonjour — это реализация mDNS от Apple для macOS и Windows. Это позволяет вам легко обнаруживать устройства в вашей локальной сети и подключаться к ним. Вот как его использовать:
-
Загрузите и установите Bonjour Print Services для Windows с веб-сайта Apple.
-
После установки вы сможете получить доступ к Raspberry Pi, используя имя хоста, за которым следует «.local» (например, raspberrypi.local) из командной строки или проводника.
Метод 3: Python и библиотека «zeroconf».
Библиотека «zeroconf» предоставляет простой способ обнаружения сервисов в локальной сети с помощью mDNS. Вот пример использования Python и библиотеки Zeroconf для доступа к Raspberry Pi:
from zeroconf import ServiceBrowser, Zeroconf
def on_service_state_change(zeroconf, service_type, name, state_change):
if state_change == ZeroconfStateChange.Added:
info = zeroconf.get_service_info(service_type, name)
if info:
print("Service %s added, address: %s:%d" % (info.server, info.address, info.port))
zeroconf = Zeroconf()
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", handlers=[on_service_state_change])
try:
input("Press enter to exit...\n\n")
finally:
zeroconf.close()
Этот код прослушивает новые службы HTTP в локальной сети и выводит адрес и порт сервера при добавлении новой службы.
Благодаря mDNS доступ к Raspberry Pi становится более удобным и удобным. В этой статье мы рассмотрели три разных метода: Avahi-daemon для систем на базе Linux, Bonjour для macOS и Windows и Python с библиотекой «zeroconf». Каждый метод предоставляет возможность обнаружить Raspberry Pi и подключиться к нему, используя его имя хоста, за которым следует «.local». Выберите метод, который соответствует требованиям вашей платформы и проекта, и наслаждайтесь беспрепятственным удаленным доступом к Raspberry Pi.