Hinweis |
---|
Wir verwendet seit geraumer Zeit Ansible zur Server Konfiguration und der Inhalt dieser Seite wurde nicht weiter gepflegt. |
In diesem Artikel wird beschrieben, wie du einen Server für Freifunk Münsterland als Gateway-Server einrichten kannst.
...
Beim Freifunk Münsterland werden aktuell beide Dienste auf einem Server installiert. Daher ist der genutzte Begriff "Gateway-Server" technisch gesehen nicht ganz richtig.
Installation
Die Wahl der Linux-Distribution
Wir verwenden bisher auf unseren Gateways Debian Wheezy, haben daher auch die meiste Erfahrung damit, wie ein Gateway unter dieser Distribution zu betreiben ist. Es sollte aber auch möglich sein, nach dieser Anleitung ein Gateway unter Ubuntu einzurichten. Bei anderen Distributionen ist deutlich mehr eigene Recherche nötig.
Paketquellen
Wir verwenden folgende zusätzliche Paketquellen auf unseren Servern:
...
die Paketquellen aktualisieren.
Notwendige Pakete
Folgende Pakete müssen nun auf deinem Gateway installiert werden:
...
Tinc wird in der Version 1.11~pre11 benötigt.
Eine für Debian Wheezy geeignete version muss entsprechend https://gist.github.com/mweinelt/efff4fb7eba1ee41ef2d
manuell Kompiliert werden.
Die Installation erfolgt ebenfalls manuell mittels dpkg -i <dateiname>.deb
IP Forwarding aktivieren
Konfigurationsdatei /etc/sysctl.d/forwarding.conf
<file - forwarding.conf>
...
Jetzt solltest du noch einmal rebooten, um diese Änderung zu aktivieren.
batman-adv Kernelmodul automatisch laden
In die Datei /etc/modules
müssen die folgenden Zeilen ergänzt werden um das batman-adv Kernelmodul beim Start des Servers automatisch zu laden:
Codeblock |
---|
batman-adv |
batman-adv Version Prüfen
Nach dem Reboot solltest du die batman-adv Version prüfen. Diese muss derzeit 2013.4.0
sein.
Codeblock |
---|
modinfo batman-adv |
Netzwerkkonfiguration
Das Loopback Interface muss durch die öffentliche IP des Gateway Servers ergänzt werden
...
Um diese Änderung zu aktivieren, startest du das Netzwerk einmal per service networking restart
neu.
IPtables-Regeln
Nun brauchst du noch IPtables-Regeln. Lege dazu die Konfigurationsdatei /etc/iptables.up.rules
an, und trage folgendes ein.
...
Codeblock |
---|
iptables-restore < /etc/iptables.up.rules |
Einrichtung des BGP Daemon
Der Austausch von Routen mit dem Rheinland Backbone erfolgt über BGP.
Hierfür wird der Routing Daemon bird verwendet.
...
Anschließend kann bird mit service bird start
und service bird6 start
gestartet werden.
Die Befehle birdc show protocols
und birdc6 show protocols
zeigen den zustand der Verbindungen an.
Einrichtung des Mesh-VPNs
Für das Mesh-VPN wird fastd eingesetzt. Hierzu erzeugst du als erstes das Konfigurationsverzeichnis:
...
Den Öffentlichen Schlüssel deines Servers schickst du uns, damit wir ihn einpflegen können.
Einrichtung des InterCity VPNs
Das InterCity-VPN wird über Tinc aufgebaut.
Dokumentation im Freifunk Wiki
...
TODO: Update Mechanismus für IC-VPN Hosts ??
IPv6 Router Advertisements einrichten
Alle Gateway-Server teilen das selbe IPv6-Prefix durch Router Advertisements aus. Router Advertisements können maximal ein /64 großes Netz vergeben, weshalb dies hier getan wird.
Lege die Konfigurationsdatei /etc/radvd.conf
mit folgendem Inhalt an:
<file - radvd.conf>
interface br0
{
...
Codeblock |
---|
service radvd restart |
neustarten.
DHCPv4 Server einrichten
Dein Server muss als nächstes IPv4-Adressen vergeben. Erzeuge dafür die Konfigurationsdatei /etc/dhcp/dhcpd.conf
mit folgendem Inhalt:
<file - dhcpd.conf>
default-lease-time 240;
max-lease-time 1200;
...
Codeblock |
---|
service isc-dhcp-server restart |
DHCPv6 Server einrichten
Da Windows die RDNSS-Option aus den Router Advertisements nicht kennt, ist es außerdem nötig, einen DHCP6-Server laufen zu lassen. Da Debian derzeit keine Konfigurationsdateien hierfür anbietet, erstellen wir diese selbst.
Lege folgende Dateien an:
/etc/init.d/isc-dhcp6-server
<file bash isc-dhcp6-server>
#!/bin/sh
#
#
...
Codeblock |
---|
service isc-dhcp6-server start |
InterCity Routen und DNS
Für die nächsten Schritte werden die Repositories https://github.com/freifunk/icvpn-meta
und https://github.com/freifunk/icvpn-scripts
benötigt.
Beide Repositories werden erst einmal mit git in /var
geklont.
...
Codeblock |
---|
/var/icvpn-scripts/mkdns -x muenster -x chaosvpn -x dn42 -s /var/icvpn-meta/ -f bind > /var/tmp/named.conf.icvpn |
DNS-Server einrichten
Wir verwenden als DNS-Server bind9. Lege folgende 2 Konfigurationsdateien an:
/etc/bind/named.conf.options
<file - named.conf.options>
options {
...
Codeblock |
---|
service bind9 restart |
NRPE Daemon einrichten
Die Gateways werden von einem zentralen Nagios Server überwacht.
...
Codeblock |
---|
nagios ALL=NOPASSWD: /usr/sbin/batctl nagios ALL=NOPASSWD: /usr/sbin/birdc nagios ALL=NOPASSWD: /usr/sbin/birdc6 |
Statistiken via Munin
Die Statistiken werden auf den Gateways via Munin erzeugt.
...
neu. Die Statistiken sollten bei dem nächsten Update von Munin auf unserer Seite https:_freifunk-muenster.de/stats/ erscheinen.
Abschluss
Dein Server ist nun für den Betrieb als Gateway für Freifunk Münster eingerichtet. Am besten startest du den Server einmal neu, und kontrolliere, dass alles korrekt hoch kommt.
Logging abschalten
"Freifunk steht unter Anderem für Netzneutralität und ist in keinster Weise an irgendwelchen Nutzer-, Meta-, Irgendwasdaten interessiert. Aus diesem Grund muss den sonst so redseligen Linux Daemonen das Logging abgewöhnt werden." (https://gluon-gateway-doku.readthedocs.org/de/latest/configuration/cleanup.html#logging)
...
Jetzt könnten die Daten auch nicht mehr weitergegeben werden, weil sie gar nicht vorhanden sind.
Bekannte Fehlerbilder
Kernelpanik /-oops - Reboot automatisieren
B.A.T.M.A.N. bereitet häufiger Probleme mit Kernelpanic /-oops. Um das Gateway möglichst schnell wieder verfügbar zu machen, habe ich folgendes eingerichtet:
...
Nicht vergessen! sysctl -p
absetzen, um es auch sofort zu aktivieren.
Erstellen der Datei /etc/init.d/delfastdstat
mit folgendem Inhalt:
<file - delfastdstat>
#! /bin/sh
- BEGIN INIT INFO
- Provides: delfastdstat
- Required-Start: $local_fs $syslog
- Required-Stop: $local_fs
- Default-Start: 2 3 4 5
- Default-Stop: 0 1 6
- Short-Description: delfastdstat
- Description: Loescht fastd-status nach crash
- END INIT INFO
if test -S /tmp/fastd-status
Codeblock |
---|
then
rm /tmp/fastd-status
else
echo NoOp
|
fi
exit 0
- Carry out specific functions when asked to by the system
case "$1" in
Codeblock |
---|
start)
#NoOp
;;
stop)
#NoOp
;;
|
- )
Codeblock |
---|
#NoOp
;;
|
esac
exit 0
</file>
Die Datei mit chmod 755 /etc/init.d/delfastdstat
ausführbar machen und anschließend mit update-rc.d delfastdstat start 1 2 3 4 5 . stop 99 0 1 6 .
aktivieren.
Falls es jetzt zu einem Kernelpanik /-oops kommt, startet das Gateway sofort neu. Vor dem fastd-Start wird der noch existierende Socket /tmp/fastd-status
gelöscht.