Freifunk Server Handbuch

Aus Freifunk Dresden - Anwender-Wiki
Zur Navigation springen Zur Suche springen

Git-Repositories

Für den Betreiber eines Freifunk Servers (Vserver) gibt es ein GIT Repository. Dieses erlaubt das fast automatische Aufsetzen eines Freifunk Servers (für Internet-Gateway).

Informationen dazu sind derzeit in der README.md auf github gegeben, werden aber in Zukunft hier gepflegt.

Bitte beachtet die Hinweise für andere Communities, welche auf der Dresdner Installation basieren sollen.

Freifunk Dresden Server (ffdd-server)

Dieses Repository bildet die Funktionalität eines Servers für Freifunk Dresden. Der Vserver arbeitet wie ein Freifunk Knoten und ist soweit konfiguriert, dass dieser eine Knotenwebseite anbietet, Backboneverbindungen (fastd2) akzeptiert und via Openvpn Internettunnel für den Internetverkehr aus dem Freifunknetz aufbauen kann.

HINWEIS: Der Vserver ist auf Freifunk Dresden zugeschnitten. Soll dieses als Basis für andere Freifunk Communities verwendet werden, müssen Anpassungen gemacht werden. Bitte ein Issue im Github erstellen.

  • Es empfielt sich dringend für andere Communities, dieses Repository zu forken, da hier generelle Umstellungen zusammen mit der passenden Firmware für Dresdener Anforderungen erfolgen.
    Communities sollten dann auf das geforkte Repository (gilt auch für das "firmware" Repository) aufbauen. Jede Community trägt die alleinige Verantwortung und Kontrolle über ihr Netz und sollte eigene Erfahrene Leute/Admins bereitstellen. Hilfe von Dresden ist aber jederzeit möglich, aber Administrative Aufgaben oder Garantien werden nicht übernommen, da das einfach den organisatorischen Aufwand sprengt.
    Wir wissen selber nicht, wie sich das Netz in Zukunft noch verhält, wenn dieses weiter wächst.
  • Routingprotokoll BMXD: Diese Protokoll wurde anstelle von bmx6 oder bmx-advanced aus verschiedenen Gründen gewählt. Es wird vom eigentlich Author nicht mehr weiterentwickelt oder gepflegt. Für die Dresdener-Firmware wurden einige Fehler behoben. (siehe http://wiki.freifunk-dresden.de/)
  • Anpassungen: Speziell gilt das für den IP Bereich und der Knotenberechnung. Aus Knotennummern werden mit ddmesh-ipcalc.sh alle notwendigen IP Adressen berechnet. (siehe Technische Information)

    Freifunk Dresden verwendet zwei IP Bereiche, eines für die Knoten selber (10.200.0.0/16) und eines für das Backbone (10.201.0.0/16). Dieses ist technisch bedingt. Wird bei freifunk.net nur ein solcher Bereich reserviert (z.b. 10.13.0.0/16), so muss das Script ddmesh-ipcalc.sh in der Berechnung angepasst werden, so dass zwei separate Bereich entstehen. Die Bereiche für 10.13.0.0/16 würden dann 10.13.0.0/17 und 10.128.0.0/17 sein.

    Das Script ddmesh-ipcalc.sh wird ebenfalls in der Firmware verwendet, welches dort auch angepasst werden muss.
    In der Firmware gibt es zwei weitere Stellen, die dafür angepasst werden müssen. Das sind /www/nodes.cgi und /www/admin/nodes.cgi. Hier wurde auf den Aufruf von ddmesh-ipcalc.sh verzichtet und die Berechnung direkt gemacht, da die Ausgabe der Router-Webpage extrem lange dauern würde.

    In /etc/nvram.conf werden die meisten Einstellungen für den Vserver hinterlegt.
  • Weiterhin verwendet das Freifunk Dresden Netz als Backbone-VPN Tool fastd2.
    fastd2 ist ein für Freifunk entwickeltes VPN, welches eine schnelle und zuverlässige Verbindung bereitstellt.
    Bei der aktuellen Installation werden alle Verbindungen von Freifunk-Router zum Server zugelassen, welche sich mit dem korrekten Public-Key des Servers verbinden. Dieser Public-Key kann über http://ip-des-knotens/sysinfo-json.cgi ausgelesen werden.
    Verbindet sich ein Router mit einem Server erfolgreich, so "lernt" der Server diese Verbindung und erzeugt ein entsprechendes Konfigurationsfile unterhalb von '/etc/fastd/peers2'.
    Später kann der Server umgestellt werden, so dass nur noch dort abgelegte Konfigurationen (Verbindungen) akzeptiert werden. Gesteuert wird dieses durch das Konfigurationsfile von fastd (/etc/fastd/fastd2.conf).
  • /etc/openvpn enthält ein Script, mit dem verschiede Openvpn Konfigurationen von Tunnelanbietern so aufbereitet werden, das diese für Freifunk Dresden richtig arbeiten.
    Wie in der Firmware läuft per cron.d ein Internet-check, der in der ersten Stufe das lokale Internet testet und wenn dieses funktioniert, wird das Openvpn Internet geprüft. Ist das Openvpn Internet verfügbar, wird dieser Vserver als Internet-Gateway im Freifunknetz bekannt gegeben.
  • Auch der Vserver arbeitet als DNS Server für die Knoten, die ihn als Gateway ausgewählt haben. Der Vserver leitet allerdings die DNS Anfragen nicht über den Openvpn Tunnel, sondern geht direkt über den VServer Anbieter raus.
  • Da VServer Anbieter verschieden sind, kann die Installation abbrechen. Hier sollten erfahrene Leute die Installation anpassen und mir einen Hinweis geben. Als Vserver kann NICHT jeder Anbieter genutzt werden.

Wichtig ist, dass tun/tap devices und alle möglichen iptables module verfügbar sind. IPv6 ist nicht notwendig, da das Freifunk Netz in Dresden nur IPv4 unterstütz. (Platzmangel auf Routern und bmxd unterstützt dieses nicht)

Vorausetzungen

  • Notwendig ist eine Debian (8/9) oder Ubuntu-Server LTS (16.04/18.04) Installation.
    Wähle dafür aber die "Server-⁠Variante" nicht Desktop! (Empfehlung: Debian)
  • Speicher: min. 1GByte RAM, 2GByte Swap
  • Netzwerk: min. 100Mbit/s
  • Kernel Module: tun.ko muss vorhanden sein. Evt sollte man sich vorher beim VServer Anbieter informieren. Nicht alle Anbieter haben einen Support im Kernel. Genutzt wird es vom Routing Protokoll, Backbone, Openvpn.
  • Virtualisierung: Wird der Freifunk Server auf einem virtuellen Server aufgesetzt, so funktionieren als Virtualisierungen QEMU(KVM), LXC, XEN und OPENVZ sehr gut.

Installation

Wichtig:

  • Habt ihr bereits einen Registrierten Gateway-Knoten und die dazugehörige /etc/nvram.conf solltet ihr diese jetzt auf dem Server hinterlegen! Anderen falls werden diese automatisch generiert und eine neue Knotennummer vergeben und registriert.
  • /etc/hostname (hostname.domainname.de) > Bitte versichert euch nun das euer Hostname korrekt gesetzt ist und der ensprechende DNS Eintrag mit der öffentlichen IP von euch hinterlegt wurde! Andernfalls wird kein SSL-Zertifikat von letsencrypt zur Verfügung gestellt.
  • Änderung des Installations Path in /etc/nvram.conf
    Dies sollte unbedingt vermieden werden da ansonsten kein Salt-Service und ein Autoupdate mehr gewährleistet werden kann! >>> Es sollte reichen sich einen Symlink zu erstellen.

Folgends cloned und Installiert das Repository.
Es wird beim ersten Durchführen eine kurze Zeit in anspruch nehmen da einige Packages und ihre Abhängigkeiten installiert, Files kopiert und am Ende noch einige Tools compiliert werden müssen.

git:

git clone https://github.com/cremesk/ffdd-server.git /srv/ffdd-server
cd /srv/ffdd-server
git checkout T_RELEASE_latest && ./init_server.sh

Alternative Installations Möglichkeiten:

curl:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/cremesk/ffdd-server/T_RELEASE_latest/init_server.sh)"

