Ein Gateway einrichten auf Raspbian

Aus Freifunk Flensburg
Wechseln zu: Navigation, Suche

Dies ist ein Entwurf!! Er funktioniert eventuell an manchen Stellen nicht. Vorweg: Es sollte aufgrund der fehlenden Leistung nur in Tests verwendet werden!

Schritt 1[Bearbeiten]

Installiere als erstes Die nötigen Programme(Batman adv., fastd, libsodium, libuecc) von [1]: http://dl.ffm.freifunk.net/public/packages-raspi/

Dies geht optimal mit 'wget'.

Nun musst diese installieren dazu fuehrst du folgendes aus:

sudo dpkg -i PAKETNAME

Mit Ausnahme von BATMAN adv.!

Batman adv. wird etwas anders installiert. Hierzu brauchst du Kernel Sources welche du mit den folgenden Befehlen bekommst [2]:

# Download von dem nötigen Script:
sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source

# Sollte folgendes nicht vorhanden sein einfach per 'apt-get' nachinstallieren.
sudo rpi-update

# Nun das Script von vorhin:
sudo rpi-source
# Sollte es Fehler geben bitte hier nachschlagen: https://github.com/notro/rpi-source/wiki

Nun kann auch hier die .deb-Datei installiert werden wie oben.

Anschließend muss, da es eventuell noch Fehler gibt, folgendes ausgeführt werden:

cd /usr/src/batman-adv-2013.4.0
dkms remove batman-adv/2013.4.0 --all
dkms add batman-adv/2013.4.0
dkms build batman-adv/2013.4.0
dkms install --force batman-adv/2013.4.0

Nun muss noch bactl installiert werden. Das geht mit:

sudo apt-get install batctl

Wenn du willst kannst du nun noch dnsmasq für DNS und DHCP installieren (Anleitung folgt):

sudo apt-get install dnsmasq

Schritt 2[Bearbeiten]

Nun muss das Ganze eingestellt werden. Als erstes machst du dir die fastd Keys mit (MERKEN!!!):

fastd --generate-key

Dann machst du am besten ein Script mit folgenden Inhalt (basierend auf Wiflix Script)[3]:

#!/bin/bash
IP (IP welche im FF genutzt wird): '
read lan_ip

echo 'MAC welche das GW im FF haben soll: '
read vpn_mac

echo 'Privaten Fastd vom vorherigen Befehl: '
read vpn_secret

mkdir -p /etc/fastd/vpn/
cd /etc/fastd/vpn/

tee fastd.conf <<DELIM
 log to syslog level warn;
 interface "vpn-mesh";
 method "salsa2012+gmac"; # new method, between gateways for the moment (faster)
 bind 0.0.0.0:10000;
 hide ip addresses yes;
 hide mac addresses yes;
 include "secret.conf";
 mtu 1426;
 include peers from "peers";
 on up "
  ifup bat0 --force
  ip link set address $vpn_mac up dev \$INTERFACE
 ";
 DELIM
 echo 'secret "'$vpn_secret'";' > secret.conf


Hier wird nicht genatet!!!

Um die Nodes zu verbinden per Fastd musst du eine (externe) IP (bei nur einem GW) in die Firmware einbauen. Da gehört der Public(Öffentliche) Key hin. In die Dateien (welche keine Endung benötigen) kommt folgendes hinein:

#NAME DES NODE
key "KEY DES NODE";

Wir machen das in dem wir auf Github eine Repo haben und diese beim install in den Ordner '/etc/fastd/vpn/peers/' clonen und anschließend folgendes Script in dem Ordner auführen lassen per CronJob [4]:

#!/bin/sh
# hop into correct directory to avoid cron pwd sucks
cd $(dirname $0)
# function to get the current sha-1
getCurrentVersion() {
git log --format=format:%H -1
}
# get sha-1 before pull
revision_current=$(getCurrentVersion)
git pull -q
# get sha-1 after pull
revision_new=$(getCurrentVersion)
# if sha-1 changed, make fastd reload the keys
if [ "$revision_current" != "$revision_new" ]
then
kill -HUP $(pidof fastd)
fi

Starten könnt ihr Fastd mit:

sudo fastd -d -c /etc/fastd/vpn/fastd.conf

Schritt 3[Bearbeiten]

Nun wollen wir den Pi noch in der Map anzeigen. Dazu musst du zuerst Alfred installieren. Alfred downloadest du dir als Source von folgender Seite runter:

http://www.open-mesh.org/projects/open-mesh/wiki/Download

Um dieses nun zu bauen entpackst du den Source Code und führst in diesem Ordner folgendes aus:

#1.
make CONFIG_ALFRED_GPSD=n

#2.
sudo make install CONFIG_ALFRED_GPSD=n

Das sorgt dafür das keine Geokoordinaten auf der Map sind.

Damit angezeigt wer welche Links da sind müssen folgende Dienste dauerhaft laufen:

batadv-vis -si bat0
alfred -i bat0

Dies machst du am besten in dem du folgendes in die Datei /etc/network/interface einfügst:

post-up start-stop-daemon -b --start --exec /usr/local/sbin/alfred -- -i bat0;
post-up start-stop-daemon -b --start --exec /usr/local/sbin/batadv-vis -- -si bat0;

Nun sollte dein Pi ein Gateway sein.

Schritt 4[Bearbeiten]

Nun muss nur noch ein reboot gemacht werden. Dies wird mit folgendem gemacht:

sudo reboot

Externe Quellen[Bearbeiten]

[1] Klaus_Dieter (IRC: irc.hackint.eu | Channel: #gluon)

[2] https://github.com/notro/rpi-source/wiki

[3] Wiflix (IRC: irc.lugfl.de | Channel: #freifunk-flensburg)

[4] https://github.com/freifunk-flensburg/fffl-fastd-peers/blob/master/reloadPeers.sh