Server als Knoten

Ausgangspunkt ist eine Debian Minimalinstallation Jessy 8.2. Dedizierter Server oder KVM-VM wird vorausgesetzt.

Hostnamen setzen

vi /etc/hostname → nur Namen, nicht FQDN
hostname <neuername>
/etc/init.d/hostname.sh

Pakete installieren

apt-get install bridge-utils iptables-persistent haveged ntpdate sudo 

Mesh-VPN mit fastd

Am besten fastd selber kompilieren. Das ist ziemlich einfach.

adduser --system --group --uid 300 --shell /bin/sh --disabled-password \
   --gecos 'Fast and Secure Tunneling Daemon'\
   --no-create-home --home /etc/fastd fastd

Alternativ kann auch ein zusätzliches Repository für fastd benutzt werden.

/etc/apt/sources.list

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

Anschließend Signierungschlüssel importieren und die Paketliste aktualisieren

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

Verzeichnisstruktur

  mkdir -p /etc/fastd/ffpi/backbone

Gateway aus https://github.com/freifunk-pinneberg/site-ffpi einfügen

Eigner einstellen

 chown -R fastd /etc/fastd
 aptitude install fastd
 fastd --generate-key > /etc/fastd/keys
 chmod 600 /etc/fastd/keys

Die auskommentierte Zeile im up-Script kann erst nach dem 2. Start benutzt werden. Beim Starten wird eine MAC-Adresse automatisch erzeugt, die dann in das Script übernommen werden muss.

<file conf /etc/fastd/ffpi/fastd.conf>

  log level warn;
  log to syslog level debug2;
  interface "mesh-vpn";
  method "salsa2012+umac";
  method "salsa2012+gmac";
  bind 0.0.0.0:10000;
  include "secret.conf";
  secure handshakes yes;
  mtu 1426;
  user "fastd";
  group "fastd";
   
  include peers from "backbone";
   
  on up "  
    ifup bat0 
  # ip link set dev $INTERFACE address <HIER GENERIERTE MAC EINTRAGEN>
    ip link set up dev $INTERFACE
    batctl if add $INTERFACE
  ";

/etc/fastd/ffpi/secret.conf

  secret "<privater schlüssel>";

Der Public Key muss nun wie ein normaler Knoten als Peer auf den Gateways eingetragen werden. Batman

für Gluon 2015.1 und batman_adv 2015.0

Die folgenden Software-Pakete sind nicht im Debian-Standard enthalten, wir kompilieren sie von Hand:

  batman_adv
  batctl
  batman-vis
  alfred
 aptitude install build-essential pkg-config linux-headers-$(uname -r)

batman-adv erstellen

 cd /usr/src
 wget http://downloads.open-mesh.org/batman/stable/sources/batman-adv/batman-adv-2015.0.tar.gz
 tar xzf batman-adv-2015.0.tar.gz
 cd batman-adv-2015.0/
 make
 make install

batctl erstellen

 cd /usr/src
 aptitude install libnl-3-dev
 wget http://downloads.open-mesh.org/batman/stable/sources/batctl/batctl-2015.0.tar.gz
 tar xzf batctl-2015.0.tar.gz
 cd batctl-2015.0
 make
 make install 

Das kernel-Modul muß anschließend geladen werden

 modprobe batman-adv

Zum automatischen Starten dann in /etc/modules eintragen

Überprüfen ob alles soweit geklappt hat:

 $ batctl -v
 batctl 2015.0 [batman-adv: 2015.0]

Netzwerkkonfiguration

Die folgende Datei muß mit den jew. eigenen Adressen konfiguriert werden. Dieses Beispiel ist von ffpi-services abgeleitet.

Die IP-Adresse für die Bridge ist im vornherein mit den Gateway Administratoren zu klären.

/etc/network/interfaces

  auto lo eth0
  iface lo inet loopback
  iface eth0 inet static
          address 10.0.89.120
          netmask 255.255.255.0
          network 10.0.89.0
          broadcast 10.0.89.255
          gateway1 0.0.89.1
          dns-nameservers 108.61.210.58
   
  #Freifunk Pinneberg Bridge-Interface (IPv4 und IPv6)
  #- bridge_ports none sorgt dafür, daß die Brücke auch ohneInterface erstellt wird
  auto br-ffpi
  iface br-ffpi inet6 static
          bridge-ports none
          #iPv6 fde8:21c6:9d82::0000/64
          address unbelegte iPv6 Adresse
          netmask 64
  iface br-ffpi inet static
          #iPv4 10.137.12.1/16
          address unbelegte iPv4 Adresse
          netmask 255.255.0.0
   
  allow-hotplug bat0
  iface bat0 inet6 manual
     pre-up modprobe batman-adv
     pre-up batctl if add mesh-vpn
     up ip link set $IFACE up
     post-up brctl addif br-ffpi $IFACE
     post-up batctl it 10000
     post-up batctl gw client
     pre-down brctl delif br-ffpi $IFACE || true
     down ip link set $IFACE down

Abschluss

Wenn alles richtig gemacht wurde, kann der Server innerhalb des FFPI Netzwerks gepingt werden.