wget:

sh -c "$(wget https://raw.githubusercontent.com/cremesk/ffdd-server/T_RELEASE_latest/init_server.sh -O -)"


Nun ist es bei der ersten Initialisierung ganz normal wenn am Ende in der "Summary for local" noch Failed's angezeigt werden.

  • Manuelle Anpassung der Variablen.

Es müssen noch Host- & Community- Spezifische Dinge angepasst werden:

*/etc/hostname
*/etc/nvram.conf
  *servername
  *contact
*/etc/openvpn/
  # please creates openvpn.conf with:
    ./genconfig.sh yourvpnclient.conf/.ovpn
  # for vpn user and password use:
    /etc/openvpn/openvpn.login
*/etc/fastd/peers2/
  # To Create a Fastd2 Connection use:
    '/etc/init.d/S53backbone-fastd2 add_connect vpnX.freifunk-dresden.de 5002'

Im letzten Schritt müssen die Änderungen noch übernommen und überprüft werden. (Dies geschieht auch automatisch aller 10min per cronjob).
Wir wollen aber sehen ob alles läuft und auch alles erfolgreich initialisiert wird:

salt-call state.highstate --local

# Debug Mode
salt-call state.highstate --local -l debug

Gibt es hier keinerlei Fehler mehr sollte der Server einmal sauber neugestartet werden.

