¿Se puede acceder al agente MQTT desde el exterior sin abrir el puerto en el firewall?

9

Me gustaría que mi corredor MQTT sea accesible desde fuera de mi red doméstica, pero soy un poco reacio a abrir un puerto en el firewall. Y me gustaría evitar usar la IP de mi casa.

Es bastante conveniente tener un corredor abierto sin encriptar en casa, pero eso no funciona si voy a exponerlo. ¿Qué otras opciones tengo?

Thomas Jensen
fuente
@Bence Kaulics alguna sugerencia sobre lo que falta en mi respuesta?
hardillb
1
@hardillb Su respuesta es un buen resumen, pero creo que podría ser útil tener más detalles sobre cada punto. Por ejemplo, cómo configurar dicho puente entre dos corredores. También, simplemente, me vendrían bien otras ideas si hay alguna, esta descripción de recompensas es lo mejor que pude encontrar, su respuesta también es independiente. Tal vez debería haber elegido la razón "No recibí suficiente atención".
Bence Kaulics
Como no experto, estaría de acuerdo en que el punto 2 (que parece la parte más valiosa de la respuesta) podría elaborarse un poco más. Tal vez con un enlace a un tutorial, ahora seguro.
Sean Houlihane
por desgracia cada tipo de corredor tiene una forma diferente de configurar un puente por lo que es imposible dar una respuesta genérica (Lo mismo sucede con la configuración de autenticación / TLS)
hardillb

Respuestas:

10

Básicamente tiene 3 opciones si no desea reenviar un puerto.

  1. Use un corredor en la nube para que el cliente de su casa siempre se conecte a él. Use TLS y autenticación para que otros no puedan espiar o inyectar mensajes no deseados
  2. Use un agente en la nube y configure un puente entre el agente interno y el agente en la nube (aún desea cifrar y establecer el nombre de usuario / contraseña en el agente en la nube). Esto tiene la ventaja de que las cosas internas siguen funcionando si se corta la conexión a Internet.
  3. Una VPN en todos los dispositivos externos para permitir el acceso a su red doméstica (pero, para ser sincero, probablemente tendrá que abrir un puerto para la VPN o tener un enrutador que admita ser un servidor VPN)

Pero reenviar un puerto a una configuración adecuada (casi lo mismo que el agente de la nube) no es realmente un riesgo.

hardillb
fuente
1
Me gusta la idea del puente de inicio en la nube, que tiene la ventaja adicional de que todos los servicios de informes fuera de mi red doméstica seguirán funcionando normalmente si mi corredor local deja de funcionar. Y el corredor local obtendrá los datos "perdidos" cuando vuelva a estar en línea. ¡Excelente! :)
Thomas Jensen
3

Como el agente es un servidor, DEBE abrir al menos un puerto para que los clientes se conecten.

Entonces, su problema se convierte en un caso especial de exponer un servicio en Internet.

Esto se ha hecho a través de DMZ, ya sea a través de proxy u otra forma de exigir una autenticación más estricta que el servicio predeterminado. Si su proxy vive en la nube, eso solo extiende su DMZ a la nube.

Probablemente, su enfoque más simple sea fortalecer a su agente (deshabilitar clientes anónimos) y restringir quién puede conectarse a él a través del firewall (permita solo ciertas direcciones IP de clientes, si las conoce de antemano).

Soporte de gambito
fuente
3
Eso no es correcto, he unido mi corredor local con uno en la nube. Y dado que la conexión del puente se inicia desde el interior de mi red doméstica, no es necesario abrir ningún puerto.
Thomas Jensen
3

@hardillb dio una buena respuesta, pero déjame intentar agregar algunos detalles agregando un toque "real":

  1. Elija un corredor de MQTT disponible para el público. HiveMQ puede ser un buen ejemplo y puede comenzar con la página de prueba que describe cómo conectarse al corredor:

Conéctese al corredor público

Anfitrión: broker.hivemq.com

Puerto: 1883

Puerto Websocket: 8000

  1. Elija qué cliente se adapta mejor a usted y úselo para la interconexión interna del agente con el agente público MQTT. Por ejemplo, su cliente C podría ser Paho MQTT . El cliente tiene soporte para SSL / TLS, por lo que su seguridad permanece en un alto nivel.

  2. Paho MQTT integrado puede ser su elección para dispositivos externos.

  3. HiveMQ tiene una política de licencia de pago por uso para que pueda considerarla con cuidado. De todos modos, puede consultar esta página para obtener una lista de la nube disponible y probar los corredores MQTT disponibles.

Amit Vujic
fuente