[Freifunk-Bonn] PirateBox und Freifunk

Matthias Strubel matthias.strubel at aod-rpg.de
Sa Apr 27 10:32:30 CEST 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
 
Hallo Jan,
cool, dass du dich meldest!
Danke!

Ich habe ein wenig um die Ohren, muss so eine Uralte PHP4 Seite auf
PHP5.4 umstellen, das macht noch mehr graue Haare als ich gebrauchen kann.

Aber zurück zum Thema, leider kann ich an besagten Events nicht teilnehmen.
Vielleicht bin ich demnächst (5.5.) in Köln für ein oder zwei Tage
(Urlaub), aber das ist noch nicht 100% fest geplant. Da könnten wir uns
auf einen Kaffee/Kölch treffen, wenn du magst.

Die Integration einer PirateBox in das FreiFunk-Netz würde ich mit
größer Vorsicht wagen. Aktuell ist der DHCP auf non-authorative
eingestellt, was die PirateBox (richtig konfiguriertes LAN und bat0
vorausgesetzt) einfach nur zu einem Knoten (und den DHCP-Daemon stumm
schaltet, sobald ein anderer auftaucht).
Ich weiß, dass es auch einen Besitzer (ich glaube aus Koblenz) gibt, der
eine PirateBox via Mesh in ein FreiFunk eingebunden hat. Aktuell gibt es
leider ein größeres Problem mit der Integration als Server: Die
Upload-Box erfolgt über ein separates Python-Script was als
Server-Dienst auf dem Port 8080 erhört und per iframe in die Startseite
eingebunden wird. Das IFrame ruft daher einen statischen Host-Namen auf,
was bei Integration mit einer richtigen DNS-Configuration nicht richtig
aufgelöst und aufgerufen werden kann.
    Wir arbeiten aktuell an einer Lösung das separate PythonScript
abzulösen, was sich leider als problematisch heraus stellt, denn das
PythonScript arbeitet (interessanter Weise) sehr gut mit den Eigenarten
der kleinen Router zusammen.

Dazu kommt das Mesh-Thema für die PirateBoxen selbst. Hierzu habe ich
mir mal die Mühe gemacht und für eine Nachfrage hatte ich bereits eine
nicht-so-technischen Einleitung geschrieben:
http://piratebox.aod-rpg.de/dokuwiki/doku.php/mesh/introduction?s[]=mesh&s[]=introduction

Ich verwende batman-adv . ***Ursprünglich*** war die Idee so:
http://forum.daviddarts.com/read.php?2,2736,2769#msg-2769 :
* IPv4 nur zwischen End-Client und PirateBox
* IPv6 spannt End-Client quer über die PirateBox ins Mesh, sodass man
über IPv6 auch einen Client hinter einer PirateBox erreichen kann.
* IPV6 Präfix was mesh-wide gültig ist, und ab einer bestimmten Stelle
PBx spezifisch ist.
* Jede PBx vergibt mit  (allgm. Prefix)+(PBx-spez. Präfix) an ihre Clients.
* Jede PBx ist gleichberechtigt. (Wichtig!)

Gescheitert ist das ganze an Unwissen meinerseits, und das bei komplett
gebridgeden br-lan es zu anderen "Interferenzen" kam.

Aktuell ist die Implementierung wie folgt:
* Kein IPv6
* IPv4 192.168.1.x auf AP/Client Seite
* IPv4 10.x.y.z auf Mesh Seite  . x.y.z wird einmal bei der Installation
meines Mesh-Paketes generiert.
* Clients können mit Forward und NAT auf remote PBx zugreifen.
* Eigenes Script was die Configuration von OpenWRT vornimmt (
/etc/config/network & /etc/config/firewall )... der Aufbau von dem
wifi-Interface & bat0 erfolgt über ein eigenes Script (was auch auf
Notebooks recht stabil läuft).

Zukünftig will ich die Implementierung auf folgendes Umstellen:
http://prezi.com/9b0bz6okdvtt/piratebox-draft-for-changes-in-mesh/?utm_source=twitter&utm_medium=landing_share
Der Hintergrund ist, dass so "advanced" User mehr Möglichkeiten haben um
zweite Geräte als Server einzusetzen.  Das wären sie die theoretischen
Configurations-Möglichkeiten:
http://piratebox.aod-rpg.de/dokuwiki/doku.php/mesh/configuration  (Entwurf)

Das PirateBox-Paket befindet sich auf github hier:
https://github.com/MaStr/mkPirateBox-Mesh
Was das Teil bisher kann:

    * Generierung IPv6 Präfixen
    * Generierung der IPv4 Adresse und Sicherung in einer Config-Datei
    * Anpassung der MAC Adresse für mesh0
    * Sauberes "hochfahren" der verschiedenen Interfaces mit
Fehlerabfrage und einer Ausgabe die sehr Detailliert ist.
    * Configuration von bat0 via batctl oder ohne (manche
debian-Installation haben den Treiber installiert und nur das Tool nicht)
    * Umstellen der MTU auf dem bat0 Interface (was der Unterschied zu
deinem Script ist, es configuriert das wifi-Interface runter... aber das
kann man bei mir noch implementieren)
    * RTS disablen
    * CUSTOM_BSSID setzen
    * Für PirateBox habe ich dann noch die originator-Pings vom
Protokoll auf eine etwas niedrigere Frequenz gesetzt. (Meine Idee....)

Hier die Config-Datei dazu:
https://github.com/MaStr/mkPirateBox-Mesh/blob/master/src/data/etc/mesh.config
Wie du siehst kann man dort einiges an und abschalten. (Hier gibt es den
einen oder anderen Bug noch... )

Im Makefile gibt es ein Build-Target was die einzelnen
Script-Bestandteile zu einem fertigen .sh File für Notebooks zusammen
nagelt.  Im Rahmen der Umstellung auf das komplette 10.x.y.z Netz auch
für Clients, werden auch noch die OpenWRT spezifischen Dinge aus der
mesh.common entfernt und separat neben an gestellt... aber das sind wie
gesagt nur Aufräumarbeiten.

Beim Test und der Erstellung des Scriptes habe ich mich teilweise an die
Erfahrungen von Elektra gehalten, was sie im Buch "Mesh"
niedergeschrieben hat.

Was die PirateBox nach den Dingen auf Layer 2 & Layer 3 noch braucht ist
so ein "NameService". Also das PirateBox sich eine Liste erzeugen kann,
welche Boxen in der Nähe aktiv sind und diese in ihre DNS-Auflösung
integriert. Die Idee ist, z.B. dass ich meiner PirateBox den Namen
irc.piratebox.lan gebe und ich als User hinter einer entfernten
PirateBox die URL eingeben kann und komme genau auf diese PirateBox.
 Technisch kann man die Auflösung zusätzlicher Namen aus der
Catch-All-DNS Configuration relativ leicht rauslösen mit einer
zusätzlichen hosts-Datei, die aufgefüllt wird und man ein SIGHUP zum
dnsmasq schickt, damit er die neu einließt.... das überschreibt die
gefakten Antworten der PirateBox und würde dann auf die entfernte PBx
mit dem Namen irc.piratebox.lan zeigen.
Offen dafür ist "nur noch" ein kleines Script was Broadcasts senden
"here I'am" und eins was diese empfängt und in regelmäßigen
Zeitabständen ein JSON File sowie eine hosts config schreibt (und den
SIGHUP auslößt).
http://piratebox.aod-rpg.de/dokuwiki/doku.php/mesh/nameservice
Das JSON File ist dann für die Frontend-Liste.

Ich hätte gerne:

* Feedback zur Konfiguration des Mesh-Teils selbst (Protokoll, Setup
WLAN etc.)
* Feedback zur IP-Konfiguration
* Erfahrungswerte mit den DHCP/BroadCast Stuff.
* Ist das mit dem NameService überhaupt sinnvoll oder sollte ich auf ein
anderes Protokoll setzen (OLSR hat ja einen Nameservice integriert, ist
aber deutlich aufwändiger in IP)
* Gibt es einen generellen Denkfehler?
* Sonstiges?

vielen Dank und liebe Grüße aus Wiesbaden
Matthias Strubel
PS: Wie du siehst, war die Länge und Ausführlichkeit der Grund für die
lange Response-Zeit ;P


Am 24.04.2013 11:42, schrieb Jan Lühr:
> Hallo Matthias,
>
> nachdem wir uns auf der Crypto Party 5 leider nicht wirklich
austauschen konnten, wollte ich Dich kurz per E-Mail kontaktieren.
> Bist Du irgendwann im Raum Köln / Bonn? Nimmst Du am
Wireless-Community-Weekend teil?
>
> Uns interessiert insb. wie wir die Pirate-Box oder deren Services in
unser Freifunk-Netz integrieren können.
> Alternativ können wir auch auf Jitsi, Google Hangout, etc. ausweichen.
>
> Alles Gute
> Jan

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (MingW32)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
 
iEYEARECAAYFAlF7jR4ACgkQ7JXKWHWrFtPWsgCg3G5Q+t/dOAjF+g9bLhvwBih0
6FkAoKakPyapNXzKTJYAtT0lXPKGJW5g
=gCVD
-----END PGP SIGNATURE-----




Mehr Informationen über die Mailingliste Freifunk-Bonn