Inhaltsverzeichnis

MQTT-Bridge zwischen Relais-Hütte & Zentrale (via WireGuard)

diese Beschreibung bezieht sich auf die Sensoren und Relais welche über den OpenHub Raspi laufen. Der OpenHub ist ein MQTT Broker. Mit den folgenden Einstellungen werden die Werte dort ausgelesen und auf der Webseite angezeigt.

Ziel dieser Maßnahmen:

wir benutzen den bestehenden wireguard Tunnel von pi-star um die MQTT Daten (früher openhab) für den DB0SL Webserver zugänglich zu machen. Dazu wird der Traffic auf Port: 1883 durch den Tunnel geleitet. Der pi-star Raspi fungiert dazu als Gateway

Netzwerkübersicht

Gerät / Rolle IP-Adresse Beschreibung
MQTT Broker (Quelle) 192.168.144.21 Läuft auf OpenHAB-Raspi in Hütte
WG-Gateway (Raspi) 192.168.144.44 / 10.13.0.2 Raspi mit WireGuard Tunnel
Zentrale MQTT-Broker 192.168.10.88 Lokaler MQTT-Zielserver
Zentrale WG-IP 10.13.0.1 PC im VPN-Netz

Ziel

Der zentrale MQTT-Server (192.168.10.88) oder ein Client im 10.13.0.0/24-Netz soll über 10.13.0.2 auf den entfernten MQTT-Broker 192.168.144.21 zugreifen können. Die Verbindung erfolgt via NAT-Weiterleitung über den WireGuard-Tunnel.

Konfiguration auf dem Gateway (Raspi 10.13.0.2)

WireGuard-Interface

Verwendetes Interface: wg0 (Verifiziert mit `ip route get 10.13.0.1`)

iptables NAT-Regeln

# PREROUTING: Weiterleitung eingehender MQTT-Verbindungen
sudo iptables -t nat -A PREROUTING -i wg0 -p tcp --dport 1883 -j DNAT --to-destination 192.168.144.21:1883
 
# POSTROUTING: Maskieren der Antwortpakete
sudo iptables -t nat -A POSTROUTING -s 10.13.0.0/24 -d 192.168.144.0/24 -o eth0 -j MASQUERADE

IP Forwarding aktivieren

# Temporär aktivieren
sudo sysctl -w net.ipv4.ip_forward=1
 
# Dauerhaft in /etc/sysctl.conf
net.ipv4.ip_forward=1
 
# Aktivieren
sudo sysctl -p

iptables dauerhaft speichern

sudo apt install iptables-persistent
sudo netfilter-persistent save

MQTT-Broker-Konfiguration (192.168.144.21)

Datei: `/etc/mosquitto/mosquitto.conf`

pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log

listener 1883 0.0.0.0

Hinweis: Keine doppelten Listener in conf.d!

Tests

Verbindung prüfen

telnet 10.13.0.2 1883

MQTT-Daten empfangen

mosquitto_sub -h 10.13.0.2 -t "#" -v

Fallstricke & Lösungen

Problem Lösung
iptables-Regel auf falschem Interface korrekter Interface war wg0
iptables-Regeln greifen nicht (0 pkts) IP-Forwarding war deaktiviert
mosquitto lauschte nur lokal listener 1883 0.0.0.0 in mosquitto.conf
Mosquitto-Startfehler durch Duplikate nur einen Listener definieren

Status am Ende