FFGT-Gluon-x86-Offloader

Quick-and-dirty, wie man einen Gluon-Offloader in einer KVM an den Start bekommt …

Das Nadelöhr bei Gluon-basierten Netzen sind ja einerseits die CPUs in den Knoten, andererseits die CPUs der sogenannten Gateways. Um das lokale Nadelöhr anzugehen, bietet es sich an, einen »Offloader« auf x86-Hardware zu verwenden. Im Folgenden die Schritte, um dies auf einem Intel NUC unter Ubuntu Server zu machen …

Infos zum Netzwerksetup: em1 (Debian: eth0) hängt an einem VLAN-fahigen Switch. Auf VLAN 9 besteht direkter Kontakt zum DSL-Router, ansonsten ist das LAN ungetagged. Dementsprechend, da das Freifunk-Gütersloh-Image dies auch so erwartet, ist eth0 der VM das LAN, eth1 ist dann br-wan. Hier kommt eine aktuelle Einschränkung zum Tragen: da br-lan für die Konfuguration verwendet wird, sollte Internetzugang bestehen und ein DHCP-Server IP-Adressen verteilen. Das ist insofern widersprüchlich, da br-lan nachher dazu dient, entweder das anliegende LAN komplett ins Freifunk-Netz zu verbinden oder, mit aktiviertem »Mesh-on-LAN«, andere, mit »Mesh-on-WAN« in diesem LAN-Segment laufende Freifunk-Knoten, gesammelt über einen VPN-Link ins Mesh zu verbinden. Wir werden in einer der nächsten Firmwareüberarbeitungen dies ändern, sodaß br-wan für die Konfiguration benutzt würde, schließlich ist dies nachher auch der Internet-Uplink. (An »echten« Knoten steckt man bei Gluon das »LAN-Kabel« zur Konfiguration in die gelben Ports, für den Wirkbetrieb in den blauen. Umstecken bei einer VM ist aber etwas schwierig ;)) Sollte in br-lan kein DHCP-Server und/oder kein Internet-Zugang existieren, wird die »Expresskonfiguration« über setup.4830.org nicht funktionieren; für den Fall lauscht die VM auf br-wan auf 203.0.113.1/24 sowie 169.254.1.42/16 (APIPA).

Daher ist /etc/network/interfaces wie folgt (für das lokale Setup mit LAN in 192.168.5.0/24) anzupassen:

# The primary network interface
auto em1
iface em1 inet manual
# This is an autoconfigured IPv6 interface
iface em1 inet6 manual

auto br-lan
iface br-lan inet static
    address 192.168.5.103
    netmask 255.255.255.0
    network 192.168.5.0
    gateway 192.168.5.1
    bridge_ports em1
    bridge_stp no
    bridge_fd 0.0

auto br-wan
iface br-wan inet dhcp
    bridge_ports em1.9
    bridge_stp no
    bridge_fd 0.0

Damit das klappt, müssen die Pakete bridge-utils und vlan installiert sein; ferner muß auf dem Host natürlich die KVM-Umgebung (libvirt-* & kvm) vorbereitet sein (hier geschehen durch Paketauswahl »Virtual Machine host« bei der Installation von Ubuntu LTS/Debian).

Als nächstes holen wir uns das Image:

root@rincewind:~# cd /var/lib/libvirt/images/
root@rincewind:/var/lib/libvirt/images# wget firmware.4830.org/experimental/factory/gluon-ffgt-0.7.2~17-x86-kvm.img.gz
root@rincewind:/var/lib/libvirt/images# ls -lh
total 4.1M
-rw-r--r-- 1 root root 4.1M Aug 12 01:02 gluon-ffgt-0.7.2~17-x86-kvm.img.gz
root@rincewind:/var/lib/libvirt/images# gzip -dv gluon-ffgt-0.7.2~17-x86-kvm.img.gz 
gluon-ffgt-0.7.2~17-x86-kvm.img.gz:      92.2% -- replaced with gluon-ffgt-0.7.2~17-x86-kvm.img
root@rincewind:/var/lib/libvirt/images# ls -lh
total 53M
-rw-r--r-- 1 root root 53M Aug 12 01:02 gluon-ffgt-0.7.2~17-x86-kvm.img

