Nachdem wir uns im letzten Beitrag ein Linux-System installiert haben, geht es jetzt ans Eingemachte: Das Erstellen von vorkonfigurierten Gluon-Images. Grundlage für die folgende Beschreibung war die Anleitung der Freifunk Community Lübeck. Es wird davon ausgegangen, dass wir uns als Benutzer mit sudoer-Rechten eingeloggt haben. Für die weiteren Schritte öffnen wir uns ein Terminal.
Hierfür klicken wir auf den Ubuntu-Knopf und geben im Suchfeld den Begriff “terminal” ein:
Danach klicken wir auf die Applikation Terminal. Es erscheint ein neues Fenster mit einem Eingabe-Prompt. Wir befinden uns in unserem Heimverzeichnis:
Die Gluon-Quellen werden mittels Git in einem zentralen Depot verwaltet. Um auf die Quellen zugreifen zu können, installen wir als erstes den Git-Klienten:
$ sudo apt-get update
$ sudo apt-get install git
Auf die Frage nach dem Passwort, bedingt durch die Anwendung von sudo, antworten wir mit unserem Benutzerpasswort. Um lästige Warnungen während des Heruntladens der Quellen zu vermeiden, vervollständigen wir die git-Konfiguration mit den zwei folgenden Kommandos:
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
“Your Name” und you@example.com sind hierbei mit dem eigenen Namen und der eigenen e-Mailadresse zu ersetzen. Falls git bereits vollständig konfiguriert wurde, kann dieser Schritt übersprungen werden. Bevor wir Gluon komipilieren können, müssen wir außerdem noch einige Abhängigkeiten bedienen. Ansonsten kommt es später zu Fehlermeldungen. Wir führen das folgende Kommado aus, um die benötigten Pakete zu installieren:
$ sudo apt-get install build-essential libncurses5-dev zlib1g-dev gawk subversion
Jetzt sind wir soweit, dass wir die Gluon-Quellen aus dem git-Depot herunterladen können:
$ git clone https://github.com/freifunk-gluon/gluon.git
Die Quellen werden im Unterverzeichnis gluon im Heimverzeichnis abgelegt. Als nächstes laden wir zusätzlich die Gluon-Konfiguration der Freifunk-Community Lübeck herunter:
$ cd gluon
$ git clone git://github.com/freifunk-gluon/site-ffhl.git site
Die Konfiguration von Gluon erfolgt mittels einer einzigen Datei im Unterverzeichnis site. Diese Datei trägt passenderweise den Namen site.conf. Diese Datei muss vor der Kompilierung von Gluon angepasst werden. Leider ist die Konfiguration noch nicht dokumentiert, so dass man auf seine Intuition angewiesen ist. Es empfiehlt sich vor der Manipulation eine Sicherheitskopie anzulegen:
$ cp site/site.conf site/site.conf.orig
Um die Datei zu editieren verwenden wir den Text-Editor unserer Wahl. Unter Ubuntu/Gnome können können wir auf den graphischen Standard-Editor zurückgreifen:
$ gedit site.conf
Zuerst wenden wir uns den allgemeinen Einstellung zu. Jedem Router wird automatisch eine Name bestehend aus dem hostname_prefix und der IPv6-Interface ID verpasst. Der Präfix ist dabei beliebig und kann verändert werden. Wir belassen es beim aktuellen Standard:
hostname_prefix => 'freifunk'
Mittels des Parameters site_name kann der Name der Freifunk Community gesetzt werden. Wir kompilieren Gluon für die Community “Dreiländereck”:
site_name => 'Freifunk Dreiländereck',
Als Domain wollen wir das Kürzel “ff3l” verwenden. Dies teilen wir Gluon mittels des Parameters site_code mit:
site_code => 'ff3l',
Als nächstes konfigurieren wir die IP-Adressbereiche. Diese registrieren wir zuvor für unsere Community im Freifunk-Wiki. Für das Weiler Freifunk-Netz haben wir uns das IPv4-Netz 10.119.0.0/20 reserviert. Dieses bietet Platz für 4096 IP-Adressen (12 bit). Da die IPv4-Adressen mittlerweile knapp werden, sollte man bei der Reservierung nicht zu großzügig sein. IPv4-Adressen werden unter Gluon nur für Endgeräte benötigt. Die Mesh-Router selbst beziehen keine IPv4-Adresse. Die Konfiguration erfolgt mittels des Parameters prefix4:
prefix4 => '10.119.0.0/20',
Unter IPv6 wählen wir einen beliebigen, jedoch *eindeutigen* Präfix im ULA-Adressbereich (beginnend mit ‘fd’). Aus diesem Präfix und der sogenannten Interface ID wird später die eindeutige IPv6-Adresse generiert (ohne DHCP oder statischen Eintrag). Die Interface ID wiederum wird aus der MAC-Adresse des Interface berechnet. Die Konfiguration erfolgt mittels des Parameters prefix6:
prefix6 => 'fdc7:3c9d:b889:a272::/64',
Die Einstellung für die Zeitzone (Europe/Berlin) lassen wir unberührt. Später werden wir einmal einen NTP-Server zum automatischen Zeitabgleich einrichten. Entsprechend passen wir schon einmal die Domain des Host-Namens (‘ff3l’) im Parameter ntp_servers an:
ntp_servers => ['1.ntp.services.ff3l'],
Jetzt kommen wir zur Wifi-Konfiguration. Es gibt zwei Blöcke: einen für das 2.4 GHz (wifi24) und einen für das 5.0 GHz-Band (wifi5). Die ssid ist prinzipiell beliebig. Es handelt sich hierbei um die ssid für den Access Point. Wir wählen die Namen “freifunk.net” und “freifunk.net (5 GHz)”, um zwischen den beiden Bändern unterscheiden zu können.
Die Kanäle sind mittels channels ebenfalls frei wählbar. Wir bleiben bei den Werten des Lübecker Freifunknetzes. Den htmode langen wir nicht an. Für die mesh_ssid verwenden wir “mesh.freifunk.net” und “mesh.freifunk.net (5 GHz)”. Die mesh_bssid wählen wir entsprechend der Freifunk-Konvention:
wifi24 => { ssid => 'freifunk.net', channel => 1, ... mesh_ssid => 'mesh.freifunk.net', mesh_bssid => '12:CA:FF:EE:BA:BE', ... },
wifi5 => { ssid => 'freifunk.net (5GHz)', channel => 44, ... mesh_ssid => 'mesh.freifunk.net (5GHz)', mesh_bssid => '02:44:CA:FF:EE:EE', ... },
Mittels des Blocks next_node legen wir fest, wie unser Router nach dem Einspielen von Gluon erreichbar ist. Wir vergeben jeweils die erste IP-Adresse in unseren IPv4 und IPv6-Netzen (ipv4 und ipv6):
next_node => { ip4 => '10.119.0.1', ip6 => 'fdc7:3c9d:b889:a272::1', ... },
Als nächstes teilen wir dem Knoten im Block fastd_mesh_vpn mit, wie er sich mit dem Mesh VPN verbinden kann. Die Werte für die Parameter methods und mtu übernehmen wir von der Lübecker Community. Im Unterblock backbone spezifizieren wir fürs erste einen einzelnen fastd-Server mit der Bezeichnung vpn1. Konsequenterweise setzen wir den Parameter limit auf 1. Er zeigt an, mit wievielen Servern sich der Knoten gleichzeitig verbinden darf. Unter key wird der öffentlich Schlüssel des fastd-Servers eingetragen. Der Parameter remotes enthält mittels Leerzeichen getrennt die Verbindungseinstellungen. Diese müssen mit der Konfiguration des fastd-Servers übereinstimmen (siehe Beitrag zur Einrichtung eines Mesh VPN). In der Regel genügt es, den Host-Namen anzupassen:
fastd_mesh_vpn => { ... backbone => { limit => 1, peers => { vpn1 => { key => '3681086ba4985c508d55b8260219ef39840f765d65985cf2c6cf5391452a0842', remotes => ['ipv4 "v22014042172218235.yourvserver.net" port 10000'], }, }, }, },
Die Auto-Updates deaktivieren wir fürs erste, indem wir den Parameter enabled auf 0 setzen:
autoupdater => { enabled => 0, ... },
Zum Schluss passen wir noch die Mitteilungen am Ende der Datei an, die während der Ersteinrichtung des Routers angezeigt werden (nicht dargestellt). Im Wesentlichen sind der Name der Community und die e-Mail-Adresse für den Versand des öffentlichen Schlüssels anzupassen.
Nach Abschluss der Konfiguration vervollständigen wir die Quellen und beginnen mit der Kompilierung:
$ make update
$ make
Beim ersten Durchgang muss man selbst auf einer schnellen Maschine mit Wartezeiten in der Größenordnung von einer Stunde rechnen. Nach Abschluss der Kompilierung sind die erstellten Images im Unterverzeichnis images zu finden. Wie für OpenWrt üblich wird zwischen factory für die Erstinstalltion und sysupgrade für alle weiteren Flash-Vorgänge unterschieden.
Jede Änderung der site.conf erfordert eine erneute Kompilierung der Images. Jedoch beginnt der Prozess nicht ganz von vorne. Außerdem lassen sich für diesen letzten Schritt des Kompiliervorgangs mehrere Kerne parallel mittels der Option -j<n> einsetzen, wobei <n> die Anzahl der parallel Stränge bezeichnet:
$ make -j6
Damit sind wir am Ziel und bereit unseren ersten Router mit Gluon zu flashen. Hierbei ist folgendes zu beachten: Nach dem Flashen des Routers erfolgt die Erstkonfiguration. Der Router ist wie für OpenWrt üblich unter der IP-Adresse 192.168.1.1 zu erreichen. Nach Abschluss der Erstkonfiguration ändert sich jedoch die IP-Adresse! Ab sofort ist der Router nur noch über die unter next_node konfigurierten IP-Adressen erreichbar. Durch langes Drücken auf den Reset-Knopf kann Gluon wieder in den Ausgangszustand versetzt und die Erstkonfiguration wiederholt werden. Viel Spaß beim Experimentieren!