Задний план:
Я использую сервер Linux в локальной сети, который действует как веб-сервер и центральный коммуникационный сервер. Этот сервер взаимодействует с несколькими узлами в системе. После инициализации узла он отправляет свой IP-адрес на центральный коммуникационный сервер. Однако для того, чтобы узнать место назначения для отправки этого IP-адреса, узлу необходимо знать IP-адрес сервера. Чтобы разрешить сервер, я был направлен на использование mDNS.
Похоже, установка avahi на сервере позволяет выполнять многоадресную рассылку для сервера Linux.
sudo apt-get install avahi-daemon
Затем имя хоста сервера может быть изменено на то, где многоадресная рассылка разрешит IP-адрес сервера в
hostname.local
Вопрос 1:
Обязательно ли на узлах должен быть установлен avahi-daemon, чтобы эта схема работала? Если да, есть ли способ обойти это или включить многоадресную рассылку для узлов другим способом. Я сомневаюсь, поскольку не уверен, может ли микроконтроллер установить этот демон, поскольку ESP8226 используется в качестве модуля WiFi. (Я знаю, что ESP8226 поддерживает mDNS, просто не знаю, как именно).
Вопрос 2:
Если пользователь пытается получить доступ к странице на веб-сервере, могут ли они просто ввести имя mDNS в браузере, чтобы отправить запрос? Или у них тоже должен быть установлен avahi-daemon? Если это компьютер под управлением Windows, пытающийся получить доступ к приложению, я не могу гарантировать, что у них будет эта функция встроена. Опять же, если это необходимо, есть ли способ обойтись без демона?
Обновление: ESP8226 поддерживает mDNS, однако клиентский mDNS не встроен. Однако здесь есть клиентская библиотека mDNS для ESP8226: https://github.com/mrdunk/esp8266_mdns
Если эти контроллеры подключаются к бизнес-сети, «центральный коммуникационный сервер» должен иметь возможность управлять локальным ИТ-отделом (по крайней мере, статический IP-адрес). Так что скажите им, что вам нужна запись A для "centralcommsserver" или чего угодно, а затем позвольте вашему контроллеру искать centralcommsserver.
Вопрос 1: К сожалению, для использования mDNS у вас должен быть установлен avahi или bonjour (win / mac). Удачи в компиляции avahi для микроконтроллера! Я тоже никогда не использовал mDNS с Wi-Fi, но это действительно нормальный многоадресный трафик.
Вопрос 2: вы можете использовать имя mDNS для http, avahi полностью интегрирует его с DNS. Я фактически использовал его для загрузки общих ресурсов NFS. Не забудьте, если вы используете vhosts, чтобы добавить hostname.local в качестве псевдонима для vhost или чего-то еще.