Optional:
- /etc/firewall.user
Kann verwendet werden um eigene Firewallregeln (iptables) zu definieren. Diese werden in '/etc/init.d/S41firewall' eingebunden und automatisch mitgeladen.

Hinweis:
Sollte es dazu kommen dass es mit 'salt-call state.highstate --local' direkt am Beginn der Initialisierung zu fehlern kommt oder es generell Probleme mit Services auf dem Server gibt sollte unbedingt erneut die '/srv/ffdd-server/init_server.sh' ausgeführt werden. Um auf ganz sicher zu gehen auch die aktuelle Version zu nutzen:

rm -rf /srv/ffdd-server && sh -c "$(wget https://raw.githubusercontent.com/cremesk/ffdd-server/T_RELEASE_latest/init_server.sh -O -)"

Wichig

Im moment gibt es keinen Schutz, dass Routerfirmware einer Communitiy sich mit Servern oder Routern anderer Communities verbinden. Es ist Fatal, wenn sich die Netze wegen gleicher WLAN BSSID oder via Backbone verbinden. Da überall das gleiche Routingprotokoll verwendet wird, würden Geräte von verschiedenen Communities miteinander reden können und das Netz würde gigantisch groß und die Router überlasten.

Bitte einhalten:

  • Ändern der BSSID auf eine eigene!
  • Keine Verwendung von Registratoren anderen Communities (Webserverdienst zum Verteilen von Knotennummern)
  • Kein Aufbau von Brücken zwischen Routern/Vservern verschiedener Communities über Backboneverbindungen. (das wird in Zukunft noch unterbunden, dazu ist aber eine Änderung am Routingprotokoll notwendig). Verbindungen von Communities dürfen nur über das ICVPN erfolgen. - /usr/local/bin/ddmesh-ipcalc.sh muss angepasst werden!

Development

Um eine andere Release-Version zu benutzen ist ein notwendig in der /etc/nvram.conf die Option "branch=" anzupassen.

Default (Stable):

