Перейти к содержанию

MQTT сервер: различия между версиями

Материал из OpenWrt Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
* MQTT-брокер без шифрования mosquitto-nossl
* MQTT-брокер без шифрования mosquitto-nossl
* MQTT-брокер с шифрованием mosquitto-ssl <br />Для настройки MQTT-сервера на роутере с OpenWRT нужно установить пакеты <code>mosquitto-ssl или mosquitto-nossl</code> и <code>mosquitto-client</code> через SSH или LuCI. После установки настройте <code>mosquitto</code>, запустите службу и настройте правила фаервола для доступа из вашей локальной сети, чтобы устройства могли подключаться к брокеру на порту 1883 / 8883 по протоколу TCP.  
* MQTT-брокер с шифрованием mosquitto-ssl  
<br /><br />
Для настройки MQTT-сервера на роутере с OpenWRT нужно установить пакеты <code>mosquitto-ssl или mosquitto-nossl</code> и <code>mosquitto-client</code> через SSH или LuCI. После установки настройте <code>mosquitto</code>, запустите службу и настройте правила фаервола для доступа из вашей локальной сети, чтобы устройства могли подключаться к брокеру на порту 1883 / 8883 по протоколу TCP.  


== MQTT-брокер без шифрования mosquitto-nossl ==
== MQTT-брокер без шифрования mosquitto-nossl ==

Версия от 20:32, 14 сентября 2025

  • MQTT-брокер без шифрования mosquitto-nossl
  • MQTT-брокер с шифрованием mosquitto-ssl



Для настройки MQTT-сервера на роутере с OpenWRT нужно установить пакеты mosquitto-ssl или mosquitto-nossl и mosquitto-client через SSH или LuCI. После установки настройте mosquitto, запустите службу и настройте правила фаервола для доступа из вашей локальной сети, чтобы устройства могли подключаться к брокеру на порту 1883 / 8883 по протоколу TCP.

MQTT-брокер без шифрования mosquitto-nossl

1. Установка MQTT-брокера (mosquitto-nossl)

  • Через SSH:
    1. Подключитесь к роутеру по SSH.
    2. Выполните команду для установки пакетов:

Код

opkg update
opkg install mosquitto-nossl mosquitto-client
  • Через LuCI (веб-интерфейс):
    1. Перейдите в раздел "System" > "Software".
    2. Нажмите "Update lists" для обновления списка пакетов.
    3. Найдите пакеты mosquitto-nossl и mosquitto-client в списке и установите их.

2. Настройка и запуск сервиса mosquitto Запустите службу.

Код

/etc/init.d/mosquitto enable
/etc/init.d/mosquitto start
  • Включите автозапуск при загрузке роутера: В LuCI, в разделе "System" > "Startup", убедитесь, что служба mosquitto включена и будет запускаться при загрузке.

3. Настройка фаервола (Firewall)

  • Создайте правило: В LuCI, перейдите в "Network" > "Firewall".
  • Добавьте правило: для порта 1883 (TCP) на вашей локальной сети (lan):
    • Action: accept (разрешить).
    • Protocol: TCP.
    • Source zone: lan (или зона, куда подключены ваши клиенты).
    • Destination zone: Device (input) (для получения входящих соединений).
    • Destination port: 1883.

Пример использования:

  1. 1. Подключите устройства: Ваши устройства (например, с датчиками и ESP32) настройте на подключение к IP-адресу вашего OpenWRT-роутера по порту 1883.
  2. 2. Публикация данных: Одно устройство публикует данные (например, температуру) в определенную тему (topic) MQTT, например, /sensors/temperature.
  3. 3. Подписка на данные: Другое устройство или веб-сервис подписывается на эту тему, и когда данные публикуются, брокер Mosquitto доставляет их подписчикам.

Таким образом, ваш OpenWRT роутер будет выступать в роли центрального MQTT-брокера для вашего умного дома или IoT-проекта, обеспечивая обмен сообщениями между устройствами.

MQTT-брокер с шифрованием mosquitto-ssl

https://www.onetransistor.eu/2019/05/mosquitto-mqtt-tls-certificate.html

Для настройки сертификатов для Mosquitto в OpenWrt на порту 8883, вы должны создать или получить файлы сертификатов (например, certfile, cafile, keyfile), а затем указать их пути в конфигурационном файле Mosquitto (обычно /etc/mosquitto/mosquitto.conf) с помощью директив listener 8883, certfile, cafile и keyfile. После этого вам нужно убедиться, что брандмауэр разрешает входящие соединения на порт 8883 и перезапустить службу Mosquitto.

1. Получите или создайте сертификаты

Вам понадобятся:

  • Сертификат сервера (certfile): Сам SSL-сертификат для вашего брокера Mosquitto.
  • Ключ сервера (keyfile): Приватный ключ, соответствующий сертификату сервера.
  • Сертификат корневого центра сертификации (cafile): Сертификат или список сертификатов доверенных центров сертификации, которые будут использоваться для проверки клиентских сертификатов (если вы их используете для аутентификации клиентов). Если вы не используете клиентскую аутентификацию, этот файл может быть не нужен, но его все равно стоит настроить для проверки подлинности сервера клиентами.

2. Отредактируйте конфигурационный файл Mosquitto

Найдите или создайте конфигурационный файл Mosquitto (обычно /etc/mosquitto/mosquitto.conf) и добавьте следующие строки:

Код

# Включает прослушиватель на порту 8883 для защищенных соединений MQTTS
listener 8883
# Путь к сертификату сервера
certfile /etc/mosquitto/certs/server.crt
# Путь к приватному ключу сервера
keyfile /etc/mosquitto/certs/server.key
# Путь к файлу с доверенными корневыми сертификатами (используется для проверки клиентских сертификатов, если они есть)
cafile /etc/mosquitto/certs/ca.crt

Важно: Укажите правильные пути к вашим файлам сертификатов и ключей в системе OpenWrt.

3. Откройте порт в брандмауэре

Убедитесь, что порт 8883 открыт в брандмауэре OpenWrt (обычно в /etc/config/firewall). Добавьте правило, разрешающее входящие TCP-соединения на порт 8883:

Код

config rule
    option name 'Allow-MQTT-SSL'
    option src 'wan' # или 'lan', в зависимости от того, откуда принимаются соединения
    option dest_port '8883'
    option proto 'tcp'
    option target 'ACCEPT'

4. Перезапустите Mosquitto

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

Код

/etc/init.d/mosquitto restart

Теперь ваш Mosquitto-брокер должен быть настроен на прослушивание SSL-соединений на порту 8883 с использованием ваших сертификатов.