MyTetra Share
Делитесь знаниями!
Время создания: 10.12.2024 12:27
Автор: alensav
Текстовые метки: Mosquitto 2.0
Раздел: MOSQUITT_SETTING
Запись: alensav/MyTetra2/main/base/1733822866yenj4r8iqv/text.html на raw.githubusercontent.com



Миграция с 1.x на 2.0


  • В ведение
  • Изменения в поведении слушателя
  • Использование root/привилегированного пользователя
  • Другое поведение
  • Упаковка и дистрибуция
  • Плагины

Введение


Mosquitto 2.0 вносит ряд изменений в поведение брокера, о которых необходимо знать новым пользователям и которые объясняются в этом документе.

Если вы упаковываете Mosquitto для распространения, см. раздел «Упаковка и распространение».

Если вы являетесь автором плагина, см. раздел «Плагины».

Изменения в поведении слушателя

Способ настройки прослушивателей в Mosquitto был изменен, чтобы помочь конечным пользователям сделать осознанный выбор в вопросах безопасности, а не просто полагаться на ранее весьма снисходительные настройки по умолчанию.

Прослушиватель без конфигурации

Если Mosquitto запущен без файла конфигурации или без настройки каких-либо прослушивателей, он теперь будет привязан к интерфейсам обратной связи 127.0.0.1 и/или ::1. Это означает, что будут возможны только соединения с локального хоста. Этот режим позволяет проводить автоматическое или ручное тестирование на локальной машине без необходимости в файле конфигурации. Только в этом режиме анонимные/неаутентифицированные пользователи разрешены по умолчанию.

Это относится к вам, если вы управляете своим брокером аналогично одному из следующих примеров:

  • mosquitto
  • mosquitto -p 1883.

Если вы используете этот режим и хотите, чтобы клиенты подключались с удаленной машины, вам потребуется использовать файл конфигурации:

слушатель 1883

# Обратите внимание, что по умолчанию анонимный доступ невозможен.

Эта конфигурация привязывает прослушиватель для порта 1883 к интерфейсу 0.0.0.0или ::по умолчанию, т.е. разрешает соединения на всех интерфейсах. Тем не менее, можно вручную привязаться к определенному интерфейсу, например listener 1883 192.168.1.1.

Аутентификация требует настройки

Теперь все слушатели требуют настройки аутентификации. Это за исключением случая, когда конфигурация слушателя не указана, и, следовательно, слушатель привязан к интерфейсу обратной связи, как описано выше.

Это означает, что allow_anonymousтеперь по умолчанию установлено значение false. Если у вас в настоящее время запущен брокер, у которого в файле конфигурации настроен прослушиватель, но нет другой настроенной аутентификации и явных allow_anonymousнастроек, то ваши клиенты не смогут подключиться после обновления до Mosquitto 2.0.

Есть три варианта:

  • Настройте встроенные password_fileпараметры acl_fileаутентификации.
  • Используйте плагин аутентификации, например новый плагин dynamic-security  или сторонний плагин mosquitto-go-auth  .
  • Установить allow_anonymous true— это следует делать только в том случае, если у вас есть особая потребность в неаутентифицированных клиентах.

Изменения версии протокола TLS прослушивателя

Опция прослушивателя tls_versionтеперь определяет минимальную версию протокола TLS для использования, а не точную версию. Например, настройка tls_version tlsv1.2разрешит как TLS v1.2, так и TLS v1.3.

Поддержка TLS v1.0 отключена.

Смешивание файлов конфигурации с -p

Если вы настраиваете прослушиватель в файле конфигурации и-p 1883 одновременно используете eg в командной строке, вам потребуется добавить все прослушиватели в файл конфигурации, поскольку такое поведение больше не поддерживается — порт, указанный в командной строке, будет игнорироваться.

Если у вас есть такой файл конфигурации:

слушатель 1883

# ...

И запустите Mosquitto вот так:mosquitto -c mosquitto.conf -p 1884

Тогда вам следует вместо этого запустить Mosquitto как mosquitto -c mosquitto.confи использовать файл конфигурации с обоими слушателями в:

