Mosquitto: Bruggen
Hoe Mosquitto-servers met elkaar te verbinden (brug)
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een kant-en-klare Mosquitto MQTT cloud oplossing die tal van voordelen biedt, waaronder:
- Onbeperkte uitwisseling en overdracht van berichten.
- Onbeperkte apparaatverificatie via een externe API.
- Geavanceerde ACL's op onderwerpen, gebruikers en acties.
- Aanpasbare domeinnaam beveiligd met HTTPS (bijvoorbeeld, https://mqtt.uw-bedrijf.com).
- Moeiteloze updates met slechts één klik.
- Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.
Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Mosquitto MQTT cloud hosting oplossing van Stackhero te proberen!
Het verbinden van meerdere MQTT-brokers maakt naadloze gegevensuitwisseling tussen verschillende locaties mogelijk.
Stel je een Mosquitto-server voor in een magazijn met verschillende aangesloten apparaten. U kunt deze externe broker verbinden met een Stackhero-instantie (Mosquitto MQTT) met behulp van de "bridge"-functie. Deze configuratie stelt apparaten die zijn verbonden met de Stackhero-instantie en die in het magazijn in staat om te communiceren alsof ze met dezelfde broker zijn verbonden.
Voor geavanceerd gebruik kunt u aanpassen welke topics moeten worden gedeeld. U kunt ook externe topics toevoegen aan een subtopic zoals "warehouse", waar "warehouse/#" al uw externe apparaten opvangt. Dit wordt bereikt met behulp van de
topic-optie inmosquitto.conf. Hoewel deze handleiding deze geavanceerde configuratie niet behandelt, kunt u meer informatie vinden in de officiële Mosquitto-documentatie.
Mosquitto configureren om verbinding te maken met een andere server (brug)
In dit voorbeeld zal een externe server verbinding maken met een Stackhero-instantie met behulp van een speciale gebruiker met TLS-versleuteling voor maximale beveiliging.
Maak eerst een nieuwe gebruiker aan op de Stackhero MQTT-instantie. Laten we deze bridge-1 noemen, met het wachtwoord secretPassword.
Vervolgens kunt u op de externe Mosquitto-server het configuratiebestand mosquitto.conf bewerken (meestal te vinden op /etc/mosquitto/mosquitto.conf) door de volgende regels aan het einde toe te voegen:
# TODO: vervang "<XXXXXX>.stackhero-network.com" en "<PORT_TLS>" door uw Stackhero-instantiegegevens
connection <XXXXXX>.stackhero-network.com
address <XXXXXX>.stackhero-network.com:<PORT_TLS>
# TODO: vervang "bridge-1" en "secretPassword" door de inloggegevens van de nieuw aangemaakte gebruiker
remote_clientid bridge-1
remote_username bridge-1
remote_password secretPassword
start_type automatic
try_private true
# Topics om te delen, richting en QOS.
# Merk op dat "both" om een onbekende reden niet lijkt te werken.
topic # out 2
topic # in 2
# Schakel TLS-verbinding in om gegevens tussen uw externe Mosquitto-server en uw Stackhero-instantie te versleutelen.
bridge_insecure false
bridge_capath /etc/ssl/certs
Voordat u Mosquitto opnieuw start met de nieuwe configuratie, moet u ervoor zorgen dat TLS-certificaten op uw externe server aanwezig zijn.
Controleer of de directory /etc/ssl/certs bestaat en bestanden bevat met het commando:
ls /etc/ssl/certs
Als het bestaat en bestanden bevat, kunt u eenvoudig uw Mosquitto-server opnieuw starten.
Als het niet bestaat, kunt u overwegen een van deze commando's uit te voeren:
-
Op Ubuntu/Debian kunt u uitvoeren:
sudo apt-get install ca-certificates -
Op Alpine Linux kunt u uitvoeren:
apk add ca-certificates
Als alternatief kunt u het certificaat handmatig downloaden. Download hiervoor het CA-certificaat naar /etc/mosquitto/isrgrootx1.pem met het volgende commando:
wget https://letsencrypt.org/certs/isrgrootx1.pem -O /etc/mosquitto/isrgrootx1.pem
Bewerk vervolgens het mosquitto.conf-bestand om bridge_capath /etc/ssl/certs te vervangen door bridge_cafile /etc/mosquitto/isrgrootx1.pem.
Start ten slotte uw Mosquitto-server opnieuw.
Voor meer informatie over bridge-configuratie kunt u de officiële Mosquitto-documentatie raadplegen.
De Mosquitto-bridgeconfiguratie testen
Mosquitto biedt geen uitgebreide logs om te verifiëren dat uw bridge werkt.
De beste manier om de functionaliteit te garanderen, is door deze direct te testen.
U kunt verbinding maken met uw externe server en zich abonneren op het testBridge-topic met een bestaande gebruiker (en wachtwoord) die op de externe server is gedeclareerd:
mosquitto_sub -h 127.0.0.1 -u <user> -P <password> -t "testBridge" -v
In een andere terminal kunt u verbinding maken met uw Stackhero Mosquitto-instantie met een bestaande gebruiker (en wachtwoord) die op uw Stackhero Mosquitto-instantie is gedeclareerd:
mosquitto_sub -h <XXXXXX>.stackhero-network.com -p <PORT_TLS> -u <user> -P <password> -t "testBridge" -v
Open een derde terminal en stuur een testbericht met uw Stackhero-instantie (en een overeenkomstige gebruiker):
mosquitto_pub -h <XXXXXX>.stackhero-network.com -p <PORT_TLS> -u <user> -P <password> -t "testBridge" -m "Message from Stackhero broker"
U zou het "Message from Stackhero broker" op uw eerste twee terminals moeten zien.
Stuur ten slotte een testbericht met uw externe Mosquitto-instantie:
mosquitto_pub -h 127.0.0.1 -u <user> -P <password> -t "testBridge" -m "Message from remote broker"
Gefeliciteerd! U heeft nu uw twee MQTT-servers veilig verbonden, met authenticatie en versleuteling!