branch=T_RELEASE_latest

Development:

branch=master

Server-Anbieter

Im Laufe der Zeit haben wir bei vielen Anbietern Server für den Freifunk Dresden gebucht. Einige unserer Erfahrungen mit den verschiedenen Produkten sammeln wir hier.

Internet Tunnel (OpenVPN)

Ein VPN Server kann ein Exitpoint (Übergang zum Internet) sein. Der Betreiber sollte sich aber gegen die Störerhaftung schützen und entweder als Provider offiziell auftreten oder einen OPENVPN Dienst in anspruch nehmen. Ein OPENVPN Dienst stellt ein weiteres VPN zu anderen meist annonymisierten Servern her, bei denne keine Daten geloggt werden.

Aktuell werden in Dresden verschiedene Zugänge verwendet:

Die Konfiguration erfolgt im Verzeichnis /etc/openvpn, wo es ein Script gibt, mit dem die Konfiguration für einen Vserver angepasst werden kann.

myLOC

Server:
LXC ab 3,99 € / VM ab 8,99 € / Root ab 14,99 € / Dedicated ab 59,99 €

OVH

1&1

„Virtual Server Linux Student“ nicht empfohlen!

Netcup (nicht empfohlen)

Verbindung wird gedrosselt teilweise bis auf 1,6Mbyte/s dauerhaft.

„Root-Server S“

  • Virtualisierung: KVM
  • Anbindung: 100 Mbit/s
  • Preis: 4,99€ (monatlich kündbar)
  • Besonderheiten: Drosselung bei Überschreitung von 80 Mbit/s Bandbreite

Netcup drosselt Vserver, wenn diese über einen Zeitraum von 15 Minuten eine durchschnittliche Bandbreite von über 80 Mbit/s belegen. Die Drosselung erfolgt ohne Vorwarnung auf ca. 50KB/s, wodurch der Server praktisch unbenutzbar wird. Erst auf Nachfrage erfährt man vom Support von der Drosselung, die zumindest bei uns auf Bitte wieder rückgängig gemacht wurde. Falls man diesen Server für Freifunk sinnvoll nutzen möchte, sollte man selbst sicherstellen, dass die beanspruchte Bandbreite stets unter 80 Mbit/s bleibt. (Stand 10/2015)

„Root-Server L“

  • Virtualisierung: KVM
  • Anbindung: 1 Gbit/s
  • Preis: 18,99€ (monatlich kündbar)
  • Besonderheiten: Drosselung bei Überschreitung von 80 Mbit/s Bandbreite

Laut Netcup liegt bei den Gigabit-Servern eine durchschnittliche Bandbreite von nur 200 Mbit/s an. Wie beim „Root-Server S“ gilt außerdem die selbe Regelung für die Überschreitung der 80-Mbit/s-Grenze. (Stand 10/2015)

ispOne business (nicht empfohlen)

Trotz Internetflat werden Server abgeschaltet, gedrosselt oder sind drei Tage überhaupt nicht erreichbar (Traffic < 5TB/Monat). Der Support war anfänglich okay, aber seitdem vermutlich die Serverlast und der Datenverkehr zugenommen hat, wird nicht mehr auf Supportanfragen reagiert und behauptet, dass der Server gehackt wurde. Fragen nach Begrenzungen (um diese eventuell selber zuzusichern) bleiben unbeantwortet. Monatsverträge werden von Seiten ispOne ohne Begründung gekündigt. Man erfährt dies nur durch eine "Kündigungsbestätigung".

1blue

  • URL: https://www.1blu.de/server/vserver/
  • Traffic inclusive - bis jetzt keine Drosselung
  • Preis: 7,90€ (monatlich kündbar)
  • Laufzeit 1/12 Monate
  • Anbindung vermutlich 100MBit/s
  • 4GB garantierter RAM

Auf nachfrage hin drosseln sie in keinster weise die Anbindung der Server. (stand 12.2015)