Mosquitto: Puentes
Cómo conectar servidores Mosquitto juntos (puente)
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución Mosquitto MQTT cloud lista para usar que proporciona una serie de beneficios, incluyendo:
- Intercambios y transferencias de mensajes ilimitados.
- Autenticación de dispositivos ilimitada a través de una API externa.
- ACLs avanzadas en temas, usuarios y acciones.
- Nombre de dominio personalizable asegurado con HTTPS (por ejemplo, https://mqtt.su-empresa.com).
- Actualizaciones sin esfuerzo con solo un clic.
- Rendimiento óptimo y seguridad robusta impulsados por una VM privada y dedicada.
Ahorre tiempo y simplifique su vida: ¡solo toma 5 minutos probar la solución de Mosquitto MQTT cloud hosting de Stackhero!
Conectar múltiples brokers MQTT permite un intercambio de datos fluido entre diferentes ubicaciones.
Imagine tener un servidor Mosquitto en un almacén con varios dispositivos conectados. Puede conectar este broker remoto a una instancia de Stackhero (Mosquitto MQTT) utilizando la función de "puente". Esta configuración permite que los dispositivos conectados a la instancia de Stackhero y los del almacén se comuniquen como si estuvieran conectados al mismo broker.
Para usos avanzados, puede personalizar qué temas necesitan ser compartidos. También puede añadir temas remotos a un subtema como "almacén", donde "almacén/#" capturará todos sus dispositivos remotos. Esto se logra utilizando la opción
topicenmosquitto.conf. Aunque esta guía no cubre esta configuración avanzada, puede encontrar más información en la documentación oficial de Mosquitto.
Configurar Mosquitto para conectarse a otro servidor (puente)
En este ejemplo, un servidor remoto se conectará a una instancia de Stackhero utilizando un usuario dedicado con cifrado TLS para máxima seguridad.
Primero, cree un nuevo usuario en la instancia MQTT de Stackhero. Llamémoslo bridge-1, con la contraseña secretPassword.
A continuación, en el servidor Mosquitto remoto, puede editar el archivo de configuración mosquitto.conf (generalmente ubicado en /etc/mosquitto/mosquitto.conf) añadiendo las siguientes líneas al final:
# TODO: reemplace "<XXXXXX>.stackhero-network.com" y "<PORT_TLS>" con la información de su instancia de Stackhero
connection <XXXXXX>.stackhero-network.com
address <XXXXXX>.stackhero-network.com:<PORT_TLS>
# TODO: reemplace "bridge-1" y "secretPassword" con las credenciales del usuario recién creado
remote_clientid bridge-1
remote_username bridge-1
remote_password secretPassword
start_type automatic
try_private true
# Temas a compartir, dirección y QOS.
# Note que "both" parece no funcionar por una razón desconocida.
topic # out 2
topic # in 2
# Habilitar conexión TLS para cifrar datos entre su servidor Mosquitto remoto y su instancia de Stackhero.
bridge_insecure false
bridge_capath /etc/ssl/certs
Antes de reiniciar Mosquitto con su nueva configuración, asegúrese de que los certificados TLS existan en su servidor remoto.
Verifique que el directorio /etc/ssl/certs exista y contenga archivos con el comando:
ls /etc/ssl/certs
Si existe y contiene archivos, puede simplemente reiniciar su servidor Mosquitto.
Si no existe, puede considerar ejecutar uno de estos comandos:
-
En Ubuntu/Debian, puede ejecutar:
sudo apt-get install ca-certificates -
En Alpine Linux, puede ejecutar:
apk add ca-certificates
Alternativamente, puede descargar manualmente el certificado. Para hacerlo, descargue el certificado CA a /etc/mosquitto/isrgrootx1.pem usando el siguiente comando:
wget https://letsencrypt.org/certs/isrgrootx1.pem -O /etc/mosquitto/isrgrootx1.pem
Luego, edite el archivo mosquitto.conf para reemplazar bridge_capath /etc/ssl/certs con bridge_cafile /etc/mosquitto/isrgrootx1.pem.
Finalmente, reinicie su servidor Mosquitto.
Para más información sobre la configuración de puentes, puede consultar la documentación oficial de Mosquitto.
Probar la configuración del puente Mosquitto
Mosquitto no proporciona registros extensos para verificar que su puente esté funcionando.
La mejor manera de asegurar su funcionalidad es probarlo directamente.
Puede conectarse a su servidor remoto y suscribirse al tema testBridge utilizando un usuario existente (y contraseña) declarado en el servidor remoto:
mosquitto_sub -h 127.0.0.1 -u <user> -P <password> -t "testBridge" -v
En otro terminal, puede conectarse a su instancia de Mosquitto de Stackhero utilizando un usuario existente (y contraseña) declarado en su instancia de Mosquitto de Stackhero:
mosquitto_sub -h <XXXXXX>.stackhero-network.com -p <PORT_TLS> -u <user> -P <password> -t "testBridge" -v
Abra un tercer terminal y envíe un mensaje de prueba utilizando su instancia de Stackhero (y un usuario correspondiente):
mosquitto_pub -h <XXXXXX>.stackhero-network.com -p <PORT_TLS> -u <user> -P <password> -t "testBridge" -m "Message from Stackhero broker"
Debería ver el "Message from Stackhero broker" en sus dos primeros terminales.
Finalmente, envíe un mensaje de prueba utilizando su instancia de Mosquitto remota:
mosquitto_pub -h 127.0.0.1 -u <user> -P <password> -t "testBridge" -m "Message from remote broker"
¡Felicidades! Ahora tiene sus dos servidores MQTT conectados de manera segura, con autenticación y cifrado.