Mosquitto: Ponti
Come connettere insieme i server Mosquitto (bridge)
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Mosquitto MQTT cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Scambi e trasferimenti illimitati di messaggi.
- Autenticazione illimitata dei dispositivi tramite un'API esterna.
- ACL avanzate su argomenti, utenti e azioni.
- Nome di dominio personalizzabile sicuro con HTTPS (ad esempio, https://mqtt.your-company.com).
- Aggiornamenti semplificati con un solo clic.
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
Risparmiate tempo e semplificate la vostra vita: bastano 5 minuti per provare la soluzione Mosquitto MQTT cloud hosting di Stackhero!
Collegare più broker MQTT consente uno scambio di dati senza soluzione di continuità tra diverse sedi.
Immaginate di avere un server Mosquitto in un magazzino con diversi dispositivi connessi. È possibile collegare questo broker remoto a un'istanza Stackhero (Mosquitto MQTT) utilizzando la funzionalità "bridge". Questa configurazione consente ai dispositivi collegati all'istanza Stackhero e a quelli nel magazzino di comunicare come se fossero connessi allo stesso broker.
Per usi avanzati, è possibile personalizzare i topic da condividere. È anche possibile aggiungere topic remoti a un sotto-topic come "warehouse", dove "warehouse/#" catturerà tutti i dispositivi remoti. Questo si ottiene utilizzando l'opzione
topicinmosquitto.conf. Anche se questa guida non copre questa configurazione avanzata, è possibile trovare ulteriori informazioni nella documentazione ufficiale di Mosquitto.
Configurare Mosquitto per connettersi a un altro server (bridge)
In questo esempio, un server remoto si connetterà a un'istanza Stackhero utilizzando un utente dedicato con crittografia TLS per la massima sicurezza.
Per prima cosa, create un nuovo utente sull'istanza MQTT Stackhero. Chiamiamolo bridge-1, con la password secretPassword.
Successivamente, sul server Mosquitto remoto, è possibile modificare il file di configurazione mosquitto.conf (di solito situato in /etc/mosquitto/mosquitto.conf) aggiungendo le seguenti righe alla fine:
# TODO: sostituire "<XXXXXX>.stackhero-network.com" e "<PORT_TLS>" con le informazioni della vostra istanza Stackhero
connection <XXXXXX>.stackhero-network.com
address <XXXXXX>.stackhero-network.com:<PORT_TLS>
# TODO: sostituire "bridge-1" e "secretPassword" con le credenziali del nuovo utente creato
remote_clientid bridge-1
remote_username bridge-1
remote_password secretPassword
start_type automatic
try_private true
# Topic da condividere, direzione e QOS.
# Nota che "both" sembra non funzionare per una ragione sconosciuta.
topic # out 2
topic # in 2
# Abilitare la connessione TLS per crittografare i dati tra il server Mosquitto remoto e l'istanza Stackhero.
bridge_insecure false
bridge_capath /etc/ssl/certs
Prima di riavviare Mosquitto con la sua nuova configurazione, assicurarsi che i certificati TLS esistano sul server remoto.
Verificare che la directory /etc/ssl/certs esista e contenga file con il comando:
ls /etc/ssl/certs
Se esiste e contiene file, è possibile semplicemente riavviare il server Mosquitto.
Se non esiste, si potrebbe considerare di eseguire uno di questi comandi:
-
Su Ubuntu/Debian, è possibile eseguire:
sudo apt-get install ca-certificates -
Su Alpine Linux, si potrebbe eseguire:
apk add ca-certificates
In alternativa, è possibile scaricare manualmente il certificato. Per fare ciò, scaricare il certificato CA in /etc/mosquitto/isrgrootx1.pem utilizzando il seguente comando:
wget https://letsencrypt.org/certs/isrgrootx1.pem -O /etc/mosquitto/isrgrootx1.pem
Quindi, modificare il file mosquitto.conf per sostituire bridge_capath /etc/ssl/certs con bridge_cafile /etc/mosquitto/isrgrootx1.pem.
Infine, riavviare il server Mosquitto.
Per ulteriori informazioni sulla configurazione del bridge, è possibile consultare la documentazione ufficiale di Mosquitto.
Testare la configurazione del bridge Mosquitto
Mosquitto non fornisce log estesi per verificare che il bridge funzioni.
Il modo migliore per assicurarsi del suo funzionamento è testarlo direttamente.
È possibile connettersi al server remoto e iscriversi al topic testBridge utilizzando un utente esistente (e password) dichiarato sul server remoto:
mosquitto_sub -h 127.0.0.1 -u <user> -P <password> -t "testBridge" -v
In un altro terminale, è possibile connettersi alla propria istanza Mosquitto Stackhero utilizzando un utente esistente (e password) dichiarato sulla propria istanza Mosquitto Stackhero:
mosquitto_sub -h <XXXXXX>.stackhero-network.com -p <PORT_TLS> -u <user> -P <password> -t "testBridge" -v
Aprire un terzo terminale e inviare un messaggio di test utilizzando la propria istanza Stackhero (e un utente corrispondente):
mosquitto_pub -h <XXXXXX>.stackhero-network.com -p <PORT_TLS> -u <user> -P <password> -t "testBridge" -m "Message from Stackhero broker"
Dovreste vedere il "Message from Stackhero broker" sui vostri primi due terminali.
Infine, inviare un messaggio di test utilizzando la propria istanza Mosquitto remota:
mosquitto_pub -h 127.0.0.1 -u <user> -P <password> -t "testBridge" -m "Message from remote broker"
Congratulazioni! Ora avete i vostri due server MQTT connessi in modo sicuro, con autenticazione e crittografia!