Nach diesen Vorarbeiten können wir das Image über den »Virtual Machine Manager« auch schon starten.

Über den VMM geht’s am komfortabelsten, an eine xml-Erzeugung habe ich mich noch nicht herangewagt. Also: neue VM hinzufügen, Image auswählen und OS-Parameter setzen, Namen vergeben und den Haken für weitere Konfiguration vor Start setzen (das 1. Netzwerkinterface muß LAN sein, im Beispiel also auf br-lan hängen), Speicher & CPU-Konfiguration auswählen (512 MB, 1 vCPU sollte reichen, fastd ist single-threaded), dann das 2. Ethernet hinzugügen (br-wan, virtio), Typ des 1. Interfaces auf vitio ändern, schließlich die Installation beginnen lassen.

Man sieht dann den GRUB Bootloader, nach wenigen Sekunden sollte sich dann nichts mehr auf der Console tun. Es ist nun eine root-Shell aktiv, mit der man z. B. die IP-Konfiguration prüfen kann. Ab jetzt ist der Offloader wie ein normaler Knoten zu konfigurieren: man gehe auf setup.4830.org und landet direkt oder nach Klick auf dem Setup-Interface des unkonfigurierten Knotens. Achtung, anders als bei echten Knoten mit WLAN-Hardware funktioniert die automatische Ortung (über die Schaltfläche »Geolocate«) hier nicht: die Koordinaten müssen von Hand eingetragen bzw. über die eingebundene Karte ermittelt werden. Ansonsten funktioniert die Installation des Offloaders aber wie in der Anleitung beschrieben.

Screenshot

Und *schwupps* ist das ganze LAN im Freifunk-Netz ;)

Hier muß man nun unterscheiden, ob man den Offloader verwenden will, um ein (WLAN-) Client-Netz ins Freifunknetz zu verbinden (dann bleibt »Mesh-on-LAN« aus), oder aber als zentrales fast-VPN-Gerät für mehrere »echte« Freifunk-Knoten (dann muß »Mesh-on-LAN« im Expertenmodus eingeschaltet werden; Vorsicht, falls man in dem (V)LAN normale APs stehen hat!).
Apropros Expertenmodus: da man sich ggf. mal auf der VM einloggen möchte, sollte man nach der Koordinateneingabe erst einmal in den Expertenmodus gehen und einen SSH-Key hinterlegen; andere Einstellungen, bis auf ggf. Mesh-on-LAN, sind nicht notwendig.

Und Vorsicht, so eine VM bootet schnell, und nach wenigen Sekunden ist dann das LAN ins Freifunk-Netz gebridged, siehe oben. Und dank globaler IPv6-Adressen sind die Clients, zumindest von anderen FFGT-Geräten, dann auch erreichbar (hatten sie vorher schon v6-Adressen, bleibt das v6-Default-GW ggf. erhalten):

root@luggage:~# ip -6 addr show
1: lo:  mtu 65536 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
3: wlan0:  mtu 1500 qlen 1000
    inet6 2001:bf7:1310:0:c6d9:87ff:fe53:da77/64 scope global noprefixroute dynamic 
       valid_lft 86393sec preferred_lft 14393sec
    inet6 fd42:ffee:ff12:aff:c6d9:87ff:fe53:da77/64 scope global noprefixroute dynamic 
       valid_lft 86384sec preferred_lft 14384sec
    inet6 2001:6f8:900:868b:c6d9:87ff:fe53:da77/64 scope global noprefixroute dynamic 
       valid_lft 2591711sec preferred_lft 604511sec
    inet6 fe80::c6d9:87ff:fe53:da77/64 scope link 
       valid_lft forever preferred_lft forever

Lies: don’t try this in your normal LAN ;)

2 thoughts on “FFGT-Gluon-x86-Offloader

    • Das ist erst einmal nur ein Proof-of-Concept; die 25 MBit/sec des 1043NDv2 sollte das Setup reißen, aber es spielt ja auch die Performance des Gateways mit rein. Ich habe hier nur 25/2,5 (und IPTV knappert schon mal 10 von den 25 MBit/sec im Downstream), damit ist nicht allzu sinnvoll testen …

Comments are closed.