Domänenzuordnung anhand Koordinaten?


#1

Hallo zusammen,

in der kommenden Zeit darf ich > 100 Freifunk-Knoten in etwa der Hälfte der Münsterland-FF-Domänen aufstellen.
Beim initialen Flashen weiß ich aber den Aufstellort des Knotens noch nicht.
Ich würde den Knoten nach der Installation gerne per SSH-Kommando anhand der dann eingestellten Koordinaten automatisiert in die richtige Domäne schubsen. Wie bekomme ich das hin?
Bei Domänensplits passiert das ja m.W. schon automatisiert. Also müsste es doch irgendwo schon etwas Fertiges geben.
Den manuellen Weg mit wget und sysupgrade kenne ich. Bei der Stückzahl würde ich das aber schon gerne automatisieren…
Hat da jemand einen Tipp für mich?


#2

Erzählst Du uns, warum Du mehr als 100 Router in der nächsten Zeit aufstellst. Scheint ja ein interessantes Projekt zu sein. Vielleicht können wir auch lernen wie man so viele Standorte “bekommt”. :wink:


#3

Du könntest Ansible benutzen, etwas anderes fällt mir spontan nicht ein. Das wäre dann aber halbautomatisch, die richtige Domäne müsstest du selbst übergeben.


#4

Wir haben ein Script das anhand der Kartendaten und Polygonen sagt in welche Domäne ein Knoten muss. Das spuckt aber “nur” die IPv6 Adressen der Knoten aus und auch immer nur für eine Domäne.

Ein umziehen von einzelnen Knoten in eine andere Domäne ist nicht so das große Problem. Ein Mesh aus mehreren verschachteln Knoten hingegen ist automatisch schon schwieriger erst recht wenn diese auch noch über Kabel Meshen da das zu Brücken zwischen zwei Domänen führen kann.

Eine wirklich einfache automatische Lösung wird wohl schwer werden…


#5

Vielen Dank für Euer Feedback!
Also…:

Mein Arbeitgeber hat sich entschlossen, alle ~80 mit Mitarbeiter besetzten Stellen “komplett” zu versorgen. Allerdings müssen wir an den meisten Standorten erstmal einen Internetzugang schalten lassen. :wink:

Obwohl ich mich seit Jahren mit der Administration von Servern und Netzwerkkomponenten beschäftige, kannte ich Ansible noch nicht. Dazu musste ich mit erst einmal einen Überblick verschaffen. Das ist ein wirklich interessantes Tool, ich sehe mir das mal an. Allerdings wird mir das beim Umhängen der Router in die richtigen Domänen vermutlich nicht so viel Arbeit sparen, da ich die Router i.d.R. dafür ja doch einzeln ansprechen muss.

Da sprichst Du ein spannendes Thema an. Meshen die Knoten eigentlich weiter per Mesh on WAN, wenn sie sich während der Umstellung in verschiedenen Domänen befinden? Oder kann ich mir so erfolgreich am eigenen Ast sägen und meine Knoten abhängen?
Brücken zwischen zwei Domänen sind bestimmt nicht so fein. Was passiert dann? Aus dem Bauch heraus würde ich vermuten, das sich die Broadcasts in den Domänen dann entsprechend addieren. Das macht das Ganze natürlich nicht schneller. Oder ist damit zu rechnen, das dann beide Domänen auf dem Bauch liegen?

Ich denke, es läuft auf ein Shellscript hinaus, das mit den Parametern MAC bzw. IP und DomänenNr. auf den jeweiligen Knoten zugreift und diesen umstellt.


#6

Tun sie… Mesh on WAN würde ich dir im übrigen nur empfehlen wenn das WAN ein eigenes Netz ist das sonst für nichts anderes genutzt wird da unser Batman Routing Protocoll dir sonst das WAN Netz mit Paketen zumüllt mit dem ein “Normales” Gerät nichts anfangen kann. Wenn Mesh über Kabel dann am besten Mesh on LAN und / oder das in einem eigenen VLAN.

Kurz gesagt Ja :slight_smile: wenn sie über WLAN Meshen auf jeden Fall da sich Knoten verschiedener Domänen nicht miteinander verbinden.

Dein Bauchgefühl ist da schon gar nicht so schlecht. Da Brücken meist nur von Kurzer dauer sind, passiert meistens nicht viel. Direkt auf dem Bauch liegen vermutlich nicht. Aber es kann z.b. Passieren das die Router sich eine IPv6 aus der anderen oder sogar aus beiden Domänen schnappen und somit 2 Adressen haben.
Ausserdem Tauchen Plötzlich die Knoten aus Domäne A auf der Karte von Domäne B oder umgekehrt auf…

Bei einzelnen Knoten bei denen ich nicht darauf achten muss in welcher Reihenfolge (Stichwort: Am Ast sägen / Brücke bauen) man sie in die neue Domäne verschiebt kann ich dir anbieten sie per Autoupdater zu verschieben.

das heißt du Stellst mir so eine Liste der IPv6 Adressen zur verfügung:

DomäneYX:
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}

DomäneXY
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}
2a03:2260:115:2600:XXXX:XXXX:XXXX:XXXX 1; #{NAME_DES_KNOTEN}

Domäne...
...
...
...

