Kommunikation Subnet x - Subnet y / Xiaomi Roborock - Iobroker

Es gibt 16 Antworten in diesem Thema, welches 5.108 mal aufgerufen wurde. Der letzte Beitrag () ist von razor.

  • Servus zusammen!

    Ich bin neu hier, und möchte mich kurz vorstellen.
    Mein Name ist Johannes, bin 43 Jahre alt, meine Hobbies sind KNX Unifi, Technik die mir Lebenszeit spart! :smiling_face:

    2019 habe ich mein Netzwerk mit Unifi Komponenten aufgebaut. UDM-pro (vorher USG) US-48 Switch / US-24 Switch PoE 150W, 5 Unifi G3 Bullet Cams, 3 AP LR, 2 AP Mesh


    Alles läuft bis dato tadellos, nur hänge ich aktuell an einem Problem, welches ich im Titel schon beschrieben habe.


    Problem:

    Xiaomi Roborock S7+ -> IoT Subnet 192.168.160.x

    IOBroker -> Subnet 192.168.140.x


    Generell können vorab noch, alle VLANs untereinander miteinander reden. Blockiert wird noch nichts!


    Das Problem ist die Kommunikation vom Roborock S7 zum Iobroker. Die kommt nicht zustande.

    Das liegt daran, dass beide Systeme sich nicht im gleichen Subnet aufhalten, und auch nicht aufhalten sollen.

    Jetzt habe ich schon etwas länger gesucht, und bin auch die Lösung des IP Masqueradings gestoßen.

    Nur habe ich keinen blassen Schimmer, wie ich das bei der UDM-pro anstellen soll.

    Ich habe eine Lösung gefunden die für das USG gilt (link hier aus dem Forum), funktioniert der auch bei der UDM-Pro?

    Es würde hier eine json Datei erzeugt, die dann auf das USG kopiert wird.


    Frage:

    Kann mich jemand mal an die Hand nehmen und mir stichpunktartig beschreiben, wo ich beginnen soll und wie ich das machen kann?

    Würde eine Modifikaton per SSH bei einem doch recht häufigen Updatezyklus der UDM-Pro überschrieben werden?


    Besten Dank vorab für eure Zeit und Mühe!


    Ich hoffe ich habe die relevanten Informationen bereitgestellt, falls noch was gebraucht wird, liefere ich natürlich nach!


    Grüße .. Joe

  • Besten Dank für eure raschen Antworten!


    Netmask 255.255.255.0

    Jedes Subnet hat sein eigenes Gateway.

    FW Regeln diesbezüglich keine, auch können, wie geschrieben "vorab noch" alle miteinander reden.


    192.168.140.1 GW Subnet 1

    192.168.140.6 - 254 DHCP Bereich mit teilweise fixen IPs


    192.168.160.1 GW Subnet 1 IOT

    192.168.160.6 - 254 DHCP Bereich mit teilweise fixen IPs


    Das ist die IP vom Roborock und der Port auf dem kommuniziert wird. Freischaltung in FW nützt nichts.

    Aktuell hängt er mit Kreis vom Io Broker, soll aber in das 160er Netz.

    Ergo, wenn keine Json Dateien unterstützt werden, geht das gar nicht?

  • Abermals Danke!

    Ja ping geht in und von allen Richtungen aus!

    Das ist definitiv in der Firmware vom Roborock so verankert, dass Anfragen an diesen, die nicht im gleichen Subnet sind, blockiert bzw. nicht beantwortet werden.


    Siehe hier: Post 408

    Xiaomi / Roboroc Baustein 19001929 - KNX-User-Forum

    und hier:

    Troubleshooting — python-miio documentation


    Mein Wissen reicht aber nicht aus, mit der UDM-Pro das zu machen. Deswegen meine Frage ob es geht, und wenn ja wie.

    Mit dem Json File wie für das USG geht es nicht, aber ob es eine andere Lösung gibt konnte ich jetzt noch nichf finden.

    Wenn es keine Lösung dafür gibt, dann ist es halt so ! :smiling_face:

    Einmal editiert, zuletzt von Amokd0c ()

  • Servus!

    Also so ganz haut das nicht hin!

    Ich hab mich nach der obigen Anleitung gehalten.

    Das erstellte Script beinhaltet folgendes:


    Bash
    #!/bin/sh
    iptables -t nat -A POSTROUTING -s 192.168.140.26/24 -d 192.168.160.215/24 -p UDP -j MASQUERADE --to-ports 54321


    Wobei die .26 der IO Broker ist und die .215 der Roborock S7


    Die Datei ...sh habe ich mit WinSCP rüberkopiert.

    Das Bootscript habe ich installiert.

    Allerdings check ich nicht, wie ich die Datei/ Script ausführbar mache. Da ich über Putty "permision denied" auf dem Pfad bekomme,

    mit WinSCP allerdings schreiben und lesen kann. :upside_down_face:


    Hat das schon mal jemand gemacht und könnte mich hier anweisen?


    Besten Dank!

  • Hallo Amokd0c und "Glückwunsch" zu Deinem ersten Problem bei uns.


    Das Problem, dass Dein Roborock nicht mit anderen Subnets kommuniziert kann man auch als Feature werten, denn so ist er auch für Angreifer nicht erreichbar. Dass das aber in diesem Szenario gewünscht ist kann der Hersteller ja nicht unterscheiden.


    Zu dem Script: wenn Du dieses per WinSCP auf die UDM übertragen konntest, dann müsstest Du auch den Pfad dahin ablesen können.

    Entweder kannst Du mir einem Rechtsklick auf die Datei die Berechtigungen anpassen (r und x müssen gesetzt sein) oder Du navigierst mit PuTTY zum gewünschten Ordner und führst chmod +x DATEINAME aus. Dann kannst Du das Script mit ./DATEINAME auch mit der Hand ausführen.


    Ich meine aber, dass Du aus den beiden /24 (Netzwerk) oben ein /32 (einzelner Host) machen musst.


    Viel Erfolg und berichte gern.

  • Allerdings check ich nicht, wie ich die Datei/ Script ausführbar mache.

    Ds ist kein Script, sondern eine Befehlseingabe, daher der Berfehl "iptables" mit den entsprechenden Argumenten hintendran, siehe auch hier. Das hinter dem Befehl lauernde Programm schreibt, ändert, ergänzt, löscht dann die FW-Tabellen direkt im Kernel. Also, den Befehl samt der Argumente in der SSH-Konsole (ich nehme bei Windows immer die Powershell, so nen Kram wie Putty braucht man dann nicht) mit Rootrechten (sudo oder su) eingegeben und Enter gedrückt und schon sollte dies erledigt sein :smiling_face:.

  • razor  bic

    braucht die UDM dann noch einen Neustart? Oder nimmt die die Änderungen gleich an?

    Der IOBroker verbindet sich aktuell noch nicht.


    Ich habe eine Puttyverknüpfung gleich mit Benutzername und Kennwort angelegt.

    Damit hat er mir "permission denied" bei der Pfadeingabe zurückgegeben.

    Lösche ich das Passwort raus, fragt er freilich nach dem SSH Kennwort.

    Gebe ich das ein, geht auch der Zugriff auf den Pfad.

    Hier habe ich dann chmod +x Dateinname.sh eingetragen. Gemeckert hat er jedenfalls nicht.


    Wenn das eine IP Maskierung ist, welche IP bekommt dann der Roborock aus dem anderen Kreis?


    abermals Danke!

  • Wenn das eine IP Maskierung ist, welche IP bekommt dann der Roborock aus dem anderen Kreis?

    Nein, es funktioniert genau andersrum:

    Dein Client kommt Deinem Beispiel aus RE: Kommunikation Subnet x - Subnet y / Xiaomi Roborock - Iobroker folgend mit der IP 192.168.140.26, um dann auf 192.168.160.215:54321 zuzugreifen. Nun soll aber die UDM dafür sorgen, dass es für den Roborock so aussieht, als wenn der Zugriff von einem Client aus seinem LAN (meist 192.168.160.1) kommt und nicht von 192.168.140.26. Dafür (Maskierung des Zugriffs) scheint mir in dem Script oben auch noch etwas zu fehlen. :thinking_face:

  • Wenn das eine IP Maskierung ist, welche IP bekommt dann der Roborock aus dem anderen Kreis?

    Gar keine, IPs kann ein Host nur bekommen, wenn er (neben der händischen Vergabe) per Broadcast einen DHCP-Server sucht, einen findet und dieser ihm dann eine IP schenkt :grinning_squinting_face: Das leistet aber "iptables" nicht, denn dies ist lediglich ein Werkzeug, die im Linux-Kernel integrierten FW-Regeln zu bearbeiten (Du hast meinen Link nicht gelesen :frowning_face:). N.m.E. legt o.a. Befehls-String lediglich eine NAT-Weiterleitungsregel (Umschreibung) an, welche Anfragen (von woher auch immer) an die 192.168.140.26 auf die 192.168.160.215 und hier dann auf Port 54321 "umleitet". Damit dies auch funktioniert, muss Deine Kiste auch auf die 192.168.160.215 und den Port 54321 hören und die Anfragen statt an diesen, an die 192.168.140.26 gestellt werden. Ob dies so Sinn macht Außerdem solltest du noch einmal an Hand meines obigen Links den Syntax des Befehlsstrings prüfen.

  • razor  bic ... die Schei.... geht! :grinning_squinting_face: .. yeah! danke euch!!!!

    Man war das ne schwierige Geburt, aber ist ja jetzt für die Nachwelt auch festgehalten.


    Ich habe lediglich die /24 durch die /32 ersetzt und einen Neustart gemacht! Sonst musste nichts gemacht werden.

    Bash
    #!/bin/sh
    iptables -t nat -A POSTROUTING -s IPAdresseIOBroker/32 -d IPAdresseRoborock/32 -p UDP -j MASQUERADE --to-ports 54321

    Durch das Bootscript gehe ich davon aus, dass es bei jedem Reboot wieder eintragen wird, korrekt?


    Besten Dank nochmal!


    bic ja tut mir Leid. Ich hole das definitiv nach! Versprochen!


    edit: ach gott ist das viel! heute noch? :face_with_tongue:

    Einmal editiert, zuletzt von razor () aus folgendem Grund: Ein Beitrag von Amokd0c mit diesem Beitrag zusammengefügt.

  • Eine 32er Netzwerkmaske? Da gibt nur eine einzige IP-Adresse - für alles. Aber wenns geht :smiling_face:

    Ja, denn Du willst / musst ja nur einen Host adressieren, daher 32er Sub"netz"-Maske - ist ja iwie kein Netz, sondern eben nur ein Host. :grinning_squinting_face: