Freifunk für Tettnang

Freifunk-Logo

Nachdem mir ein Kollege aus Blaubeuren (hi Andi) die Technik und die Idee von Freifunk enthusiastisch geschildert hatte, habe ich mich entschlossen da auch mitzumachen. Die Idee, über eine Mesh-Technologie ein ganzes Stadtgebiet mit freiem Internet zu versorgen, finde ich einfach großartig. Man teilt einfach seinen eigenen Internet-Anschluss über ein offenes WLAN mit anderen und ist über die Freifunk-Technik aus der WLAN-Störerhaftung fein raus (siehe dazu auch weiter unten).

Über den Service der Ulmer Freifunker ist nun auch über meinen Internet-Anschluss ein freier Zugang ins Internet möglich. Bei der Gelegenheit habe ich dann gesehen, dass es in Tettnang von der Firma SeeSystem schon eine Freifunk-Initiative gibt. Stand heute haben die alleine in Tettnang schon vier weitere Access-Points in Betrieb.

Freifunk-Status Tettnang, Stand 26.7.2015
Freifunk-Status Tettnang, Stand 26.7.2015

Eine wichtige Frage ist natürlich die nach der Störerhaftung! Grob gesagt geht es hier darum ob man sich durch diese Form der Bereitstellung als „Mitstörer“ strafbar macht (eine genauere Definition der Störerhaftung ist hier bei bei Wikipedia). Dem ist aber offenbar nicht so – siehe z.B. diesen Beitrag der Anwaltskanzlei Feuerhake.

Virtuelle Maschinen und andere große Dateien mit BitTorrent verteilen

Der Einsatz virtueller Maschinen (VMware, Virtualbox, …) hat sich im Schulungsbereich schon fest etabliert. Alle Schulungs-Teilnehmer/innen haben damit die Möglichkeit auf einem einzigen Wirtsrechner der einigermaßen mit RAM ausgestattet ist, in einer virtuellen Umgebung mehrere Betriebssyteme (Server, Client, …) betreiben zu können. Dadurch ist ein individuelles und vollständiges Lernen wesentlich besser möglich als durch die zwangsweise Zusammenarbeit mehrerer Teilnehmer/innen die dann nur für Teilaufgaben zuständig sind und sich bzgl. Lerntempo an den/die Partner/in anpassen müssen.

Verteilungsprobleme

Für die Leitung der Schulung ergeben sich daraus aber in der Praxis durchaus auch Nachteile. Ein ganz praktisches Problem ist die Verteilung der virtuellen Maschinen da diese im Normalfall mindestens ca. 2GB an Datenvolumen haben und damit nicht mehr „mal eben kurz“ an die Teilnehmer/innen ausgeteilt werden können. Bei 2GB und 20 Teilnehmern müssen in so einem Fall nämlich 40 GB vom Schulungsserver (oder womöglich sogar vom Laptop der Schulungsleitung) über das Netz übertragen werden. Je nach Server/Netzinfrastruktur kann das eine nicht mehr zumutbare Zeit in Anspruch nehmen zumal hier neben der Netz-Infrastruktur auch die Festplatte des Verteilrechners schlapp macht.

An einem einzigen Tag also mal nebenbei 5 verschiedene Szenarien, die jeweils aus 2 virtuellen Maschinen bestehen, zu verwenden ist meist unmöglich – das sind nämlich schon mind. 800GB! Auch ein spontan am Vortag entwickeltes Szenario zu Beginn der Schulung am nächsten Morgen kurz auszuteilen – gilt u.a. auch für Prüfungen, Klassenarbeiten, …) wird damit fast unmöglich.

Verteilung mit BitTorrent

Die beschriebene Verteilproblematik kann bei Verwendung von BitTorrent als Verteilmechanismus vermieden werden. Bei BitTorrent wird die Datei erst einmal von einem Verteiler (Seeder) bereit gestellt. Clients erhalten die Datei in einzelnen „Stücken“ und verwandeln sich nach dem Erhalt des ersten „Stückchens“ sofort in eine Art Server. Alle Teilstücke werden nämlich sofort allen anderen Clients angeboten wodurch der ursprüngliche Verteiler entlastet wird. Je mehr Teilstücke unterwegs sind und je mehr Clients an diesem Verteilprozess teilnehmen, desto effizienter wird die Gesamtübertragung – also genau anders als bei einer zentralen Verteilung über einen Server.

