Heutzutage nutzen viele IoT-Geräte wie Kameras, smarte Heizthermostate, Alexa und co. Clouddienste aus dem Internet, um die Steuerung aus der Ferne oder Anbindung an weitere Dienste zu ermöglichen. So auch die Lautsprecher von SONOS.
Aber wie ist das eigentlich mit der Sicherheit? Sollte durch eine Sicherheitslücke ein Angreifer auf ein Gerät kommen, hätte er den vollen Zugriff auf das gesamte Netzwerk. Die Lösung hierzu ist die Aufteilung in separate Netzwerke mit der Hilfe von VLANs. Die Grundlagen zu VLANs gehen weit über diesen Artikel hinaus und ich setze voraus, dass diese Kenntnisse vorhanden sind.
Das Setup
In diesem Fall wird eine Unifi Dream Machine Pro als Securityrouter und dahinter liegende Unifi NanoHD Accesspoints für die WLAN Anbindung genutzt. Es werden zwei Netzwerke/SSIDs ausgestrahlt:
- „HomeSecure“, VLAN-ID 5, IP-Bereich 192.168.5.0/24
für die vertrauenswürdigen Geräte wie PCs oder Handys - „HomeIoT“, VLAN-ID 107, IP-Bereich 192.168.107.0/24
für IoT Geräte mit Clouddiensten, hier insb. SONOS
Wichtiger Hinweis: In diesem Beispiel gehe ich nicht auf Firewall-Regeln ein – dies ist ein Thema für sich und werde ich im nächsten Artikel beschreiben. Ich setze somit voraus, dass die notwendigen Regeln vorhanden sind, die die Kommunikation zwischen den VLANs und zwischen dem SONOS Controller und den Lautsprechern erlauben.
Das Problem: Der SONOS Controller findet die Lautsprecher nicht, wenn er sich im anderen VLAN befindet
Öffnet man nun auf seinem Smartphone, welches sich im WLAN „HomeSecure“ befindet die SONOS Controller App, so findet diese die Boxen im „HomeIoT“ nicht. Der Grund hierfür ist, dass die Unifi Dream Machine Pro derzeit nicht in der Lage ist, Multicast Anfragen (mDNS/SSDP) zwischen VLANs weiterzuleiten – die Boxen werden schlicht nicht gefunden.
Die Lösung: Multicast-Relay via Docker auf der Dream Machine Pro installieren
Glücklicherweise gibt es eine recht einfache Lösung: ein Docker-Image für einen Multicast-Relay-Proxy für die Dream Machine Pro. Die Installation ist einfacher als erwartet (Detailerklärung folgt unterhalb):
- Verbindung via SSH mit der Dream Machine Pro aufbauen:
ssh root@192.168.5.1
- Docker Image mit dem Multicast-Relay starten:
docker run -d --restart=always --name=multicast-relay --network=host -e INTERFACES="br5 br107" -e OPTS="" scyto/multicast-relay
Was bedeuten die Parameter des Docker Commands?
-d
Daemon mode, der Docker Container läuft im Hintergrund weiter--restart-always
Container automatisch neu starten, falls er stoppt--name=multicast-relay
vergibt dem Container einen Namen--network=host
Nutzt das Netzwerkinterface der Dream Machine Pro direkt-e INTERFACES="br5 br107"
die zu verbindenden Netzwerkinterfaces
Die Dream Machine Pro legt je VLAN ein Bridge-Interface dazu an. Da wir die VLANs 5 und 107 (siehe oben) nutzen, sind hier br5 und br107 zu verwenden. Gibt man hier weitere Interfaces an, so können mehr als zwei VLANs verbunden werden.-e OPTS=""
setzt auf Standardoptionen zurück, insbesondere wird das verbose Logging zurückgesetztscyto/multicast-relay
der Name des zu verwendenden Docker Images
Fazit
Eigentlich schade, dass die Dream Machine Pro hierzu keine integrierte Funktionalität eines Multicast-Relays bietet derzeit. Die Lösung ist jedoch einfach und schnell mit nur einem Docker-Command realisierbar.
Wie die korrekten Firewall-Regeln zu gestalten sind, wird in einem Folgeartikel behandelt…