Mosquitto: Ponti
Come connettere insieme i server Mosquitto (bridge)
👋 Benvenuto nella documentazione di Stackhero!
Stackhero offre un ambiente Mosquitto MQTT cloud completamente gestito, progettato per garantire affidabilità e flessibilità:
- Throughput illimitato per i messaggi e trasferimenti di dati, così i tuoi workflow non incontreranno mai limiti artificiali.
- Autenticazione illimitata dei dispositivi tramite la tua API esterna, per un onboarding e una gestione degli accessi senza interruzioni.
- ACL avanzate per un controllo dettagliato su topic, utenti e azioni.
- Un nome di dominio personalizzato con HTTPS integrato per endpoint sicuri e brandizzati (ad esempio: https://mqtt.tua-azienda.com).
- Aggiornamenti senza complicazioni: applica miglioramenti o patch di sicurezza con un solo clic.
- Performance costante e sicurezza elevata, con ogni istanza eseguita su un'infrastruttura privata e dedicata.
Accelera i tuoi progetti IoT e riduci il carico operativo. Puoi avere un'istanza Mosquitto MQTT cloud hosting sicura e pronta per la produzione in pochi minuti.
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!