Доступен ли брокер MQTT извне, не открывая порт в брандмауэре?

9

Я бы хотел, чтобы мой брокер MQTT был доступен за пределами моей домашней сети, но я не очень хочу открывать порт в брандмауэре. И я бы хотел не использовать свой домашний IP.

Довольно удобно иметь незашифрованного открытого брокера дома, но это не сработает, если я собираюсь разоблачить его. Какие еще варианты у меня есть?

Томас Дженсен
источник
@Bence Кауликс какие-либо предложения о том, что отсутствует в моем ответе?
Hardillb
1
@hardillb Ваш ответ - хорошее резюме, но я думаю, что было бы полезно получить более подробную информацию по каждому пункту. Например, как настроить такой мост между двумя брокерами. Кроме того, я просто хотел бы прийти к другим идеям, если таковые имеются, это лучшее описание, которое я могу найти, ваш ответ также сам по себе. Возможно, я должен был выбрать причину «Не получил достаточного внимания».
Бенс Кауликс
Как не эксперт, я бы согласился, что пункт 2 (который кажется наиболее ценной частью ответа) можно было бы развить немного подробнее. Может быть, со ссылкой на инструкции, теперь уверен.
Шон
к сожалению, у каждого отдельного типа брокера есть свой способ настройки моста, поэтому невозможно дать общий ответ (также как с настройкой аутентификации / TLS)
hardillb

Ответы:

10

У вас есть 3 варианта, если вы не хотите переадресовывать порт.

  1. Используйте брокера в облаке, чтобы клиент из дома всегда подключался к нему. Используйте TLS и аутентификацию, чтобы другие не могли подслушивать или вводить нежелательные сообщения
  2. Используйте облачного брокера и настройте мост между внутренним брокером и облачным брокером (вы все еще хотите зашифровать и установить имя пользователя / пароль в облачном брокере). Это имеет то преимущество, что внутренние вещи продолжают работать, если интернет-соединение обрывается.
  3. VPN на всех внешних устройствах для предоставления доступа к вашей домашней сети (но, честно говоря, вам, вероятно, придется либо открыть порт для VPN, либо иметь маршрутизатор, который поддерживает функцию VPN-сервера)

Но переадресация порта на правильно настроенный (примерно такой же, как у облачного брокера) на самом деле не является риском.

hardillb
источник
1
Мне нравится идея облачного домашнего моста, которая имеет дополнительный бонус, заключающийся в том, что все службы отчетов за пределами моей домашней сети по-прежнему будут работать нормально, если мой локальный брокер отключится. И местный брокер получит «пропущенные» данные при возвращении в онлайн. Большой! :)
Томас Дженсен
3

Поскольку брокер является сервером, вы ДОЛЖНЫ открыть хотя бы один порт для подключения клиентов.

Таким образом, ваша проблема становится частным случаем разоблачения услуги в Интернете.

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

Ваш самый простой подход, вероятно, заключается в усилении защиты вашего брокера (отключении анонимных клиентов) и ограничении тех, кто может подключаться к нему через брандмауэр (разрешите только определенные IP-адреса клиентов, если вы их знаете заранее).

Поддержка Гамбита
источник
3
Это не правильно, я связал своего локального брокера с облачным. А поскольку мостовое соединение инициируется изнутри моей домашней сети, открытие порта не требуется.
Томас Дженсен
3

@hardillb дал хороший ответ, но позвольте мне добавить несколько деталей, добавив немного «реального» прикосновения:

  1. Выберите брокера MQTT, доступного для общественности. HiveMQ может быть хорошим примером, и вы можете начать со страницы тестирования , описывающей, как подключиться к брокеру:

Подключиться к публичному брокеру

Хост: broker.hivemq.com

Порт: 1883

Порт веб-сокета: 8000

  1. Выберите, какой клиент лучше всего вам подходит, и используйте его для внутреннего взаимодействия брокера с публичным MQTT-брокером. Например, ваш клиент C может быть Paho MQTT . Клиент поддерживает SSL / TLS, поэтому ваша безопасность остается на высоком уровне.

  2. Paho MQTT Embedded может быть вашим выбором для внешних устройств.

  3. HiveMQ имеет политику лицензирования с оплатой по факту использования, поэтому вы можете рассмотреть ее с осторожностью. В любом случае, вы можете проверить эту страницу, чтобы получить список доступных облаков и тестирование доступных брокеров MQTT.

Амит Вуйич
источник