Freifunk:Mesh-VPN Gateway-Server einrichten: Unterschied zwischen den Versionen
| (20 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
| Zeile 30: | Zeile 30: | ||
Als Resultat sollte bei Ausführung von "sudo netstat -tulpn" keine Programme außer sshd und vielleicht dhclient angezeigt werden. | Als Resultat sollte bei Ausführung von "sudo netstat -tulpn" keine Programme außer sshd und vielleicht dhclient angezeigt werden. | ||
== Kimsufi / OVH Extras == | |||
Bei den Servern von Kimsufi / OVH gibt es ein paar Kleinigkeiten zu beachten. Zum einen ist hier nicht sudo vorinstalliert, zum anderen benutzen die einen eigenen Kernel, den sie Rechnern vorinstallieren. Also müssen diesbezüglich erst einmal ein paar Vorkehrungen getroffen werden: | |||
* <code>apt-get install sudo linux-image-amd64</code> | |||
* <code>rm /etc/grub.d/06_OVHkernel</code> | |||
* <code>update-grub</code> | |||
Danach sollte die VM neu gestartet werden um sicherzustellen, dass der neue Kernel auch wirklich bootet. | |||
== APT Sources hinzufügen == | == APT Sources hinzufügen == | ||
| Zeile 35: | Zeile 45: | ||
Wir benötigen die Sources für fastd und batman-adv: | Wir benötigen die Sources für fastd und batman-adv: | ||
* <code>nano /etc/apt/sources.list</code> | * Mit <code>nano /etc/apt/sources.list</code> folgendes hinzufügen: | ||
<pre> | <pre> | ||
deb http://security.debian.org/ wheezy/updates main contrib non-free | deb http://security.debian.org/ wheezy/updates main contrib non-free | ||
| Zeile 58: | Zeile 68: | ||
== Pakete installieren == | == Pakete installieren == | ||
* <code>apt-get update</code> | * <code>apt-get update</code> | ||
* <code>apt-get install batctl batman-adv-dkms fastd bridge-utils</code> | * <code>apt-get install batctl batman-adv-dkms fastd bridge-utils ntp git htop iftop vnstat</code> | ||
* <code>echo "batman-adv" >> /etc/modules</code> | * <code>echo "batman-adv" >> /etc/modules</code> | ||
* Zu beachten: Alle Pakete werden im folgenden eingerichtet. NTPs Standard-Config ist in Ordnung. | |||
== Netzwerk Grundkonfiguration == | == Netzwerk Grundkonfiguration == | ||
| Zeile 74: | Zeile 85: | ||
net.ipv6.conf.all.forwarding=1 | net.ipv6.conf.all.forwarding=1 | ||
net.ipv6.conf.all.autoconf = | net.ipv6.conf.all.autoconf = 1 | ||
net.ipv6.conf.default.autoconf = 0 | net.ipv6.conf.default.autoconf = 0 | ||
net.ipv6.conf.eth0.autoconf = | net.ipv6.conf.eth0.autoconf = 1 | ||
net.ipv6.conf.all.accept_ra = | net.ipv6.conf.all.accept_ra = 1 | ||
net.ipv6.conf.default.accept_ra = 0 | net.ipv6.conf.default.accept_ra = 0 | ||
net.ipv6.conf.eth0.accept_ra = | net.ipv6.conf.eth0.accept_ra = 1 | ||
</pre> | </pre> | ||
* Danach neu laden: <code>sysctl -p /etc/sysctl.conf</code> | * Danach neu laden: <code>sysctl -p /etc/sysctl.conf</code> | ||
| Zeile 308: | Zeile 319: | ||
== Fastd-Config == | == Fastd-Config == | ||
* <code>mkdir /etc/fastd/freifunk-{saar,lux}/</code> | * <code>mkdir /etc/fastd/freifunk-{saar,lux}/</code> | ||
* Config-Dateien anlegen und entsprechenden Inhalt reinkopieren: | * Config-Dateien anlegen und entsprechenden Inhalt reinkopieren: | ||
<pre> | |||
log level warn; | |||
log to syslog level info; | |||
hide ip addresses yes; | |||
hide mac addresses yes; | |||
interface "xxxxMESH"; | |||
method "salsa2012+umac"; # new method (faster) | |||
method "salsa2012+gmac"; | |||
bind any:10000 interface "eth0"; | |||
include "secret.conf"; | |||
mtu 1426; # 1492 - IPv4/IPv6 Header - fastd Header... | |||
include peers from "peers"; | |||
include peers from "peers-gw"; | |||
secure handshakes yes; | |||
on up " | |||
ip link set dev xxxxMESH address ca:fe:ba:be:00:0X | |||
ip link set dev xxxxMESH up | |||
"; | |||
</pre> | |||
* Secret Keys aus den Repos besorgen und in secret.conf schreiben | * Secret Keys aus den Repos besorgen und in secret.conf schreiben | ||
* Neuen SSH-Key anlegen, als Deploy Key in die Gitlab-Projekte https://git.hacksaar.de/FreifunkSaar/mesh-vpn-peers und https://git.hacksaar.de/FreifunkSaar/mesh-vpn-peers-lux eintragen. | * Neuen SSH-Key anlegen mit <code>ssh-keygen -t ecdsa</code>, als Deploy Key in die Gitlab-Projekte https://git.hacksaar.de/FreifunkSaar/mesh-vpn-peers und https://git.hacksaar.de/FreifunkSaar/mesh-vpn-peers-lux eintragen. | ||
* Mesh-VPN-Peers-Verzeichnis als "peers" klonen: <code>git clone git@hacksaar.de:FreifunkSaar/mesh-vpn-peers.git peers</code> bzw <code>git clone git@hacksaar.de:FreifunkSaar/mesh-vpn-peers-lux.git peers</code> jeweils im entsprechende Verzeichnis | * Mesh-VPN-Peers-Verzeichnis als "peers" klonen: <code>git clone git@hacksaar.de:FreifunkSaar/mesh-vpn-peers.git peers</code> bzw <code>git clone git@hacksaar.de:FreifunkSaar/mesh-vpn-peers-lux.git peers</code> jeweils im entsprechende Verzeichnis | ||
* Mesh-GW-VPN-Peers-Verzichnis als "peers-gw" klonen <code>git clone git@hacksaar.de:freifunk-gateway-admins/Mesh-VPN-Peers-GW.git peers-gw</code> in beiden Verzeichnissen. | |||
* Feuer!: <code>sudo service fastd start</code> | * Feuer!: <code>sudo service fastd start</code> | ||
== DNS, DHCP und RA-Server == | == DNS, DHCP und RA-Server dnsmasq == | ||
* Installieren: <code>apt-get install | * Installieren: <code>apt-get install dnsmasq</code> | ||
=== | * /etc/dnsmasq.conf | ||
=== | <pre> | ||
bogus-priv | |||
no-resolv | |||
no-poll | |||
log-facility=/dev/null | |||
server=8.8.8.8 | |||
server=8.8.4.4 | |||
read-ethers | |||
expand-hosts | |||
</pre> | |||
* /etc/dnsmasq.d/ffsaar | |||
<pre> | |||
local=/ffsaar/ | |||
interface=saarBR | |||
domain=ffsaar | |||
dhcp-range=10.24.XXX.1,10.24.XXX.254,180 | |||
dhcp-range=fd4e:f2d7:88d2:ffff::,64,180,ra-names | |||
</pre> | |||
* /etc/dnsmasq.d/fflux | |||
<pre> | |||
local=/fflux/ | |||
interface=luxBR | |||
domain=fflux | |||
dhcp-range=10.24.XXX.1,10.24.XXX.254,180 | |||
dhcp-range=fd4e:f2d7:88d2:fffe::,64,180,ra-names | |||
</pre> | |||
* /etc/hosts | |||
<pre> | |||
# Freifunk Sachen | |||
10.24.192.2 static.services.ffsaar ntp.services.ffsaar | |||
fd4e:f2d7:88d2:ffff::2 static.services.ffsaar ntp.services.ffsaar | |||
10.24.192.1 router.ffsaar node.ffsaar local.ffsaar knoten.ffsaar my.ffsaar | |||
fd4e:f2d7:88d2:ffff::1 router.ffsaar node.ffsaar local.ffsaar knoten.ffsaar my.ffsaar | |||
</pre> | |||
=== isc-dhcp-server (in Zukunft mal umzustellen) === | |||
* /etc/dhcp/dhcpd.conf: (Komplett ersetzen) | * /etc/dhcp/dhcpd.conf: (Komplett ersetzen) | ||
<pre> | <pre> | ||
| Zeile 350: | Zeile 428: | ||
* Neu starten: <code>service isc-dhcp-server restart</code> | * Neu starten: <code>service isc-dhcp-server restart</code> | ||
== | == IPTables == | ||
* installieren: <code>apt-get install iptables-persistent</code> | |||
* /etc/iptables/rules.v4 | |||
<pre> | |||
*mangle | |||
:PREROUTING ACCEPT [0:0] | |||
:INPUT ACCEPT [0:0] | |||
:FORWARD ACCEPT [0:0] | |||
:OUTPUT ACCEPT [0:0] | |||
:POSTROUTING ACCEPT [0:0] | |||
COMMIT | |||
*nat | |||
:PREROUTING ACCEPT [0:0] | |||
:INPUT ACCEPT [0:0] | |||
:OUTPUT ACCEPT [0:0] | |||
:POSTROUTING ACCEPT [0:0] | |||
-A POSTROUTING -o tun0 -j MASQUERADE | |||
COMMIT | |||
</pre> | |||
== Exit-VPN == | |||
abhängig von der Config einzurichten | |||
== Knoteninformationen (Alfred...) == | == Knoteninformationen (Alfred...) == | ||
'''Dieser Punkt befindet sich aktuell in der Erstellung und wird später noch auf die anderen Kapitel aufgeteilt --[[Benutzer:Rugosh|Rugosh]] ([[Benutzer Diskussion:Rugosh|Diskussion]]) 16:38, 22. Feb. 2015 (CET)''' | '''Dieser Punkt befindet sich aktuell in der Erstellung und wird später noch auf die anderen Kapitel aufgeteilt --[[Benutzer:Rugosh|Rugosh]] ([[Benutzer Diskussion:Rugosh|Diskussion]]) 16:38, 22. Feb. 2015 (CET)''' | ||
| Zeile 363: | Zeile 463: | ||
Benötigte Komponenten: | Benötigte Komponenten: | ||
* Alfred | * Alfred | ||
* | * batadv-vis | ||
installation via | |||
<pre> | |||
sudo apt-get install alfred batadv-vis | |||
</pre> | |||
==== Alfred Konfiguration (saar only) ==== | |||
Zuerst muss alfred und batadv gestopt werden | |||
<pre> | |||
sudo service alfred stop | |||
sudo service batadv-vis stop | |||
</pre> | |||
Anpassen der alfred Konfigruation | |||
<pre> | |||
sudo nano /etc/default/alfred | |||
</pre> | |||
<pre> | |||
# | |||
# /etc/default/alfred | |||
# | |||
# Additional command line options | |||
DAEMON_OPTS="" | |||
# Enable master mode (0/1) | |||
MASTER=0 | |||
# Interface for A.L.F.R.E.D. to listen on. Has to be specified. | |||
INTERFACE=saarBR | |||
# Specify the batman-adv interface configured on the system (default: bat0). | |||
# Use 'none' to disable the batman-adv based best server selection. | |||
BATMANIF=saarBAT | |||
</pre> | |||
Anpassen der batadv-vis Konfuguration | |||
<pre> | |||
sudo nano /etc/default/batadv-vis | |||
</pre> | |||
<pre> | |||
# | |||
# /etc/default/batadv-vis | |||
# | |||
# Specify the batman-adv interface configured on the system (default: bat0). | |||
BATMANIF=saarBAT | |||
</pre> | |||
Starten der Dienste | |||
<pre> | |||
sudo service alfred start | |||
sudo service batadv-vis start | |||
</pre> | |||
Überprüfen ob alles läuft und hoffentlich freuen :-) | |||
==== Alfred Konfiguration ==== | ==== Alfred Konfiguration für saar und lux (aktuell nicht verwendet) ==== | ||
Wir benötigen zuerst einmal zwei Alfred daemons: | Wir benötigen zuerst einmal zwei Alfred daemons: | ||
<pre> | <pre> | ||
| Zeile 504: | Zeile 662: | ||
== To be continued... == | == To be continued... == | ||
* DNSmasq statt radvd, bind, isc-dhcp-server | * DNSmasq statt radvd, bind, isc-dhcp-server | ||
[[Kategorie:Freifunk]] | |||
Aktuelle Version vom 19. Juli 2015, 16:43 Uhr
Unsere Gateways laufen auf Debian 7 Wheezy. Diese Anleitungen orientieren sich an anderen Freifunk-Communities, aber einen sehr nennenswerten Einfluss hat die geniale Dokumentation von Freifunk Mainz, Wiesbaden und Umgebung (http://gluon-gateway-doku.readthedocs.org/de/latest/) gehabt.
Installation
Größtenteils egal, wichtig ist folgendes: Root bekommt kein Passwort, dadurch wird der Root-Login gesperrt und man muss sudo benutzen. Als zu installierende Paketgruppen nutzen wir Debian-Standardutilities und SSH-Server.
SSH einrichten
- Einloggen:
ssh user@gwX.saar.freifunk.de
mkdir .sshecho "dein_ssh_key" > .ssh/authorized_keysnano /etc/ssh/sshd_config- Folgende Änderungen vornehmen:
... PermitRootLogin no ... PasswordAuthentication no ...
- Alte Session aktiv lassen, in neuem Terminal versuchen mit Public Key einzuloggen. Wenn nicht erfolgreich debuggen.
sudo service ssh restart
Überflüssige Pakete deinstallieren
Da wir eben etwas großzügig waren mit der Installation von Paketgruppen müssen wir jetzt exim und nfs-Kram deinstallieren:
sudo apt-get remove exim4* nfs-common rpcbind
Als Resultat sollte bei Ausführung von "sudo netstat -tulpn" keine Programme außer sshd und vielleicht dhclient angezeigt werden.
Kimsufi / OVH Extras
Bei den Servern von Kimsufi / OVH gibt es ein paar Kleinigkeiten zu beachten. Zum einen ist hier nicht sudo vorinstalliert, zum anderen benutzen die einen eigenen Kernel, den sie Rechnern vorinstallieren. Also müssen diesbezüglich erst einmal ein paar Vorkehrungen getroffen werden:
apt-get install sudo linux-image-amd64rm /etc/grub.d/06_OVHkernelupdate-grub
Danach sollte die VM neu gestartet werden um sicherzustellen, dass der neue Kernel auch wirklich bootet.
APT Sources hinzufügen
Wir benötigen die Sources für fastd und batman-adv:
- Mit
nano /etc/apt/sources.listfolgendes hinzufügen:
deb http://security.debian.org/ wheezy/updates main contrib non-free deb-src http://security.debian.org/ wheezy/updates main contrib non-free # fastd deb http://ftp.de.debian.org/debian wheezy-backports main deb http://repo.universe-factory.net/debian/ sid main # alfred deb http://debian.draic.info/ wheezy main deb-src http://debian.draic.info/ wheezy main
- Schlüssel für repo importieren:
gpg --keyserver pgpkeys.mit.edu --recv-key B89033D8gpg -a --export B89033D8 | apt-key add -gpg --keyserver pgpkeys.mit.edu --recv-key 16EF3F64CB201D9Cgpg -a --export 16EF3F64CB201D9C | apt-key add -
Pakete installieren
apt-get updateapt-get install batctl batman-adv-dkms fastd bridge-utils ntp git htop iftop vnstatecho "batman-adv" >> /etc/modules- Zu beachten: Alle Pakete werden im folgenden eingerichtet. NTPs Standard-Config ist in Ordnung.
Netzwerk Grundkonfiguration
Sysctl Einstellungen
- /etc/sysctl.conf
# Freifunk specific settings net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-arptables = 0 net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.ipv6.conf.all.forwarding=1 net.ipv6.conf.all.autoconf = 1 net.ipv6.conf.default.autoconf = 0 net.ipv6.conf.eth0.autoconf = 1 net.ipv6.conf.all.accept_ra = 1 net.ipv6.conf.default.accept_ra = 0 net.ipv6.conf.eth0.accept_ra = 1
- Danach neu laden:
sysctl -p /etc/sysctl.conf
Routing Tables erstellen
- /etc/iproute2/rt_tables (bisherige Einstellungen beibehalten und folgende hinzufügen)
# freifunk 32 saar 33 lux 42 icvpn
Netzwerkinterafaces einstellen
- /etc/network/interfaces (andere Interfaces nach der entsprechenden Konfiguration belassen)
#
# FREIFUNK SAAR
#
auto saarBR
iface saarBR inet static
bridge_ports none
bridge_fd 0
bridge_maxwait 0
address 10.24.192.XXX
netmask 255.255.192.0
# be sure all incoming traffic is handled by the appropriate rt_table
post-up /sbin/ip rule add iif $IFACE table saar priority 3200
pre-down /sbin/ip rule del iif $IFACE table saar priority 3200
# default route is unreachable
post-up /sbin/ip route add unreachable default table saar
post-down /sbin/ip route del unreachable default table saar
# local reachable subnet saar for rt_table lux
post-up /sbin/ip route add 10.24.128.0/18 proto static dev $IFACE table lux
post-down /sbin/ip route del 10.24.128.0/18 proto static dev $IFACE table lux
iface saarBR inet6 static
address fd4e:f2d7:88d2:ffff::XXX
netmask 64
# be sure all incoming traffic is handled by the appropriate rt_table
post-up /sbin/ip -6 rule add iif $IFACE table saar priority 3200
pre-down /sbin/ip -6 rule del iif $IFACE table saar priority 3200
post-up /sbin/ip -6 route add fe80::/64 proto static dev $IFACE table saar
post-down /sbin/ip -6 route del fe80::/64 proto static dev $IFACE table saar
post-up /sbin/ip -6 route add fd4e:f2d7:88d2:ffff::/64 proto static dev $IFACE table saar
post-down /sbin/ip -6 route del fd4e:f2d7:88d2:ffff::/64 proto static dev $IFACE table saar
# ULA route mz for rt_table saar
post-up /sbin/ip -6 route add fd4e:f2d7:88d2:fffe::/64 proto static dev $IFACE table lux
post-down /sbin/ip -6 route del fd4e:f2d7:88d2:fffe::/64 proto static dev $IFACE table lux
allow-hotplug saarMESH
iface saarMESH inet6 manual
pre-up /sbin/modprobe batman_adv
post-up /usr/sbin/batctl -m saarBAT if add $IFACE
post-up /sbin/ip link set dev saarBAT up
allow-hotplug saarBAT
iface saarBAT inet6 manual
pre-up /sbin/modprobe batman-adv
post-up /sbin/brctl addif saarBR $IFACE
post-up /usr/sbin/batctl -m $IFACE it 10000
post-up /usr/sbin/batctl -m $IFACE vm server
post-up /usr/sbin/batctl -m $IFACE gw server 6mbit/6mbit
pre-down /sbin/brctl delif saarBR $IFACE || true
#
# FREIFUNK LUX
#
auto luxBR
iface luxBR inet static
bridge_ports none
bridge_fd 0
bridge_maxwait 0
address 10.24.128.XXX
netmask 255.255.192.0
# be sure all incoming traffic is handled by the appropriate rt_table
post-up /sbin/ip rule add iif $IFACE table lux priority 3300
pre-down /sbin/ip rule del iif $IFACE table lux priority 3300
# default route is unreachable
post-up /sbin/ip route add unreachable default table lux
post-down /sbin/ip route del unreachable default table lux
# local reachable subnet lux for rt_table saar
post-up /sbin/ip route add 10.24.192.0/18 proto static dev $IFACE table saar
post-down /sbin/ip route del 10.24.192.0/18 proto static dev $IFACE table saar
iface luxBR inet6 static
address fd4e:f2d7:88d2:fffe::XXX
netmask 64
# be sure all incoming traffic is handled by the appropriate rt_table
post-up /sbin/ip -6 rule add iif $IFACE table lux priority 3300
pre-down /sbin/ip -6 rule del iif $IFACE table lux priority 3300
post-up /sbin/ip -6 route add fe80::/64 proto static dev $IFACE table lux
post-down /sbin/ip -6 route del fe80::/64 proto static dev $IFACE table lux
post-up /sbin/ip -6 route add fd4e:f2d7:88d2:fffe::/64 proto static dev $IFACE table lux
post-down /sbin/ip -6 route del fd4e:f2d7:88d2:fffe::/64 proto static dev $IFACE table lux
# ULA route saar for rt_table lux
post-up /sbin/ip -6 route add fd4e:f2d7:88d2:ffff::/64 proto static dev $IFACE table saar
post-down /sbin/ip -6 route del fd4e:f2d7:88d2:ffff::/64 proto static dev $IFACE table saar
allow-hotplug luxMESH
iface luxMESH inet6 manual
pre-up /sbin/modprobe batman_adv
post-up /usr/sbin/batctl -m luxBAT if add $IFACE
post-up /sbin/ip link set dev luxBAT up
allow-hotplug luxBAT
iface luxBAT inet6 manual
pre-up /sbin/modprobe batman-adv
post-up /sbin/brctl addif luxBR $IFACE
post-up /usr/sbin/batctl -m $IFACE it 10000
post-up /usr/sbin/batctl -m $IFACE vm server
post-up /usr/sbin/batctl -m $IFACE gw server 6mbit/6mbit
pre-down /sbin/brctl delif luxBR $IFACE || true
- Jedes Vorkommnis von XXX durch einen entsprechenden Wert aus dem Netzplan ersetzen, im Zweifel TobiT fragen
Helfer-Skripte
Es gibt 2 Helferskripte, die eingerichtet werden müssen. check_gateway.sh prüft minütlich, ob das ExitVPN noch steht. autoupdate_fastd_peers updatet die fastd-peers alle 5 Minuten per git.
check_gateway.sh
- /usr/bin/check_gateway.sh:
root@gw2:/etc/fastd/freifunk-lux# less /usr/bin/check_gateway.sh
#!/bin/bash
INTERFACE=tun0 # Set to name of VPN interface
DHCPSERVICE=dnsmasq # Name of DHCP service
BANDWIDTH=XXX # Server bandwidth
shopt -s nullglob
# Test whether gateway is connected to the outer world via VPN
ping -q -I $INTERFACE 8.8.8.8 -c 4 -i 1 -W 5 >/dev/null 2>&1
if test $? -eq 0; then
NEW_STATE=server
else
NEW_STATE=off
fi
# Iterate through network interfaces in sys file system
for MESH in /sys/class/net/*/mesh; do
# Check whether gateway modus needs to be changed
OLD_STATE="$(cat $MESH/gw_mode)"
[ "$OLD_STATE" == "$NEW_STATE" ] && continue
echo $NEW_STATE > $MESH/gw_mode
echo ${BANDWIDTH}MBit/${BANDWIDTH}MBit > $MESH/gw_bandwidth
logger "batman gateway mode changed to $NEW_STATE"
# Check whether gateway modus has been deactivated
if [ "$NEW_STATE" == "off" ]; then
# Shutdown DHCP server to prevent renewal of leases
/usr/sbin/service $DHCPSERVICE stop
fi
# Check whether gateway modus has been activated
if [ "$NEW_STATE" == "server" ]; then
# Restart DHCP server
/usr/sbin/service $DHCPSERVICE start
fi
exit 0
done
if [ "$NEW_STATE" == "server" ]; then
/usr/sbin/service $DHCPSERVICE status 2>&1> /dev/null
if [[ $? -ne 0 ]]
then
/usr/sbin/service $DHCPSERVICE restart
fi
fi
if [ "$NEW_STATE" == "off" ]; then
/usr/sbin/service $DHCPSERVICE status 2>&1> /dev/null
if [[ $? -eq 0 ]]
then
/usr/sbin/service $DHCPSERVICE stop
fi
fi
- Ganz oben bei BANDWIDTH die Serverbandbreite in MBit/s einstellen, damit diese ordentlich via Batman announced werden kann.
- Speichern und mit
chmod +x /usr/bin/check_gateway.shausführbar machen
autoupdate_fastd_keys.sh
- /usr/bin/autoupate_fastd_keys.sh:
#!/bin/bash
# Simple script to update fastd peers from git upstream
# and only send HUP to fastd when changes happend.
# CONFIGURE THIS TO YOUR PEER DIRECTORY
FASTD_PEERS_ARRAY=( "freifunk-saar" "freifunk-lux")
function getCurrentVersion() {
# Get hash from latest revision
git log --format=format:%H -1
}
for FASTD_PEERS in "${FASTD_PEERS_ARRAY[@]}"
do
cd /etc/fastd/$FASTD_PEERS/peers
# Get current version hash
GIT_REVISION=$(getCurrentVersion)
# Automagically commit local changes
# This preserves local changes
git commit -m "CRON: auto commit"
# Pull latest changes from upstream
git fetch
git merge origin/master -m "Auto Merge"
# Get new version hash
GIT_NEW_REVISION=$(getCurrentVersion)
if [ $GIT_REVISION != $GIT_NEW_REVISION ]
then
# Version has changed we need to update
echo "Reload fastd peers"
kill -HUP $(cat /var/run/fastd.$FASTD_PEERS.pid)
fi
done
- Auch dieses Skript ausführbar machen:
chmod +x /usr/bin/autoupdate_fastd_keys.sh
Skripte in crontab eintragen
- In
sudo crontab -efolgende Zeilen anhängen
*/5 * * * * /usr/bin/autoupdate_fastd_keys.sh > /dev/null 2>&1 * * * * * /usr/bin/check_gateway.sh > /dev/null 2>&1
Fastd-Config
mkdir /etc/fastd/freifunk-{saar,lux}/- Config-Dateien anlegen und entsprechenden Inhalt reinkopieren:
log level warn; log to syslog level info; hide ip addresses yes; hide mac addresses yes; interface "xxxxMESH"; method "salsa2012+umac"; # new method (faster) method "salsa2012+gmac"; bind any:10000 interface "eth0"; include "secret.conf"; mtu 1426; # 1492 - IPv4/IPv6 Header - fastd Header... include peers from "peers"; include peers from "peers-gw"; secure handshakes yes; on up " ip link set dev xxxxMESH address ca:fe:ba:be:00:0X ip link set dev xxxxMESH up ";
- Secret Keys aus den Repos besorgen und in secret.conf schreiben
- Neuen SSH-Key anlegen mit
ssh-keygen -t ecdsa, als Deploy Key in die Gitlab-Projekte https://git.hacksaar.de/FreifunkSaar/mesh-vpn-peers und https://git.hacksaar.de/FreifunkSaar/mesh-vpn-peers-lux eintragen. - Mesh-VPN-Peers-Verzeichnis als "peers" klonen:
git clone git@hacksaar.de:FreifunkSaar/mesh-vpn-peers.git peersbzwgit clone git@hacksaar.de:FreifunkSaar/mesh-vpn-peers-lux.git peersjeweils im entsprechende Verzeichnis - Mesh-GW-VPN-Peers-Verzichnis als "peers-gw" klonen
git clone git@hacksaar.de:freifunk-gateway-admins/Mesh-VPN-Peers-GW.git peers-gwin beiden Verzeichnissen. - Feuer!:
sudo service fastd start
DNS, DHCP und RA-Server dnsmasq
- Installieren:
apt-get install dnsmasq - /etc/dnsmasq.conf
bogus-priv no-resolv no-poll log-facility=/dev/null server=8.8.8.8 server=8.8.4.4 read-ethers expand-hosts
- /etc/dnsmasq.d/ffsaar
local=/ffsaar/ interface=saarBR domain=ffsaar dhcp-range=10.24.XXX.1,10.24.XXX.254,180 dhcp-range=fd4e:f2d7:88d2:ffff::,64,180,ra-names
- /etc/dnsmasq.d/fflux
local=/fflux/ interface=luxBR domain=fflux dhcp-range=10.24.XXX.1,10.24.XXX.254,180 dhcp-range=fd4e:f2d7:88d2:fffe::,64,180,ra-names
- /etc/hosts
# Freifunk Sachen 10.24.192.2 static.services.ffsaar ntp.services.ffsaar fd4e:f2d7:88d2:ffff::2 static.services.ffsaar ntp.services.ffsaar 10.24.192.1 router.ffsaar node.ffsaar local.ffsaar knoten.ffsaar my.ffsaar fd4e:f2d7:88d2:ffff::1 router.ffsaar node.ffsaar local.ffsaar knoten.ffsaar my.ffsaar
isc-dhcp-server (in Zukunft mal umzustellen)
- /etc/dhcp/dhcpd.conf: (Komplett ersetzen)
ddns-update-style none;
default-lease-time 300;
max-lease-time 300;
authoritative;
log-facility local6;
subnet 10.24.192.0 netmask 255.255.192.0 {
range 10.24.XXX.0 10.24.XXX+3.255;
option routers 10.24.192.ZZZ;
option domain-name-servers 10.24.192.2, 10.24.192.3, 10.24.192.4;
option domain-search "ffsaar";
option ntp-servers 10.24.192.2, 10.24.192.3, 10.24.192.4;
}
subnet 10.24.128.0 netmask 255.255.192.0 {
range 10.24.YYY.0 10.24.YYY+3.255;
option routers 10.24.128.ZZZ;
option domain-name-servers 10.24.128.2, 10.24.128.3, 10.24.128.4;
option domain-search "fflux";
option ntp-servers 10.24.128.2, 10.24.128.3, 10.24.128.4;
}
- XXX, XXX+3, YYY, YYY+3, ZZZ durch richtige Werte ersetzen
- /etc/default/isc-dhcp-server (Zeile INTERFACES ersetzen)
INTERFACES="saarBR luxBR"
- Neu starten:
service isc-dhcp-server restart
IPTables
- installieren:
apt-get install iptables-persistent - /etc/iptables/rules.v4
*mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -o tun0 -j MASQUERADE COMMIT
Exit-VPN
abhängig von der Config einzurichten
Knoteninformationen (Alfred...)
Dieser Punkt befindet sich aktuell in der Erstellung und wird später noch auf die anderen Kapitel aufgeteilt --Rugosh (Diskussion) 16:38, 22. Feb. 2015 (CET)
Alfred wird auf den Gateways benötigt um die Knoteninformationen zu sammeln und aus diesen Informationen eine Knotendatei unter anderem für die Freifunkkarte bauen zu können. Der Server, auf welchem die Knotendatei generiert wird ist hier logisch gesehen der Master die anderen Systeme sind als Slave zu konfigurieren.
Da wir auf unseren Gateways sowohl Saar las auch Lux Freifunk betreiben benötigen wir auch eine Doppelkonfiguration der Knotenerstellung. Dies betrifft sowohl Alfred als auch den Punkt, dass der Master für mehrere Communities Kartendaten erstellen können muss.
Slave Konfiguration
Benötigte Komponenten:
- Alfred
- batadv-vis
installation via
sudo apt-get install alfred batadv-vis
Alfred Konfiguration (saar only)
Zuerst muss alfred und batadv gestopt werden
sudo service alfred stop sudo service batadv-vis stop
Anpassen der alfred Konfigruation
sudo nano /etc/default/alfred
# # /etc/default/alfred # # Additional command line options DAEMON_OPTS="" # Enable master mode (0/1) MASTER=0 # Interface for A.L.F.R.E.D. to listen on. Has to be specified. INTERFACE=saarBR # Specify the batman-adv interface configured on the system (default: bat0). # Use 'none' to disable the batman-adv based best server selection. BATMANIF=saarBAT
Anpassen der batadv-vis Konfuguration
sudo nano /etc/default/batadv-vis
# # /etc/default/batadv-vis # # Specify the batman-adv interface configured on the system (default: bat0). BATMANIF=saarBAT
Starten der Dienste
sudo service alfred start sudo service batadv-vis start
Überprüfen ob alles läuft und hoffentlich freuen :-)
Alfred Konfiguration für saar und lux (aktuell nicht verwendet)
Wir benötigen zuerst einmal zwei Alfred daemons:
sudo service alfred stop sudo cp /etc/default/alfred /etc/default/alfred-saar sudo cp /etc/default/alfred /etc/default/alfred-lux sudo cp /etc/init.d/alfred /etc/init.d/alfred-saar sudo cp /etc/init.d/alfred /etc/init.d/alfred-lux
Alfred muss auf auf dem Slave lediglich auf den MASTER=0 gesetzt werden und das Interface, sowie Batman muss angegeben sein. Die Konfiguration findet in der Konfigurationsdatei /etc/default/alfred-XXX wie folgt statt:
# # /etc/default/alfred-saar # # Additional command line options DAEMON_OPTS="" # Enable master mode (0/1) MASTER=0 # Interface for A.L.F.R.E.D. to listen on. Has to be specified. INTERFACE=br-ff # Specify the batman-adv interface configured on the system (default: bat0). # Use 'none' to disable the batman-adv based best server selection. BATMANIF=saarBAT
# # /etc/default/alfred-lux # # Additional command line options DAEMON_OPTS="" # Enable master mode (0/1) MASTER=0 # Interface for A.L.F.R.E.D. to listen on. Has to be specified. INTERFACE=luxBR # Specify the batman-adv interface configured on the system (default: bat0). # Use 'none' to disable the batman-adv based best server selection. BATMANIF=luxBAT
Anpassen der init.d Dateien für die Alfreds... Nachfolgende Configs erzeugen noch keinen eigenständigen Alfed Socket... Leider muss damit die Alfreds eigene Sockets haben anscheinend alfred selbst mit anderen werten kompaliert werden https://github.com/tcatm/alfred/blob/master/alfred.h oder hier muss eine andere (bessere) Lösung gefunden werden.
# Ausschnitt der anzupassenden Datei /etc/init.d/alfred-saar DESC="A.L.F.R.E.D -> Saar" NAME=alfred NAME2=alfred-saar DAEMON=/usr/sbin/$NAME PIDFILE=/var/run/$NAME2.pid SCRIPTNAME=/etc/init.d/$NAME2 GROUP=alfred OPTIONS="" UMASK=0117 [ -x "$DAEMON" ] || exit 0 # Source defaults. [ -r /etc/default/$NAME2 ] && . /etc/default/$NAME2
# Ausschnitt der anzupassenden Datei /etc/init.d/alfred-lux DESC="A.L.F.R.E.D -> Lux" NAME=alfred-lux DAEMON=/usr/sbin/$NAME PIDFILE=/var/run/$NAME2.pid SCRIPTNAME=/etc/init.d/$NAME2 GROUP=alfred OPTIONS="" UMASK=0117 [ -x "$DAEMON" ] || exit 0 # Source defaults. [ -r /etc/default/$NAME2 ] && . /etc/default/$NAME2
Starten der neuen Alfreds
sudo service alfred-saar start sudo service alfred-lux start
Nun testen ob alles wie gewünscht funktioniert und erst nach einem erfolgreichen Test die nun nicht mehr benötigten Daten löschen.
sudo rm /etc/default/alfred sudo rm /etc/init.d/alfred.conf
batadv-vis =
TODO
Master Konfiguration
Benötigte Komponenten:
- Alfred
- Alfred-JSON
- Batman
Alfred Konfiguration
Alfred muss auf auf dem Slave lediglich auf den MASTER=1 gesetzt werden und das Interface, sowie Batman muss angegeben sein. Für Details siehe Slave Konfiguration -> Alfred Konfigurieren Achtung: Da auf dem Master aktuell nur ein Batman device läuft, ist hier aktuell kein alfred-lux gestartet, aber vorkonfiguriert
Knotendateigenerierung
- Benötigt auch alias config
- bat2nodes für Kartengenerierung mit mkmap Skript. Checkout newest Version from https://github.com/freifunk-saar/ffmap-backend -> done.
- Cron Eintrag vom mkmap Skript
Alias Konfiguration
Da wir uns für die manuelle Konfiguration des Announcement der Gateway Informationen entschieden haben ist eine Anpassung der Alias Datei für jede neue Gateway erforderlich.
Die Dateien aliases_saar.json und aliases_lux.json befindet sich im bat2nodes Verzeichnis und beinhaltet für jede Gateway einen Alias Eintrag.
Beipiel:
{
"<KENNUNG>1" : {
"name" : "gw1.saar.freifunk.net",
"vpn" : true
},
"<KENNUNG>2" : {
"name" : "gw2.saar.freifunk.net",
"vpn" : true
}
}
batadv-vis =
TODO
alfed-json =
To be continued...
- DNSmasq statt radvd, bind, isc-dhcp-server