und dann bekommen die Router ein Firmwareupdate aus der Jeweiligen Domäne…
Aber wie gesagt nur bei Einzelnen Knoten weil sonst der Aufwand recht groß ist.

Gruß Marius


#7

Wenn 2 Domänen verbunden sind, erhalten alle Geräte darin die IPv6-Adressen von beiden Domänen und viele Geräte die IPv4 von der falschen. Alle Geräte, die die falsche IP haben, senden dann wahrscheinlich ihren Traffic durch die Brücke oder die Internetverbindung tut dann gar nicht. Alle Broadcasts gehen natürlich auch durch beide Domänen.

Wir haben 3 mögliche Mesh-Interfaces:

  • Mesh on WLAN ist unkritisch, weil jede Domäne dabei ihre eigene SID verwendet und nicht mit anderen Domänen mesht.
  • Mesh on WAN (blauer Port) ist normalerweise aus. Hierüber könnte man Domänen verbinden.
  • Mesh on LAN (gelbe Ports) ist normalerweise an. Hierüber könnte man Domänen auch verbinden.

Um die Brücken zwischen 2 Domänen zu verhindern, sollte man also Mesh on WAN aus lassen. Mesh on LAN kann man an lassen aber die Gelben Ports sollten bei der Einrichtung nicht genutzt werden. Höchstens beim eigentlichen Aufstellen kann man sie mit Routern der gleichen Domäne verbinden (ist meist nicht nötig, wenn jeder Router eine direkte Internetverbindung hat).


#8

Vielen Dank für das Angebot! Solange ich nicht vergesse, meinen SSH-Key auf die Knoten zu werfen, komme ich da ja selbst dran und kann die Dinger selbst umhängen. Die Möglichkeit per Autoupdater macht Dir nur mehr Arbeit, spart mir aber eigentlich keine. Die Daten muss ich ja so oder so zusammenkratzen.

Mesh (zwischen den eigenen Routern) ist hier eigentlich nur bei den größeren Stellen relevant. Dann sind es schnell 10 Knoten oder mehr im Gebäude. Da versuche ich aber, soweit irgend möglich, per Kabel zu meshen und außerdem nur einen als Uplink zum FF-Server zuzulassen. An den allermeisten Stellen werden wir den Internetzugang dediziert für FF schalten. Von daher ist der Mesh-Traffic bei Mesh on WAN kein Problem.


#9

Noch mal zur Sicherheit:

Es gibt 2 mögliche Netzwerk-Topologien, wenn man per Kabel meshen möchte und nur ein Router eine direkte Verbindung zu den FF-Gateways aufbauen soll:

Mesh on WAN:
Internet <—> (WAN-Port) Router 1 (WAN-Port) <—> (WAN-Port) Router 2 …
Hierbei sollte man z.B. durch VLANs verhindern, dass der Mesh-Traffic die anderen Geräte im gleichen Segment stört. Nötig, weil ja alles über den einen Port geleitet wird. Und zumindest der nicht-FF-Router zum Internet bekommt den Mesh-Traffic auch ab.

Mesh on LAN:
Internet <—> (WAN-Port) Router 1 (LAN-Port) <—> (LAN-Port) Router 2 …
Hierbei braucht man zum Router 1 zwei Leitungen, aber man kommt evtl. ohne VLANs aus bzw. kann den Mesh-Traffic leichter abschotten.

Für uns ist es aber auch kein Problem, wenn kein Kabel-Mesh genutzt wird und jeder Router seinen eigenen Tunnel zu den FF-Gateways aufbaut.


#10

Ja, das stimmt, ein Shellscript mit den jeweiligen Paramatern tut’s in deinem Fall genauso. Für größere Aufgaben, die immer mal wieder ausgeführt werden müssen, ist Ansible aber sehr nützlich - vielleicht kannst du’s ja in Zukunft anderweitig sinnvoll einsetzen :slight_smile:


#11

Ich habe jetzt festgestellt, das sich Ansible eher nicht so sinnvoll mit den FF-Knoten einsetzen lässt. Eine Weile habe ich gebraucht, bis Ansible eine Fehlermeldung ausgespuckt hat, mit der ich etwas anfangen konnte: Die Knoten sprechen kein Python, und damit läuft mit Ansible nur das RAW-Modul. :frowning:


#12

Oh, darauf hätte ich auch selbst kommen können. Hab’ nicht groß über die benötigen Grundvoraussetzungen nachgedacht, sorry.


#13

@PeterB, es gibt zu Ansible auf OpenWRT einen Ansatz: https://github.com/lefant/ansible-openwrt

Ich hab letztens mal angefangen, mir das anzusehen. Mich anzumelden hat schon mal funktioniert, aber wie man die UCI-Sachen setzt, hab ich noch nicht rausgefunden. Dazu müsste man dann noch den Umzug in eine andere Domäne programmieren, geht bestimmt auch.


#14

Danke @MPW, ich sehe mir das mal an.


#15

Gut. Wichtig ist auf jeden Fall, dass du dir von Anfang an einen SSH-Schlüssel auf alle Knoten legst. Das erspart später eine Menge Ärger.


#16

Bei neuen Linux-Büchsen gehört das zu den ersten Aktionen! :wink: