Home Assistant OS mit mehreren VLANs verbinden

Mein Netzwerk habe ich in unterschiedliche Zonen geteilt, in denen jeweils unterschiedliche Geräte betrieben werden. Beispielsweise habe ich alle IoT Geräte in einem eigenen Netzwerksegment und auch die unterschiedlichen Media-Player sind in einem separaten Bereich. Der Datenverkehr zwischen den unterschiedlichen Netzwerkzonen wird dabei durch eine Firewall kontrolliert. Da die Home Assistant Installation im IoT-Netzwerk eingebunden ist und zwischen Medien-und IoT-Netzwerk gerouted wird, können einige Dienste nicht mehr so ohne weiteres genutzt werden. Das Simple Service Discovery Protocol (SSDP), das zur Suche nach UPnP Geräten im Netzwerk verwendet wird, wird in der Regel nicht gerouted, weil eine TTL von 1 verwendet wird. Somit verwirft der Router die SSDP-Pakete, auch wenn der Datenverkehr an der Firewall explizit freigegeben wird.

1| Vorüberlegung

Um das Problem zu lösen, gibt es zwei unterschiedliche Lösungsansätze:

  1. Wenn der Router es unterstützt, kann er so konfiguriert werden, dass Multicast Pakete auch gerouted werden (siehe [02]). 
  2. Home Assistant OS wird so konfiguriert, dass es sowohl mit dem IoT-Netzwerk als auch mit dem Media-LAN verbunden wird (Dual-Homed-Host).

Die erste Option (Multicast-Routing) erordert etwas mehr Aufwand bei der Konfiguration, bietet aber dafür den Vorteil, das SSDP und UPnP ggf auch über VPN bereitgestellt werden kann. Allerdings kann das Routing von Multicast-Diensten schnell zu einem erhöhten Datentransfer im Netzwerk führen - vor allem wenn die Multicast-Routen nicht korrekt gesetzt werden.

Die zweite Alternative ist dabei etwas leichter einzurichten, hat aber den nachteil, dass Home Assistant OS ggf. dazu genutzt werden kann, um die Firewall zu umgehen. Dafür können die Informationen zu Geräten aus Netzwerksegmenten bei dieser Lösung eben nicht per UPnP abgerufen werden. Dadurch werden dann natürlich wiederum auch weniger Informationen im Netzwerk bekannt gegeben. Letztendlich habe ich mich für die zweite Variante entschieden; vor allem weil ich aktuell kein SSDP/UPnP für Geräte im VPN bereitstellen möchte.

2| VLANs am Switch Port bereitstellen

Wenn Home Assistant OS eingerichtet wird, so wird in der Regel auch schon die Ethernet-Karte eingerichtet. In meinem Beispiel ist eth0 also schon mit meinem IoT-Netzwerk verbunden.

Hinweis: Grundsätzlich kann auch über SSH auf das Home Assistant OS zugegriffen werden. Allerdings sollte bei Änderungen an der Netzwerkkonfiguration eher die lokale Konsole verwendet werden. Sollte bei einer Fehlkonfiguration das NEtzwerk nicht mehr funktionieren, so kann über die lokale Konsole wenigsten noch die Wiederherstellung versucht werden. 

Das kann in der Console überprüft werden. Dazu als Benutzer root anmelden und an der Eingabeaufforderung login eingeben. Danach kann mit nmcli dev show überprüft werden welche Netzwerkkarten bereits konfiguriert sind. Mit ip addr show eth0  wird ermittelt, welche IP-Adressen dort Konfiguriert wurden, und ob da Interface bereits im richtigen Netz ist.

Ermittlung der Netzwerkkonfiguration in HassOS

Grundsätzlicih kann natürlich auch das WLAN-Interface oder eine zweite Netzwerkkarte genutzt werden um es mit einem anderen Netzwerk-Segment zu verbinden. Werden aber Managed Switches und VLANs eingesetzt, so kann auch ein zusätzliches logisches Interface erzeugt werden (siehe z. B. [03]). Dann muss auch kein neues Kabel gelegt werden. 

Falls das Standard-Interface eth0 bereits im richtigen Netzwerk ist, muss zunächst der Netzwerk-Port, an dem das Home Assistant OS angeschlossen ist, umkonfiguriert werden. In der Port-Konfiguration muss das VLAN, mit dem Home Assistant zusätzlich verbunden werden soll, als Tagged VLAN in der Konfiguration hinzugefügt werden. Das aktuell verwendete VLAN sollte als Untagged VLAN (oder Default VLAN) für den Port konfiguriert werden. In der Unifi Management-Software kann dazu beispielsweise unter Settings > Profiles > Switch Ports ein neues Switch Port Profil angelegt und dem entsprechenden Switch-Port zugeordnet werden:

Anlegen eines Switch Port Profils in Unifi Management

3| Logisches Interface erstellen

Ist das erledigt, wird in der Home Assistant OS Konsole mit folgendem Kommando ein neues logisches Interface angelegt werden:

nmcli con add type vlan con-name eth0@vlan<ID> dev eth0 id <ID>

Hinweis: <ID> muss dabei natürlich durch die entsprechende numerische VLAN-ID ersetzt werden.

Erstellung des virtuellen Interfaces in HassOS

Wenn alles geklappt hat, dann sollte jetzt schon ein entsprechendes Interface angelegt worden sein, dass bereits im gewünschten Netzwerksegment ist. Das kann mit ip addr show eth0.<VLAN-ID> verifiziert werden:

Logisches Interface

Nach einem Reboot sollten die Einstellungen erhalten bleiben und das Home Assistant im Anschluss auch direkt auf das neue Netzwerksegment zugreifen können.

Quellen

[01] https://de.wikipedia.org/wiki/Simple_Service_Discovery_Protocol
[02] https://forum.openwrt.org/t/ssdp-multicast-routing-over-vpn-connection/18648/10 
[03] https://community.home-assistant.io/t/hassos-with-multiple-network-cards/170081/7 
[04] https://community.home-assistant.io/t/setup-vlan-and-ha-tutorial/87705/6 
[05] https://www.home-assistant.io/ 

Kommentare

PostadresseE-MailadresseFestnetzMobiltelefonSMS/SignalThreemaTwitter DirektnachrichtFAXWeb Page