слушатель 1883

# ...

слушатель 1884

# ...

Использование root/привилегированного пользователя

В версиях до 2.0, если Mosquitto запускался от имени пользователя root, он загружал сертификаты TLS, запускал прослушиватели и начинал ведение журнала, прежде чем переходить к непривилегированному пользователю Mosquitto.

Это поведение изменилось. В версии 2.0 Mosquitto загружает файл конфигурации и немедленно переходит к настроенному непривилегированному пользователю, который по умолчанию является mosquitto. Если mosquittoнастроенный вручную пользователь недоступен, брокер попытается перейти к nobodyпользователю.

Это означает, что единственными файлами, к которым Mosquitto будет иметь доступ как root, являются файлы конфигурации, и, следовательно, любые другие файлы, к которым Mosquitto необходимо получить доступ или записать их, должны быть доступны непривилегированному пользователю.

В частности, тем, кто использует сертификаты TLS от Lets Encrypt, нужно будет что-то сделать, чтобы Mosquitto мог получить доступ к этим сертификатам. Пример сценария развертывания обновления, который поможет в этом, находится по адресу misc/letsencrypt/mosquitto-copy.sh  .

По-прежнему возможно принудительно запустить Mosquitto от имени root, но делать это настоятельно не рекомендуется.

Другое поведение

Теперь опция pid_fileвсегда будет пытаться записать pid-файл, независимо от того, -dиспользуется ли аргумент при запуске брокера.

Значение параметра max_queued_messagesувеличено со 100 до 1000 по умолчанию и теперь также применяется к сообщениям QoS 0 при подключении клиента.

Упаковка и дистрибуция

Компоненты, предоставляемые Mosquitto, можно разделить на следующие категории:

Клиентские библиотеки

Библиотеки C/C++ для создания MQTT-клиентов.

  • lib/libmosquitto.so.1
  • lib/cpp/libmosquittopp.so.1
  • включить/москит.h
  • включить/mqtt_protocol.h

Клиенты

Клиенты командной строки MQTT общего назначения. Они зависят от libmosquitto.so.1.

  • клиент/mosquitto_pub
  • клиент/mosquitto_sub
  • клиент/mosquitto_rr

Маклер

Основное предложение проекта — брокер Mosquitto, а также сопутствующие утилиты и плагины.

  • приложения/mosquitto_ctrl/mosquitto_ctrl
  • приложения/пароль_mosquitto/пароль_mosquitto
  • плагины/динамическая-безопасность/mosquitto_dynamic_security.so
  • src/москитто
  • включить/mosquitto_broker.h
  • включить/mosquitto_plugin.h

Изменения:

  • Утилита mosquitto_passwd изменила местоположение.
  • Добавлена ​​утилита mosquitto_ctrl.
  • Добавлен плагин mosquitto_dynamic_security — это специфичная для Mosquitto общая библиотека.
  • Для работы утилиты mosquitto_ctrl требуется libmosquitto.so.1.
  • Разработчики плагинов ожидают, что им будут доступны заголовочные файлы из libmosquitto, а также из брокера.

Зависимости

mosquitto_ctrl и mosquitto_dynamic_secuity.so требуют библиотеку cJSON. Если она не обнаружена или нежелательна, эти функции можно отключить.

Плагины

Mosquitto 2.0 представляет новый интерфейс плагина, который должен быть проще в разработке и более легко расширяемым. Отдельный документ будет описывать новый интерфейс плагина. Если у вас есть существующий плагин, который следует рекомендациям в mosquitto_plugin.h, то он продолжит работать с Mosquitto 2.0, если только он не скомпилирован с использованием заголовочных файлов Mosquitto 2.0, которые содержали ошибку в документации.

Чтобы изменить плагин так, чтобы он работал как в Mosquitto 1.6, так и в Mosquitto 2.0, вам следует изменить экземпляр mosquitto_auth_plugin_versionтак, чтобы он возвращал версию интерфейса плагина, которую вы поддерживаете, 

 
MyTetra Share v.0.65
Яндекс индекс цитирования