Die „Buchhaltung“ der beteiligten Clients übernimmt ein sogenannter Tracker! Und hier ist die Haupthürde bei dieser Art der Verteilung da ein öffentlicher Tracker nicht vewendet werden kann oder soll. Die Verteilung findet nämlich in einem lokalen Netz, meist mit privaten IP-Adressen, und hinter einem NAT-Router statt. Das zu verteilende Material ist außerdem häufig nicht lizenzfrei und nur im Schulungsbetrieb temporär verwendbar. Es muss also ein eigener, lokaler Tracker verwendet werden.

Lösung mit Vuze

Eine relativ einfache Möglichkeit dies ohne großen Aufwand zu realisieren bietet die BitTorrent-Software Vuze. Diese Software bietet nämlich neben den üblichen BitTorrent-Client-Fähigkeiten auch einen eingebauten Tracker. Nachfolgend eine kurze Anleitung welche Schritte für eine erfolgreiche und effiziente Verteilung mit Vuze erforderlich sind.

1. Vuze installieren und den Tracker in Betrieb nehmen

Die nachfolgend beschriebenen Features sind in älteren Versionen von Vuze noch nicht so enthalten. Deshalb laden Sie sich ggf. eine aktuelle Version von Vuze herunter und installieren Sie diese so wie in dem von Ihnen verwendeten Betriebssystem üblich. Ich selbst habe ursprünglich mit Version 4.3.1.4 die ersten erfolgreichen Schritte unternommen und habe Version 4.4.0.4 für diese Anleitung verwendet. Vuze selbst gibt es für verschiedene Plattformen. Sollten Sie z.B. im Linuxbereich die Pakete des zugehörigen Repositories verwenden, müssen Sie selbst prüfen ob die Version von Vuze schon aktuell genug ist.

Nach der Installation wird zuerst der Konfigurationsdialog aufgerufen.

Vuze Einstellungen

Die für die Tracking-Konfiguration erforderlichen Dialoge werden im „Anfänger“-Modus von Vuze nicht angeboten. Deshalb ist der erste Schritt die Umstellung auf den Modus „Fortgeschritten“.

Vuze - Einstellungen - Modus

Anschließend kontrollieren Sie welchen TCP- bzw. UDP-Port Vuze für das eigentliche Filesharing verwendet. Dieser Port muss für beide Protokolle in der Firewall Ihres Systems geöffnet werden. Je nach Betriebssystem erfolgt dies schon automatisch. Bei manchen Betriebssystemen ist dies aber manuell vorzunehmen. Der Port wird bei der Vuze-Installation mehr oder weniger zufällig gewählt, kann aber auch nachträglich verändert werden. Wichtig ist nur, dass dieser Port in der Firewall unbedingt offen sein muss!

Vuze - Einstellungen - Verbindung

Anschließend ist der in Vuze eingebaute Torrent-Tracker zu konfigurieren. Dazu in der Baumstruktur „Tracker“ -> „Server“ auswählen.

Vuze - Einstellungen - Tracker-Server konfigurieren

Für das Verteilen im lokalen Netz muss bzw. soll dieser Tracker jedoch nicht von Außen erreichbar sein. Es reicht aus wenn der Zugriff ausschließlich im lokalen Netz funktioniert. Allerdings ist die richtige Einstellung der IP-Adresse für das Tracking sehr wichtig. Deshalb muss zuerst die eigene IP-Adresse festgestellt werden und dann unter „Externe IP-Adresse des Trackers“ eingetragen werden. Im obigen Beispiel hatte der Verteilrechner also die lokale IP-Adresse 10.0.0.95. Sollten der Verteilrechner beim Booten unterschiedliche IP-Adressen erhalten (DHCP-Server mit kurzer Lease-Zeit, Laptop in unterschiedlichen Netzen, …) ist diese Einstellung vor jedem Verteilvorgang anzupassen und die Torrents jeweils neu zu erstellen.

Anschließend wird das Häckchen bei „Aktiviere Tracker auf HTTP-Port“ gesetzt. Die Voreinstellung des Ports mit 6969 kann belassen werden.

Die nächste Konfiguration ist der Bereich „Verteilen„.

Vuze - Einstellungen - Verteilen konfigurierenHier ist beim Punkt „Protokoll für verteilte Ressourcen“ die Einstellung „HTTP“ auszuwählen. Damit ist die Konfiguration abgeschlossen. Zukünftig muss nur noch die IP-Adresse angepasst werden falls der Rechner eine neue Adresse bekommen hat.

2. Dateien verteilen

Wie bei der Konfiguration beschrieben bitte immer zuerst sicherstellen, dass die IP-Adresse des Trackers richtig eingestellt ist (siehe oben).

Nun starten Sie die Verteilung einer Datei über Auswahl von „“ -> „“ in der Menüleiste des Vuze-Hauptfensters.

Vuze - Datei verteilen

