Изучение различных методов доступа к Raspberry Pi с использованием mDNS

Raspberry Pi — популярный одноплатный компьютер, предлагающий безграничные возможности для проектов и экспериментов. Когда дело доходит до доступа к Raspberry Pi в локальной сети, использование mDNS (многоадресный DNS) может упростить процесс, позволяя вам подключаться к устройству, используя имя хоста, например «raspberrypi.local», а не полагаясь на его IP-адрес. В этой статье мы рассмотрим несколько методов с примерами кода для доступа к Raspberry Pi с помощью mDNS.

Метод 1: Avahi-daemon (системы на базе Linux)
Avahi-daemon — это система, которая облегчает обнаружение служб в локальной сети через набор протоколов mDNS/DNS-SD. Вот как вы можете использовать Avahi-daemon в системе на базе Linux:

  1. Установить пакет Avahi-daemon:

    sudo apt-get install avahi-daemon
  2. Настройте имя хоста:

    sudo nano /etc/hostname
  3. Добавьте в файл нужное имя хоста (например, raspberrypi) и сохраните его.

  4. Перезапустите демон Avahi:

    sudo /etc/init.d/avahi-daemon restart
  5. Теперь вы сможете получить доступ к Raspberry Pi, используя имя хоста, за которым следует «.local» (например, raspberrypi.local).

Метод 2: Bonjour (MacOS и Windows)
Bonjour — это реализация mDNS от Apple для macOS и Windows. Это позволяет вам легко обнаруживать устройства в вашей локальной сети и подключаться к ним. Вот как его использовать:

  1. Загрузите и установите Bonjour Print Services для Windows с веб-сайта Apple.

  2. После установки вы сможете получить доступ к 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.