Zielsetzung
Eine Virtuelle Maschine, in der Gluon läuft und die über virtuelle Netzwerkschnittstellen das Freifunk-Netz und das Mesh-Netzwerk zu Verfügung stellt.
Motivation
Die VM kann dann als VPN-Offloader für Freifunk-Access Points dienen, oder als Gateway für andere VMs um Dienste im Freifunk-Netz anzubieten. Und man kann Hostapd dran klemmen und Freifunk ohne extra Access Point anbieten. Oder Freifunk über WLAN-Accesspoints ohne Freifunk-Firmware anbieten. Oder was auch immer.
So geht’s – prinzipiell
Ich setzte voraus dass libvirt und Virt-Manager installiert sind.
Die Gluon-VM erhält drei virtuelle Netzwerkschnittstellen mit folgenden Funktionen:
- Internetzugang
- Freifunk-Client-Netzwerk: Für den direkten Zugang in’s Freifunk-Netz
- Freifunk-Mesh-Netzwerk: Zum Anschluss von anderen Freifunk-Access Points, VM dient als Offloader
Alle drei Netzwerkschnittstellen werden der Einfachheit halber auf dem Server (der Rechner, auf dem die VM läuft) als Bridges ausgeführt:
- br-internet
- br-ff-client
- br-ff-mesh
So geht’s – Schritt für Schritt
- Bridges auf dem Server anlegen
/etc/network/interfaces
:# Internet ### # Prämisse: Internetzugang erfolgt bislang über eth0 # Achung: Alles was bisher über eth0 gemacht wurde (Firewall? Serverdienste?) # muss danach auf br0 umgestellt werden! auto br-internet iface br-internet inet dhcp bridge_stp on bridge_fd 3 bridge_ports eth0 auto eth0 iface eth0 inet manual # Freifunk Clientnetzwerk ### auto br-ff-client iface br-ff-client inet static address 0.0.0.0 bridge_ports none bridge_fd 0 bridge_stp off bridge_waitport 0 # Freifunk Meshnetzwerk ### auto br-ff-mesh iface br-ff-mesh inet static address 0.0.0.0 bridge_ports none bridge_fd 0 bridge_stp off bridge_waitport 0
- Anschließend am Besten den Server neu starten um zu prüfen, ob alle Dienste die Umstellung von eth0 auf br-internet verkraftet haben.
- Von deiner Freifunk-Community ein passendes Image runterladen und nach
/var/lib/libvirt/images
kopieren (Daumenregel: Dateiname enthält „x86“ und „img“, z.B. „gluon-ffin-v2017.1.7-10+4-x86-64.img.gz“. Wenn das Image, wie hier, noch gepackt ist, gleich noch entpacken. -
Virt-Manager starten
-
„Neue Virtuelle Maschine erstellen“
-
„vorhandenes Festplatten-Abbild importieren“ -> Gluon-Image auswählen
-
Betriebssystemtyp: „Linux“, Version: „Wheezy (or later)“
-
Speicher: 64 MByte, CPU: 1
-
Name: Gluon-VM, „Konfiguration bearbeiten vor Installation“: Ja
-
„Abschließen“
-
Disk 1: Unter „Erweiterte Optionen“ den Festplattenbus auf VirtIO sellen
-
NIC: „Namen des gemeinsam verwendeten Geräts angeben“: br-internet
-
„Installation beginnen“
-
- In der VM sollte nach wenigen Sekunden Gluon laufen und auf die Ersteinrichtung per Browser warten. Standardmäßig lauscht Gluon dazu auf der IP-Adresse 192.168.1.1. Da mein Heimnetzwerk aber im Bereich 192.168.3.xxx liegt ändere ich diese Adresse in der VM auf irgendwas in meinem Adressbereich ab:
ifconfig br-setup 192.168.3.200
- Mit dem Browser auf 192.168.3.200 gehen und Gluon einrichten. Hier unbedingt Mesh-VPN einschalten, der Rest ist egal.
- Nach der Ersteinrichtung die VM ausschalten und im Virt-Manager zwei neue Netzwerkschnittstellen zur VM hinzufügen. Auf diese wird später das Freifunk-Clientnetz und das Mesh-Netzwerk gelegt.
- „Hardware hinzufügen“, „Network“, „Network Source“: br-ff-client
- „Hardware hinzufügen“, „Network“, „Network Source“: br-ff-mesh
- Die VM starten
- In der Gluon-VM das Mesh-Netzwerk über eth1 raus leiten:
uci set network.client.ifname='bat0' uci set network.mesh_lan=interface uci set network.mesh_lan.ifname="eth1" uci set network.mesh_lan.mesh=bat0 uci set network.mesh_lan.proto=batadv uci commit network
-
…und das Freifunk-Client-Netzwerk über eth2 raus leiten:
uci set network.client.ifname="bat0 eth2" uci commit network
- Die Gluon-VM neu starten.
- Prüfen, ob die Netzwerkschnittstellen in Gluon in Virt-Manager den richtigen Bridges zugeordnet sind. Dazu am Besten in der Gluon-VM mit
brctl show
nachsehen, welche Netzwerkschnittstelle welcher Bridge zugeordnet ist (z.B. eth2 zu br-client). Dann mitifconfig
schauen, welche MAC-Adresse die Netzwerkschnittstelle hat. In Virt-Manager kann dann die Netzwerkschnittstelle anhand der MAC-Adresse der passenden Bridge (z.B. eth0 -> br-internet, eth1 -> br-ff-mesh, eth2 -> br-ff-client) zuordnen. - Nochmal die Gluon-VM neu starten, fertig.