Freifunk Fulda/Service-Host

Aus Magrathea Laboratories e.V.
Wechseln zu: Navigation, Suche


fffd-srv2 ist ein KVM-Host auf dem vServer für Dienste im Freifunk-Netzwerk betrieben werden.

Installation

Die folgenden Abschnitte beschreiben die Installation und Konfiguration des Host-Systems.

Grundinstallation und -einrichtung

Zunächst sollte der Server in einen annehmbaren Grundzustand gebracht werden. Der Server verwenden das Betriebssystem Debian 7 (Wheezy). Ausgehend von der Minimalinstallation sollten die im Artikel Freifunk Fulda/Gateway/Standardconfig beschriebenen Schritte durchgeführt werden.

Backports konfigurieren

Damit die folgenden Schritte erfolgreich durchgeführt werden können, muss das Backports-Repo genutzt werden. Dazu wird die Datei /etc/apt/sources.list.d/backports.list mit folgendem Inhalt erstellt:

deb http://http.debian.net/debian wheezy-backports main

Einwahlknoten mittels fastd und B.A.T.M.A.N

Für den VPN-Zugang von Server zum Gateway wird fastd verwendet. Innerhalb des fastd-Tunnel werden dann mittels batman-adv Routing-Entscheidungen getroffen. Die benötigten Pakete können teilweise aus einem externen Software-Repository installiert werden, das zunächst hinzugefügt werden muss. Dazu wird die Datei /etc/apt/sources.list.d/freifunk.list mit folgendem Inhalt erstellt:

deb http://repo.universe-factory.net/debian/ sid main

Anschließend werden die PGP-Schlüssel für das Repository mit Hilfe der folgenden Kommandos importiert.

gpg --keyserver pgpkeys.mit.edu --recv-key 16EF3F64CB201D9C
gpg -a --export 16EF3F64CB201D9C | apt-key add - 

Nun können die Pakete fastd und bridge-utils installiert werden.

apt-get update
apt-get install fastd bridge-utils

Abhängigkeiten für die Installation von batctl batman-adv

apt-get install checkinstall pkg-config libnl-3-dev linux-headers-amd64 libgps-dev cmake libjansson-dev

Übersetzen von batctl batman-adv

cd /usr/local/src
wget http://downloads.open-mesh.org/batman/releases/batman-adv-2014.4.0/batctl-2014.4.0.tar.gz
wget http://downloads.open-mesh.org/batman/releases/batman-adv-2014.4.0/batman-adv-2014.4.0.tar.gz

tar xvzf batctl-2014.4.0.tar.gz
cd batctl-2014.4.0
make
checkinstall

cd ..

tar xvzf batman-adv-2014.4.0.tar.gz
cd batman-adv-2014.4.0
make
mkdir -p /lib/modules/3.2.0-4-amd64/updates/net      # ggf. kernel version anpassen
checkinstall

cd ..
wget http://downloads.open-mesh.org/batman/stable/sources/alfred/alfred-2014.4.0.tar.gz
tar xvzf alfred-2014.4.0.tar.gz
cd alfred-2014.4.0
make
checkinstall

cd ..
wget https://github.com/tcatm/alfred-json/archive/v0.3.1.tar.gz
tar xvzf v0.3.1.tar.gz
cd alfred-json-0.3.1
cmake CMakeLists.txt
make
checkinstall

Das B.A.T.M.A.N Kernel-Modul soll beim Systemstart automatisch geladen werden. Daher wird folgender Eintrag in der Datei /etc/modules vorgenommen.

batman-adv

fastd konfigurieren

Der VPN-Server fastd muss mit einer initialen Konfiguration versehen werden. Im ersten Schritt werden die benötigten Verzeichnisse erstellt.

mkdir /etc/fastd/fffd-mesh-vpn
mkdir /etc/fastd/fffd-mesh-vpn/fffd-peers-nodes

Anschließend wird die fastd-Konfigurationsdatei /etc/fastd/fffd-mesh-vpn/fastd.conf mit folgendem Inhalt erstellt.

log to syslog level debug;
interface "fffd-mesh-vpn";
method "salsa2012+gmac";
hide ip addresses yes;
hide mac addresses yes;
include "secret.conf";
mtu 1426; # 1492 - IPv4 Header - fastd Header...
include peers from "fffd-peers-backbone";

Der fastd-Server benötigt ein Schlüsselpaar, bestehend aus einem geheimen und einem öffentlichen Schlüssel. Der geheime Schlüssel wird mit folgendem Kommando erstellt.

fastd --generate-key


Anschließend muss der geheime Schlüssel in der Konfigurationsdatei /etc/fastd/fffd-mesh-vpn/secret.conf eingetragen werden. Der Inhalt dieser Datei sollte folgendermaßen aussehen.

secret "**HIER GEHEIMEN SCHLUESSEL EINSETZEN**";

Aus dem geheimen Schlüssel kann der öffentliche Schlüssel mittels des folgenden Kommandos abgeleitet werden.

fastd -c /etc/fastd/fffd-mesh-vpn/fastd.conf --show-key


Damit die Vernetzung der Geräte des Backbone (Gateways, Server, usw.) möglich ist, müssen die öffentlichen Schlüssel der entsprechenden Knoten in Konfigurationsdateien im Unterverzeichnis backbone/ abgelegt werden. Die entsprechenden Konfigurationsdateien befinden sich in einem Git-Repository, das nun gecloned werden muss.

cd /etc/fastd/fffd-mesh-vpn
git clone https://github.com/freifunk-fulda/fffd-peers-backbone.git

Netzwerke Konfigurieren

In der Datei /etc/network/interfaces die folgenden Informationen einfügen:

Hinweis: Damit die Konfiguration des BATMAN Interface funktioniert, ist die Installation von alfred und batadv-vis erforderlich (siehe unten).

# Freifunk Mesh VPN
allow-hotplug fffd-mesh-vpn
iface fffd-mesh-vpn inet manual
	up			ip link set dev $IFACE up address 00:00:ff:fd:00:13
	post-up			ifup fffd-bat
	pre-down		ifdown fffd-bat
	down			ip link set dev $IFACE down

# Freifunk Bridge
auto fffd-br
allow-hotplug fffd-br
iface fffd-br inet static
	bridge_ports		none
	address			10.185.0.13
	netmask			255.255.192.0
iface fffd-br inet6 static
	address			fd00:fffd:fffd::13
	netmask			64

# Freifunk BATMAN
iface fffd-bat inet manual
	up			batctl -m $IFACE if add fffd-mesh-vpn
	up			ip link set dev $IFACE up master fffd-br address 00:00:ff:fd:00:13
	post-up			batctl -m $IFACE it 10000
	post-up			batctl -m $IFACE gw_mode client 20 
	post-up			start-stop-daemon -b --start --exec /usr/local/sbin/alfred -- -i fffd-br -b $IFACE -m
	post-up			start-stop-daemon -b --start --exec /usr/local/sbin/batadv-vis -- -i $IFACE -s
	down			ip link set dev $IFACE down nomaster

Netzwerke starten

Bridge starten

ifup br-fffd

fastd starten

service fastd start

Virtualisierungsumgebung

Zum Betrieb von vServern wird KVM mit libvirt verwendet, welches aus den Paketquellen installiert werden kann:

apt-get install libvirt-bin

Volume Group für Images

Die Images der vServer werden in einer LVM Volume Group verwaltet. Diese muss angelegt werden:

pvcreate /dev/sda2
vgcreate images /dev/sda2

Nun muss die Volume Group als Storage Pool in libvirt konfiguriert werden:

virsh pool-create-as images logical - - /dev/sda2 images /dev/images