Как предотвратить проблемы с mosquitto?

Тоже сейчас настраиваю недавно приобретенный контроллер.

У контроллера должен быть один штатный интерфейс для интеграции с ним снаружи. На него должен быть способ установить пароль и настроить tls. Эти настройки ничего не должны ломать внутри контроллера. Кажется, это здравый смысл.

Я тоже хочу настроить авторизацию mosquitto и настроить на нем tls. Ввиду того, что mosquitto центральный сервис контроллера, пытаюсь понять, как не поломать взаимодействия с ним других компонентов. Не хотелось бы об этом вообще думать, но приходится, т.к. деталей о взаимодействии внутренних компонентов нет, а печальный опыт советует все проверить перед таким изменением.

Что я пока вижу в mosquitto:

  • listener 0 /var/run/mosquitto/mosquitto.sock - я не сумел найти какие процессы работают с этим сокетом
  • listener 1883 (на “нулях”) - в дефолтной конфигурации почему-то к нему коннектится wb-mqtt-gpio
  • listener 18883 lo - в дефолтной конфигурации его использует nginx

В официальной доке по обеспечению безопасности mqtt написано, что нужно запрещать анонимный доступ на 1883.

Это подразумевает, что listener 1883 предназначен для внешних интеграций.

То, что при этом отваливается wb-mqtt-gpio - выглядит как недоработка разработчиков, которые в его конфигурации указали порт 1883 вместо специально предназначенного listener для внутренних взаимодействий контроллера.

Напрашивается вопрос для общего понимания:

  1. Расскажите пожалуйста и дополните доку о том, как весь набор сервисов wb-mqtt-* взаимодействует через mqtt. Через istener 18883 lo я не вижу коннектов. Через /var/run/mosquitto/mosquitto.sock - тоже. При этом у топикстартера ничего кроме wb-mqtt-gpio не сломалось.

Напрашиваются следующие фиксы:

  1. Listenter 1883 зарезервировать только для внешних интеграций и позволить пользователю выключать на нем анонимный доступ.
  2. Настроить wb-mqtt-gpio так, чтобы он работал с mosquitto как с ним работают другие сервисы wb-mqtt-*, не через 1883 порт.
  3. Сделать так, чтобы webui контроллера тоже работал с mosquitto либо через свой listener, либо так-же как с ним работают другие сервисы wb-mqtt-*. Тогда в UI не будет раздела-недоразумения “Веб-интерфейс/подключение к MQTT брокеру”. В нем просто отпадет надобность.

Пока данная проблема не решена напрашивается решение: для внешних интеграций, требующих аутентификации, настраивать свой listener.

Добрый день! Написали в решённую тему - мы не увидели, просим прощения. Назначили инженера на ваш вопрос.

Добрый день.

В актуальных версиях сервисы работают через socket. Уже почти все, начало перехода с TCP было три релиза назад. Но - некоторые, такие как wb-mqtt-gpio пока требуют локального доступа к TCP.
18883 - websocket и работает через обрастный прокси, настроенный в nginx. Для того чтобы не требовать лишний порт.

Да, это и есть в планах. В testing - уже.

Раздел нужен для того чтобы веб-интерфейс загружать с одного контроллера а работать с другим. При работе именно с тем же контроллером - ничего в нем настраивать не надо.

Здравствуйте!
У вас остались еще вопросы?

Нет, спасибо за ответ!