BlueEclipse
New member
Hallo zusammen.
Ich habe bei mir aktuelle folgende Situation:
Home Assistant läuft auf dem Server in Netzwerk B, und dieser Server ist mit einem OpenVPN Layer-2-Tunnel mit dem Router in Netzwerk A verbunden. Auf dem Router in Netzwerk A wird das tap0-Interface (das Interface, das von OpenVPN für die Verbindung genutzt wird) mit dem LAN- und WLAN-Interface (wlo1 und eth1-4) gebridget.
Jeglicher Multicast-Verkehr aus meinem Heimnetz wird also automatisch durch den VPN-Tunnel zum Server geleitet.
Auf dem Server laufen verschiedene Dienste, unter anderem Home Assistant.
Home Assistant verwendet auch Multicast (z. B. mDNS), um Geräte automatisch zu finden.
Home Assistant sendet jedoch wahrscheinlich seine gesamten Multicast-Anfragen an enp0s6 (und damit in ein Netzwerk, in dem niemand außer dem Server und dem Router ist).
Ich habe das Ganze zwar noch nicht mit WireGuard überprüft (ich weiß aktuell auch nicht, wie, da ich nicht weiß, wie ich Home Assistant dazu bringe, nach Geräten zu suchen), aber ich vermute es anhand dieser Einstellungen, die für die Integrationen gelten:
Was möchte ich erreichen?
Ich möchte Home Assistant dazu bringen, alle seine Multicast-Anfragen an tap0 zu senden und damit an Netzwerk A weiterzuleiten.
Bisher habe ich es bereits mit
Probiert und nach einem Neustart von Home Assistant wurden tatsächlich einige Geräte gefunden.
Das Einzige, was nicht funktioniert, ist die Shelly-Integration. Diese findet a) Shelly 1 Gen nicht automatisch und b) selbst wenn ich ihm die IP-Adresse gebe, bekomme ich nur die Meldung, dass die Verbindung fehlgeschlagen ist (Wireshark zeigt mir aber, dass auf jeden Fall Verkehr zwischen Home Assistant und Shelly stattfindet, sobald ich den „Hinzufügen“-Button tippe).
Ich habe im Home Assistant Community Forum gelesen, dass bei Shelly oft mDNS das Problem ist (was eigentlich wenig Sinn macht, weil mDNS zur automatischen Erkennung (Multicast) genutzt wird und ich Home Assistant die IP von Shelly gebe, also Unicast).
Es geht mir aber weniger um das Shelly-Problem (das löst sich vielleicht ja durch die Effizienzsteigerung von selbst), sondern eher darum, ob es eventuell eine effizientere Lösung als meine gibt.
Derzeit ist es ja so, dass ich quasi mit einer Route den gesamten Multicast-Traffic an tap0 umleite.
Das Ganze ist natürlich ein wenig ineffizient, da ich auch Multicast-Traffic umleite, der beispielsweise bewusst an andere Interfaces geht (obwohl es außer dem Server und dem Router in Netzwerk B keine weiteren Geräte gibt, also besonders viel Multicast-Traffic für Netzwerk B wird dort nicht stattfinden).
Eventuell ist es ja möglich, Home Assistant dazu zu bringen, selbstständig seinen Multicast-Verkehr an tap0 zu senden.
Oben im Bild (Bild 2) sieht man die Seite, wo man in Home Assistant einen Adapter für Multicast-Verkehr (zumindest für Integrationen) festlegen kann. Aber wenn ich dort den Haken rausnehme, kann ich leider nur das Interface enp0s6 auswählen. Ich schätze mal, Home Assistant listet dort nur physische Netzwerkinterfaces auf, und tap0 ist virtuell.
Wenn ich es also hinkriege, tap0 als physisches Interface darzustellen, wird es dort eventuell angezeigt.
Eine andere Möglichkeit wäre vielleicht, nur den Multicast-Traffic von der Home Assistant IP-Adresse (ja, was ist die überhaupt? Home Assistant Supervisor läuft in seinem eigenen Docker-Bridge-Netzwerk, kennt aber wahrscheinlich wegen des Supervisors die verbundenen Netzwerkinterfaces) nach tap0 weiterzuleiten.
Was habt ihr für Ideen/was haltet ihr von meinen Ideen?
Ich habe bei mir aktuelle folgende Situation:
Home Assistant läuft auf dem Server in Netzwerk B, und dieser Server ist mit einem OpenVPN Layer-2-Tunnel mit dem Router in Netzwerk A verbunden. Auf dem Router in Netzwerk A wird das tap0-Interface (das Interface, das von OpenVPN für die Verbindung genutzt wird) mit dem LAN- und WLAN-Interface (wlo1 und eth1-4) gebridget.
Jeglicher Multicast-Verkehr aus meinem Heimnetz wird also automatisch durch den VPN-Tunnel zum Server geleitet.
Auf dem Server laufen verschiedene Dienste, unter anderem Home Assistant.
Home Assistant verwendet auch Multicast (z. B. mDNS), um Geräte automatisch zu finden.
Home Assistant sendet jedoch wahrscheinlich seine gesamten Multicast-Anfragen an enp0s6 (und damit in ein Netzwerk, in dem niemand außer dem Server und dem Router ist).
Ich habe das Ganze zwar noch nicht mit WireGuard überprüft (ich weiß aktuell auch nicht, wie, da ich nicht weiß, wie ich Home Assistant dazu bringe, nach Geräten zu suchen), aber ich vermute es anhand dieser Einstellungen, die für die Integrationen gelten:
Was möchte ich erreichen?
Ich möchte Home Assistant dazu bringen, alle seine Multicast-Anfragen an tap0 zu senden und damit an Netzwerk A weiterzuleiten.
Bisher habe ich es bereits mit
Code:
sudo ip route add 224.0.0.0/4 dev tap0
Probiert und nach einem Neustart von Home Assistant wurden tatsächlich einige Geräte gefunden.
Das Einzige, was nicht funktioniert, ist die Shelly-Integration. Diese findet a) Shelly 1 Gen nicht automatisch und b) selbst wenn ich ihm die IP-Adresse gebe, bekomme ich nur die Meldung, dass die Verbindung fehlgeschlagen ist (Wireshark zeigt mir aber, dass auf jeden Fall Verkehr zwischen Home Assistant und Shelly stattfindet, sobald ich den „Hinzufügen“-Button tippe).
Ich habe im Home Assistant Community Forum gelesen, dass bei Shelly oft mDNS das Problem ist (was eigentlich wenig Sinn macht, weil mDNS zur automatischen Erkennung (Multicast) genutzt wird und ich Home Assistant die IP von Shelly gebe, also Unicast).
Es geht mir aber weniger um das Shelly-Problem (das löst sich vielleicht ja durch die Effizienzsteigerung von selbst), sondern eher darum, ob es eventuell eine effizientere Lösung als meine gibt.
Derzeit ist es ja so, dass ich quasi mit einer Route den gesamten Multicast-Traffic an tap0 umleite.
Das Ganze ist natürlich ein wenig ineffizient, da ich auch Multicast-Traffic umleite, der beispielsweise bewusst an andere Interfaces geht (obwohl es außer dem Server und dem Router in Netzwerk B keine weiteren Geräte gibt, also besonders viel Multicast-Traffic für Netzwerk B wird dort nicht stattfinden).
Eventuell ist es ja möglich, Home Assistant dazu zu bringen, selbstständig seinen Multicast-Verkehr an tap0 zu senden.
Oben im Bild (Bild 2) sieht man die Seite, wo man in Home Assistant einen Adapter für Multicast-Verkehr (zumindest für Integrationen) festlegen kann. Aber wenn ich dort den Haken rausnehme, kann ich leider nur das Interface enp0s6 auswählen. Ich schätze mal, Home Assistant listet dort nur physische Netzwerkinterfaces auf, und tap0 ist virtuell.
Wenn ich es also hinkriege, tap0 als physisches Interface darzustellen, wird es dort eventuell angezeigt.
Eine andere Möglichkeit wäre vielleicht, nur den Multicast-Traffic von der Home Assistant IP-Adresse (ja, was ist die überhaupt? Home Assistant Supervisor läuft in seinem eigenen Docker-Bridge-Netzwerk, kennt aber wahrscheinlich wegen des Supervisors die verbundenen Netzwerkinterfaces) nach tap0 weiterzuleiten.
Was habt ihr für Ideen/was haltet ihr von meinen Ideen?