Inhaltsverzeichnis

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

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