MQTT сервер
- 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:
- Подключитесь к роутеру по SSH.
- Выполните команду для установки пакетов:
opkg update opkg install mosquitto-nossl mosquitto-client
- Через LuCI (веб-интерфейс):
- Перейдите в раздел "System" > "Software".
- Нажмите "Update lists" для обновления списка пакетов.
- Найдите пакеты
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
.
- Action:
Пример использования:
- 1. Подключите устройства: Ваши устройства (например, с датчиками и ESP32) настройте на подключение к IP-адресу вашего OpenWRT-роутера по порту 1883.
- 2. Публикация данных: Одно устройство публикует данные (например, температуру) в определенную тему (topic) MQTT, например,
/sensors/temperature
. - 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 с использованием ваших сертификатов.