Über die nachfolgende Dateiauswahlbox wird die zu verteilende Datei ausgewählt. Vuze berechnet nun für die Verteilung notwendige Prüfsummen und stellt die Datei anschließend zur Verteilung bereit.

Den Anwendern ist nun der URL der Tracker-Weboberfläche mitzuteilen. Dieser URL setzt sich aus der IP-Adresse des Rechners (in obigem Beispiel war dies 10.0.0.95) und aus der Portadresse 6969 zusammen. Zusammen ist der URL im aktuellen Beispiel also http://10.0.0.95:6969. Die Anwender sehen damit eine Oberfläche wie diese:

Vuze - Weboberfläche

In diesem Beispiel ist z.B. der Torrent „120px-Coat_of_Indonesia.png“ verfügbar. Bei einem Klick auf den hinterlegten Link wird die Steuerdatei vom Typ *.torrent herunter geladen. Der Anwender benötigt nun noch selbst einen Bittorrent-Client (z.B. unter den Windows den sehr schlanken und schnellen uTorrent-Client). Es geht natürlich aber auch mit Vuze oder einem anderen Client. Meist sind diese Anwendungen im Betriebssystem schon für den Dateityp *.torrent registriert. Dann kann die Datei direkt im Browser an den Torrent-Client übergeben werden. Anschließend sollte der Verteilmechanismus zeitnah starten.

Die einzelnen Download-Rechner werden beim P2P-Netz Bittorrent sofort auch zum Server für die bereits herunter geladenen Dateistücke, Wichtig ist, dass alle Torrent-Clients auch nach dem Download weiter laufen. Damit erhalten dann auch die noch nicht fertigen Clients weiterhin aus mehreren Quellen die Dateistücke die ihnen noch fehlen.

arping

Für was benötigt man arping überhaupt?

Nun … z.B. um mit diesem Utility feststellen zu können ob ein bestimmter Rechner bzw. eine IP-Adresse im LAN an ist oder nicht. Dafür ist zwar eigentlich ping das übliche Utility aber falls der betreffende Rechner ICMP-Echo-Requests über eine Firewall sperrt erhält man keine Antwort mehr. Diese Firewall-Einstellung ist z.B. bei Windows XP mit Service-Pack 2 und allen neueren Versionen von Windows die Default-Einstellung.

Hier ein Beispiel:

Es sieht also so aus als ob dieses Rechner derzeit nicht am Netz ist.

Aber: Für die Zustellung eines IP-Pakets wird in einem Ethernet-LAN die MAC-Adresse des Zielrechners benötigt. Ist diese nicht bekannt wird diese im Hintergrund über eine ARP-Anfrage in Erfahrung gebracht. Genau das passiert auch bei einem ICMP-ping. Der ICMP-Echo-Request wird in einem IP-Paket an den Zielrechner gesendet und um diese IP-Paket in einen Ethernet-Frame zu verpacken wird die MAC-Adresse des Zielrechners über ARP in Erfahrung gebracht. Das kann man über Einsicht in den ARP-Cache unmittelbar nach dem ICMP-ping auch sehen:

Hier ist der Rechner 172.16.0.201 sehr wohl aufgeführt. Da ARP ein unbedingt notwendiges Protokoll ist, wird es über die Firewall nicht gesperrt. Ohne ARP könnten die Clients im Netz nicht untereinander kommunizieren. Die Idee von arping ist es den ICMP-ping gleich zu umgehen, mit ARP-Requests zu arbeiten und dabei das altbekannt e ping-Utility nachzuahmen.

arping am Beispiel openSUSE 11.2

openSUSE 11.2 bringt im Paket „iputils“ bereits ein arping-Utility mit. Damit kann man nun in einem Schritt feststellen ob eine bestimmte IP-Adresse im LAN aktuell vorhanden ist und dabei im Gegensatz zum vorherigen Ansatz wieder die Round-Trip-Zeiten wie beim normalen ping sehen.

Das betreffende arping-Utility ist die Variante von Alexey Kuznetsov.

Alternative arping-Version

Es gibt im Internet auch noch eine arping-Version von Thomas Habets. Diese Version ermöglicht es als Zielangabe auch eine MAC-Adresse statt einer IP-Adresse anzugeben. Die Idee dahinter ist es zu einem unbekannten Rechner von dem aber die MAC-Adresse bekannt ist die zugehörige IP-Adresse in Erfahrung zu bringen. Dafür verwendet arping von Thomas Habets dann wieder einen ICMP-Echo-Request der aber wie schon oben erwähnt z.B. von Windows XP SP2+ gesperrt und somit nicht beantwortet wird. Als Ziel-Adresse wird die Non-directed-Broadcast-Adresse 255.255.255.255 verwendet.