Freifunk Paderborn/gluon-x86

Aus wiki.freifunk.net
Zur Navigation springenZur Suche springen

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.

  1. Neue Virtuelle Maschine erstellen
  2. Vorhandenes Festplatten-Abbild importieren
  3. 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)
  4. Speicher = 512MB, CPU = 1
  5. Einen sinnvollen Namen vergeben und
    • Konfiguration bearbeiten vor der Installation auswählen
    • Erweitert 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
  6. NIC ..., Device model = virtio
  7. Disc 1, Erweiterte Optionen, Festplattenbus = VirtIO
  8. Boot Options: Virtuelle Maschine beim Start des Hosts starten
  9. Hardware hinzufügen
    • Network
    • Network source = Name des gemeinsam verwendeten Gerätes angeben, Brücken-Name = br-mesh, Device model = virtio
  10. Letzten Schritt für br-client wiederholen
  11. Console
  12. 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:

  1. Konfiguration->Netzwerk die benötigten Netzwerke anlegen
  2. *.vmdk Datei auf den Datenstore hochladen
  3. Neue virtuelle Maschine erstellen
  4. Benutzerdefiniert
  5. Name vergeben
  6. Zielspeicher auswählen (auf dem sich das Image befindet)
  7. Linux, Anderes Linux-System (32bit)
  8. CPU=1
  9. Arbeitsspeicher = 512MB (Welche Größe ist hier sinnvoll?)
  10. 3 Netzwerkkarten, Netzwerke auswählen
  11. Vorhandene virtuelle Festplatte verwenden,
  12. Fertig
  13. 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