Freifunk Paderborn/gluon-x86
Aufsetzen eines x86 basierten Knotens
Das Ziel dieser Anleitung ist:
- Aufsetzen eines x86 basierten Knotens mittels kvm
- Herausführen der Netze
- Wan
- Mesh
- Client
- Brücken der Netze auf die getagten Vlans des Hosts
Hinweis: Auf der lokalen Konsole wird ein US-Tastaturlayout erwartet.
Warnung: Diese Anleitung ist aktuell nicht vollständig und auch nicht fehlerfrei. Es fehlen z.B. die Befehle zum übernehmen der Änderungen (wie service networking reload
, usw.). Für eventuell entstehende Schäden übernimmt der Autor keine Haftung.
Image organisieren
Das benötigt Image entweder aus der Quelle des geringsten Misstrauens herunterladen, oder selber compilieren.
Nutzen von KVM
Hinweis: Hier wird Debian 8 (Jessie) als Host verwendet. Bei anderen Linux-Distributionen können sich Befehle und/oder Pakete unterscheiden.
Übersicht zu den Interfaces
Hier eine Übersicht zu den verwendeten Netzwerk-Interfaces
Node
- mesh = eth0
- wan = eth1
- client = eth2
Host
- br-lan = eth0
- br-mesh = eth0.2
- br-client = eth0.3
Hinweis: br-lan ist die Brücke in das private Lan, da der Host weiterhin aus diesem erreichbar sein soll, bekommt aus diesem eine IP. Aus den anderen beiden Netzen bekommt er zur Sicherheit keine IP. Auch ist zu beachten, dass der Switch/Router an dem der Host angebunden ist, 802.1q vlans unterstützt und für die Weiterverteilung entsprechend konfiguriert ist.
Benötigt
- Host mit qemu-kvm
- Grafische Oberfläche mit installiertem virt-manager (z.B. ein externer Client oder der Host selber)
- Das Image: x86-kvm_guest.img.gz
Vorbereitung
Als Vorbereitung müssen die Netzwerkbrücken auf dem Host angelegt werden.
Hierzu werden die Pakete bridge-utils
und vlan
benötigt.
Anschließend können volgende Eintragungen in der /etc/network/interfaces
durchgeführt werden:
auto br-lan iface br-lan inet static address 192.168.0.50 netmask 255.255.255.0 network 192.168.0.0 gateway 192.168.0.1 bridge_ports eth0 bridge_stp no bridge_fd 0.0 auto br-mesh iface br-mesh inet manual bridge_ports eth0.2 bridge_stp no bridge_fd 0.0 #iface br-mesh inet6 manual auto br-client iface br-client inet manual bridge_ports eth0.3 bridge_stp no bridge_fd 0.0 #iface br-client inet6 manual
Damit der Host nicht per IPv6 auf den Interfaces lauscht, muss IPv6 für die Interfaces in /etc/sysctl.conf
deaktiviert werden.
net.ipv6.conf.eth0.disable_ipv6 = 1 net.ipv6.conf.br-mesh.disable_ipv6 = 1 net.ipv6.conf.br-client.disable_ipv6 = 1
Einrichten der VM
Die Vorbereitungen sind abgeschlossen, nun können wir die VM aufsetzen.
Image verschieben und entpacken
Zuerst verschieben wir das Image in den Ordner für die VMs und entpacken es dort. Das Standartverzeichnis ist /var/lib/libvirt/images
.
mv gluon-ffpb-0.6.2~exp20150519-x86-kvm_guest.img.gz /var/lib/libvirt/images cd /var/lib/libvirt/images tar -zvxf gluon-ffpb-0.6.2~exp20150519-x86-kvm_guest.img.gz
Hinweis: Hier kann auch jedes belibige Verzeichnis genutzt werden, dieses muss dann nur hinterher im Virtual Machine Manager unter Bearbeiten->Verbindungsdetails->Speicher
Hinzugefügt werden, damit das Image ausgewählt werden kann.
VM erstellen
Hier geht es nun weiter mit dem Virtual Machine Manager.
Neue Virtuelle Maschine erstellen
Vorhandenes Festplatten-Abbild importieren
- Speicherpfad auswählen (
Durchsuchen
und das Image auswählen), Betriebssystemtyp =Linux
, Version =Debian Wheezy
(Hier habe ich einfach Debian Wheezy gewählt, da OpenWrt nicht in der Auuswahl steht, es funktioniert, aber evtl. macht eine andere Wahl mehr Sinn) - Speicher =
512
MB, CPU =1
- Einen sinnvollen Namen vergeben und
Konfiguration bearbeiten vor der Installation
auswählenErweitert
Network source =Name des gemeinsam verwendeten Gerätes angeben
, Brücken-Name =br-lan
- Wenn gewünscht, kann nun noch die MAC-Adresse angepasst werden
NIC ...
, Device model =virtio
Disc 1
,Erweiterte Optionen
, Festplattenbus =VirtIO
Boot Options
:Virtuelle Maschine beim Start des Hosts starten
Hardware hinzufügen
Network
- Network source =
Name des gemeinsam verwendeten Gerätes angeben
, Brücken-Name =br-mesh
, Device model =virtio
- Letzten Schritt für
br-client
wiederholen Console
Installation beginnen
Tipps & Tricks
- Umstellen der Konsole auf Serial:
Anzeigen->Textkonsolen->Serial1
Bekannte Probleme
Durch deaktivieren von IPv6 auf den verwendeten Interfaces, treten folgende Probleme nicht mehr auf:
- Host lauscht per IPv6 auf den mesh und client Interfaces (Sicherheitsproblem, nicht gewünscht, ...)
- Dauerhaft ein Client, obwohl keiner verbunden ist (evtl. Host oder Router)
Mittels VM-Ware vSphere
Die benötigten Schritte hier in Kürze:
- Konfiguration->Netzwerk die benötigten Netzwerke anlegen
- *.vmdk Datei auf den Datenstore hochladen
- Neue virtuelle Maschine erstellen
- Benutzerdefiniert
- Name vergeben
- Zielspeicher auswählen (auf dem sich das Image befindet)
- Linux, Anderes Linux-System (32bit)
- CPU=1
- Arbeitsspeicher = 512MB (Welche Größe ist hier sinnvoll?)
- 3 Netzwerkkarten, Netzwerke auswählen
- Vorhandene virtuelle Festplatte verwenden,
- Fertig
- Configinterface liegt auf eth0
Notwendige Änderungen am Node
Da in den neueren Versionen bereits 2 Interfaces vorhanden sind, hat sich der Konfigurationsaufwand hier etwas verringert.
Hier sollte vorher kontrolliert werden, dass die Interfaces im Host auch der richtigen Bridge zugeordnet sind.
Setup-Interface auf eth2 setzen
echo 'eth2' > /lib/gluon/core/sysconfig/setup_ifname
Mesh on Lan aktivieren
uci set network.mesh_lan.auto='1'
(Kann auch über das Webinterface geschehen)
eth2 zur Client Bridge hinzufügen
uci set network.client.ifname='eth2 bat0'
Änderungen speichern
uci commit network