Der Anger ist der zentrale Platz in Weißendorf. Er ist Standort der Gemeindeverwaltung und der Freiwilligen Feuerwehr.
Status:
- 05.07.2015: Knoten Weissendorf-VPN-001 und Weissendorf-LocoM2-001 nehmen Betrieb auf
- 13.08.2016: Beide Knoten waren nach Problemen mit der Auto-Update Funktion einige Zeit außer Betrieb.
Knoten:
- Weissendorf-VPN-001
Hardware: TP-Link TL-WR1043ND v2
Position: 1.OG - Weissendorf-LocoM2-001
Hardware: Ubiquiti NanoStation loco M2
Position: 1.OG, Ausrichtung nord-west, Abdeckung Anger, Gemeindehaus und Gerätehaus der Freiwiligen Feuerwehr
Knoten Konfiguration:
Die beiden Knoten Weissendorf-VPN-001 und Weissendorf-LocoM2-001 sind wie folgt konfiguriert:
Der TP-Link Router (TL-WR1043ND v2) übernimmt die Arbeit der Verschlüsselung des Datenverkehrs durch den VPN Tunnel zu den Gateways.
Links:
Wikipedia Artikel https://de.wikipedia.org/wiki/Wei%C3%9Fendorf
- Details
- Geschrieben von: Sebastian
- Kategorie: Router Standorte
Die Kleingartenanlage Kirchfeld befindet sich in Ronneburg im Wohnbebiet "Am Sperlingszaun" neben dem Friedhof. Um diese Gartenanlage mit Freifunk zu versorgen bietet es sich an, einen zentralen Knoten per Mesh aus einem nahegelegenen Neubaublock zu versorgen. Die Entfernung beträgt etwa 150m, es befinden sich aber recht große Laubbäume dazwischen.
Status
- 02. August 2015: Testverbindung von Nanostation M2 im Neubaublock hinter einer Fensterscheibe und einem TP-Link TL-WR841ND v9 auf dem Dach der Gartenlaube. Dabei kam tatsächlich eine mittelmäßige Verbindung zustande, die allerdings auch immer einmal abbrach. Da aber anzunehmen ist, daß sich das mit geeigneterem Equipment (Picostation M2 in Gartenanlage, Nanostation nicht hinter Glas) noch entscheidend verbessern läßt, sollten sich entsprechende Investitionen lohnen.
- Inzwischen wurde eine Picostation und ein Überspannungsschutzadapter gekauft. Wenn die da sind, gehts weiter.
- 22. August 2015: Die Gartenanlage ist nun fertig "verfreifunkt".
Picostation und Überspannungsschutz waren zwar schon lange da, nur die Zeit hat gefehlt oder das Wetter nicht gepaßt. Jetzt ist aber alles installiert:
Als Mast dient ein 3m langer Teleskop-Stiel, an welchen man normalerweise eine Hacke oder einen Rechen anstecken kann. Ganz oben ist die Picostation angebracht (leider fehlt die untere Abdeckung), darunter sieht man den Überspannungsschutz (beides von Ubiquiti). Von Überspannungsschutz führt ein Cat6-Kabel in die Gartenlaube, dort erfolgt die Stromversorgung über den zur Picostation gehörenden PoE-Adapter.
Anbindung
- Da die Gartenanlage über keinen eigenen Internet-Anschluß verfügt ;-) , erfolgt die Anbindung über einen nahegelegenen Neubaublock:
Ganz rechts befindet sich der Knoten Ronneburg-Sperlingszaun-001, weiter links auf einem Balkon Ronneburg-Sperlingszaun-002, von dort gehts per Mesh-Verbindung über 156m durch einige Bäume zum Rbg-Gartenanlage-Kirchfeld. - Ronneburg-Sperlingszaun-001:
Hardware: TP-Link TL-WR841ND v9
Standort: Fenster (innen) Richtung Südosten
Anbindung: DSL 6MBit/s
- Ronneburg-Sperlingszaun-002:
Hardware: Ubiquiti Nanostation M
Standort: Balkon (noch hinter Fensterscheibe) Richtung Westen
Anbindung: Mesh zu Ronneburg-Sperlingszaun-001
- Rbg-Gartenanlage-Kirchfeld:
Hardware: Ubiquity Picostation M2 HP
Standort: Mast an zentral gelegener Gartenlaube
Anbindung: Mesh zu Ronneburg-Sperlingszaun-002
- Details
- Geschrieben von: Jörg
- Kategorie: Router Standorte
<
Einleitung
Das Theater Gera ist sowohl Backbone- als auch normaler Knoten-Standort. Der Aufbau des Backbone-Teils wird in einem separaten Wiki-Eintrag beschrieben.
Knotenstandorte
Kantine
In der Kantine kann die Versorgung der Mitarbeiter und Gäste mit Freifunk durch einen einzelnen Freifunk-Router erfolgen. Ein Netzwerk-Anschluß steht direkt unter der Decke bereits zur Verfügung:
Der Router wird gleich daneben montiert. Als Modell empfiehlt sich ein Ubiquiti UniFi AP Pro.
Kasse
Die Kasse im Eingangsbereich wird primär nur deswegen mit einem Router ausgestattet, weil dort ein Netzwerk-Anschluß vorhanden ist und damit andere Bereiche (Speigelfoyer) versorgt werden können. Das folgende Bild zeigt die Kasse von außen, aus Richtung Spiegelfoyer:
Der Router soll innen an der gezeigten Wand (über dem Fenster) installiert werden. Ein Router wie der Ubiquiti UniFi AP Pro würde ier geneu in die falsche Richtung strahlen (vom Speigelfoyer weg). Deswegen sollte hier ein TP-Link TL-WR1043ND nzum Einsatz kommen, welcher über Rundstrahlantennen verfügt und somit sowohl das Spiegelfoyer als evtl. auch den Eingangsbereich versorgen kann.
Spiegelfoyer
In Spiegelfoyer sollen die Gäste die Möglichkeit erhalten, während Veranstaltungspausen die Freifunk-Dienste zu nutzen. Leider gibt es an der zentralen Bar keinen Netzwerkanschluß:
Deswegen wird zwischen den beiden Monitoren oben ein Router installiert, welcher sich per Mesh mit dem Router in der Kasse verbindet. Auch an dieser Stelle wird ein TP-Link TL-WR1043ND empfohlen.
Beratungsraum
Dieser Raum dient für Beratungen auch mit den verschiedensten Gästen unserer Stadt. Deswegen hilft die Installation eines Freifunk-Routers hier, unser Projekt auch über die städtischen Grenzen hinaus bekannzumachen.
Hier wird ein relativ unauffälliger Ubiquiti UniFi AP Pro zum Einsatz kommen, der Anschluß erfolgt evtl. an einer vorhandenen Netzwerkdose.
Theater-Wohnheim
Das Theaterwohnheim befindet sich auf der gegenüberliegenden Straßenseite der Theaterstraße (gelbes Haus in der Mitte):
Hier werden Gäste des Theaters untergebracht, wie beim Beratungsraum ist dessen Freifunk-Versorgung wichtig für die Steigerung des Bekanntheitsgrades des Projektes und allgemein für eine Aufwertung der Stadt bei Gästen.
Die Anbindung erfolgt über einen Outdoor-Router (Ubiquiti Loco M2), welcher Verbindung zu dem auf dem Dach (im Bild ganz links) installierten Backbone aufnimmt. Im Haus versorgt dann ein TP-Link TL-WR1043ND die Gäste. Dieser mesht drahtlos oder über eine Kabelverbindung mit der Loco M2.
Puppenbühne
Ebenfalls zum Theater gehört die Puppenbühne. Hier wird im Innenbereich ein TP-Link TL-WR1043ND installiert, den Außenbereich versogt eine Ubiquiti Loco M2. Die Anbindung an das restliche Freifunknetz erfolgt über einen vorhandenen DSL-Anschluß.
Installation
Material
Für den Aufbau der Knotenstandorte wird folgendes Material verwendet:
Menge | Bezeichnung | Bemerkungen |
---|---|---|
4 | TP-Link TL-WR1043ND | Kasse, Spiegelfoyer, Wohnheim, Puppentheater |
2 | Ubiquiti Loco M2 | Wohnheim, Puppentheater |
2 | Ubiquiti UniFi AP Pro | Kantine, Beratungsraum |
10 | Patchkabel | je 1 auf Switch- und AP-Seite, bei Ubiquiti zusätzlich an Injektor |
Montagematerial (Schrauben, Schellen, Kabelbinder, Kabelkanal...) stellt das Theater bzw. deren ausführender Elektriker zur Verfügung. An den einzelnen Standorten muß beachtet werden, daß die TP-Link-Router über ein Steckernetzteil lokal mit Strom versorgt werden, die Ubiquiti-Router können auch aus dem Netzwerkraum per PoE durch einen mitgelieferten Injektor betrieben werden.
Netzanbindung
Im Theater erfolgt die Anbindung über den für den Backbone genutzten Offloader. Wenn möglich, sollten die einzelnen Router in jeweils einem separaten VLAN betrieben werden, welches über einen Trunk getaggt bis zum Offloader geführt wird. Damit kann eine unnötige Vermaschung aller Router untereinander vermieden werden.
- Details
- Geschrieben von: Jörg
- Kategorie: Router Standorte
Gateway-Management
Einführung
Im Folgenden wird das Management unserer Gateways beschrieben. Diese Anleitung soll es auch Freifunkern, die sich nicht täglich mit dem Management komplexer Netzwerksysteme befassen, ermöglichen, die Hauptadministratoren der Gateways bei der Behebung von Fehlern und der Durchführung kleinerer Änderungen zu unterstützen. Parallel zur Entstehung dieses Wiki-Eintrages werden im Rahmen unserer Techniktreffen in loser Folge Workshops zu den einzelnen Themengebieten durchgeführt.
Überblick
Login
Gateway-Funktionen
Statusanzeigen
Neustarts
Grundkonfiguration
Grundkonfiguration des Linux-Systems mit externer Internet-Anbindung
Freifunk-Bridge
B.A.T.M.A.N.
dnsmasq für DNS, DHCP, RA
Verbindung der Gateways untereinander
Knoten-Anbindung
Fastd
Tunneldigger
Tunnel nach extern
IC-VPN
FFRL-Backbone
BIRD (dynamisches Routing)
Firewall
Dienste
Webserver
NTP
- Details
- Geschrieben von: Jörg
- Kategorie: Gateways
Sehr sehr kurz gehaltene - unfertige - Anleitung für einen Gateway unter Debian; Details bitte aus der Gentoo-Anleitung entnehmen.
<
Unterschiede zwischen Gentoo und Debian (!!! WICHTIG !!!)
Folgende Befehle und Verzeichnisse die in der Gentoo-Anleitung verwendet werden sollten unter Debian nicht genutzt werden.Die Befehle und Pfade für Debian sind in dieser Anleitung angegeben.Befehle (in Klammern die gegenstücke für Debian):
emerge (apt-get) rc-update (update-rc.d) rc-service (service)
Verzeichnisse:
/etc/config.d/ (/etc/default/) /etc/portage/ /etc/local.d/ /etc/layman/ /etc/rc.conf
Statt
/etc/init.d/DAEMON start
wird in Debian die Dienste mit
sudo service DAEMON start
gestartet, gestoppt oder neugestartet.Zudem sollte in dieser Anleitung in /etc/init.d/ nichts verändert werden! Die manuell installierten Dienste unter /usr/local/ werden über die verschiedenen Configs, und damit in richtiger Reihenfolge, gestartet.
Der Cron sollte unter Debian weder gestoppt noch neugestartet werden. Die Configs unter /etc/cron.d/ werden automatisch aktualisiert.
Noch einmal ganz wichtig: Wenn Verzeichnisse oder Dateien unter Debian nicht existieren bitte erst hier nachschauen ob diese unter Debian notwendig sind.
Voraussetzungen
Beispiel von GW2 unter Debian Jessie (8.2) auf einen KVM-VServer. Ich gehe hier nur im groben auf die wichtigsten Unterschiede zur Gentoo-Anleitung ein da vieles identisch ist.
su -c apt-get install sudo su -c usermod -aG staff,adm,sudo BENUTZERNAME sudo apt-get install build-essential
Es wird davon ausgegangen dass sudo verwendet wird und so viel wie möglich unter seinem normalen Benutzeraccount erledigt wird. Software die nicht über den Paket-Manager (apt-get) installiert wird sollte unter /usr/local/ erstellt und installiert werden.
Uner Debian gibts layman nicht, stattdessen kann man zur Dokumentation der Konfigurationsdateien etckeeper verwenden.Der abgleichen mit Github fehlt hier aus Sicherheitsgründen wird aber noch nachgereicht.
Grundkonfiguration
Hostname
echo "gw2" | sudo tee /etc/hostname
/etc/hosts wie in der Gentoo-Anleitung
Routing
/etc/iproute2/rt_tables wie in der Gentoo-Anleitung
Kernelparameter
An den Kernelparameter wird nichts verändert!/etc/sysctl.conf wie in der Gentoo-Anleitung
SysFS
entfällt (wird in der /etc/network/interfaces erledigt)
Netzwerk
Externe Anbindung
Die Grundkonfiguration (meist eth0) sollte aus der Installation schon passen.Siehe Netzwerkverbindungen
Bridge
Siehe Netzwerkverbindungen
GRETAP-Tunnel
Siehe Netzwerkverbindungen
Netzwerkverbindungen
sudo apt-get install bridge-utils
In dieser Datei sind "Externe Anbindung", "Bridge", "GRETAP-Tunnel" und B.A.T.M.A.N. zusammengefasst.Diese Lösung ist alles andere als hübsch und auf jeden Fall nicht perfekt aber sie funktioniert.
Das DAD (Duplicate Address Detection) musste ich für das ggrzBR-Interface deaktivieren da dies zu Probleme führte.
Mit dem ggrzBAT-Interface wird auch der Fastd gestartet und gestoppt.In der Config von Fastd wird das ggrzVPN-Interface an ggrzBAT gebunden.
/etc/network/interfaces
# hier darf eth0 nicht fehlen ! ############################### # Tunnel ############################### # ggrzTUN1: gw1 <-> gw2 # ggrzTUN2: gw1 <-> gw3 # ggrzTUN3: gw2 <-> gw3 auto ggrzTUN1 iface ggrzTUN1 inet manual pre-up /bin/ip link add $IFACE type gretap remote 148.251.158.22 local 193.28.153.11 key 1 pre-up /bin/ip link set address de:ad:be:ef:02:03 dev $IFACE post-up ip link set $IFACE up post-down /bin/ip link del $IFACE auto ggrzTUN3 iface ggrzTUN3 inet manual pre-up /bin/ip link add $IFACE type gretap remote 5.196.74.176 local 193.28.153.11 key 3 pre-up /bin/ip link set address de:ad:be:ef:02:05 dev $IFACE post-down /bin/ip link del $IFACE post-up /bin/ip link set $IFACE up ############################### # Bridge ############################### allow-hotplug ggrzDummy auto ggrzDummy iface ggrzDummy inet manual #bridge_ports ggrzBR pre-up /bin/ip tuntap add $IFACE mode tap user root post-up /bin/ip link set address de:ad:be:ef:02:00 dev $IFACE post-up ip link set $IFACE up post-down /bin/ip link del $IFACE auto ggrzBR iface ggrzBR inet6 static dad-attempts 0 address fdb5:078b:64cc::12 netmask 64 bridge-stp no bridge-fd 0 bridge-hello 10 bridge-ports ggrzDummy #pre-up /sbin/brctl addif $IFACE ggrzDummy post-up /bin/ip rule add iif $IFACE table ggrz priority 1810 || true post-up /bin/ip route add unreachable default table ggrz || true post-up /bin/ip -6 rule add iif $IFACE table ggrz priority 1810 || true post-up /bin/ip -6 route add fe80::/64 proto static dev $IFACE table ggrz || true post-up /bin/ip -6 route add fdb5:078b:64cc::/64 proto static dev $IFACE table ggrz || true #post-up /bin/ip -6 addr add fdb5:078b:64cc::12/64 dev ggrzBR pre-down /bin/ip -6 route del fe80::/64 proto static dev $IFACE table ggrz || true pre-down /bin/ip -6 route del fdb5:078b:64cc::/64 proto static dev $IFACE table ggrz || true pre-down /bin/ip rule del iif $IFACE table ggrz priority 1810 || true pre-down /bin/ip route del unreachable default table ggrz || true pre-down /bin/ip -6 rule del iif $IFACE table ggrz priority 1810 || true iface ggrzBR inet static address 10.181.0.12 netmask 255.255.192.0 broadcast 10.181.63.255 ############################### # Mesh-Interfaces ############################### auto ggrzBAT iface ggrzBAT inet manual pre-up /usr/local/sbin/batctl -m $IFACE if add ggrzTUN1 pre-up /usr/local/sbin/batctl -m $IFACE if add ggrzTUN3 pre-up /usr/local/sbin/batctl -m $IFACE gw server 96mbit/96mbit pre-up /usr/local/sbin/batctl -m $IFACE it 10000 pre-up echo 60 > /sys/class/net/$IFACE/mesh/hop_penalty pre-up /sbin/brctl addif ggrzBR $IFACE pre-up /bin/ip link set address de:ad:be:ef:02:02 dev $IFACE post-up ip link set $IFACE up post-up start-stop-daemon -b --start --exec /usr/local/bin/fastd -- --config /etc/fastd/ggrz/fastd.conf; pre-down start-stop-daemon --stop --exec /usr/local/bin/fastd; post-down /sbin/brctl delif ggrzBR $IFACE post-down /usr/local/sbin/batctl -m $IFACE if del ggrzTUN1 post-down /usr/local/sbin/batctl -m $IFACE if del ggrzTUN3
Ganz wichtig ist dass die MAC-Adressen korrekt angepasst werden!
B.A.T.M.A.N.
B.A.T.M.A.N.
sudo apt-get install linux-headers-$(uname --kernel-release) build-essential cd /usr/local/src/ #wget http://downloads.open-mesh.org/batman/releases/batman-adv-2015.1/batman-adv-2015.1.tar.gz wget https://downloads.open-mesh.org/batman/releases/batman-adv-2016.5/batman-adv-2016.5.tar.gz tar -xzf batman-adv-201* cd batman-adv-201* make sudo make install sudo cp /lib/modules/$(uname --kernel-release)/kernel/net/batman-adv/batman-adv.ko /root/batman-adv.ko.old sudo cp net/batman-adv/batman-adv.ko /lib/modules/$(uname --kernel-release)/kernel/net/batman-adv/batman-adv.ko
Jetzt sollte der Befehl /sbin/modinfo batman-advfolgendes ausgeben:
filename: /lib/modules/3.16.0-4-amd64/updates/net/batman-adv/batman-adv.ko version: 2015.1 description: B.A.T.M.A.N. advanced author: Marek Lindner, Simon Wunderlich license: GPL srcversion: 4D64E98D15541F2EB62A9F0 depends: libcrc32c,crc16 vermagic: 3.16.0-4-amd64 SMP mod_unload modversions
Da das Kernelmodul selbst gebaut wurde muss es bei einem neuen Kernel auch neu gebaut werden!
batctl
sudo apt-get install pkg-config libnl-3-200 libnl-3-dev libnl-genl-3-dev #wget http://downloads.open-mesh.org/batman/releases/batman-adv-2015.1/batctl-2015.1.tar.gz wget https://downloads.open-mesh.org/batman/releases/batman-adv-2016.5/batctl-2016.5.tar.gz tar -xzf batctl-201* cd batctl-201* make sudo make install
FastD
sudo apt-get install cmake bison pkg-config libsodium-dev libcap-dev doxygen libjson-c-dev cd /usr/local/src #wget http://git.universe-factory.net/libuecc/snapshot/libuecc-5.tar #wget --no-check-certificate https://projects.universe-factory.net/attachments/download/81/fastd-17.tar.xz wget https://projects.universe-factory.net/attachments/download/85/libuecc-7.tar.xz wget https://projects.universe-factory.net/attachments/download/86/fastd-18.tar.xz tar -xf fastd-* tar -xf libuecc-* cd libuecc-* cmake . make sudo make install ln -s /usr/local/src/libuecc-7/src/libuecc.so /lib/libuecc.so ln -s /usr/local/src/libuecc-7/src/libuecc.so.0 /lib/libuecc.so.0{{{
cd /usr/local/src cd fastd-* cmake . make sudo make install
sudo mkdir -p /etc/fastd/ggrz }}}
fastd-Schlüssel analog Gentoo erstellen
/etc/fastd/ggrz/fastd.conf
log to syslog level verbose; hide ip addresses yes; hide mac addresses yes; interface "ggrzVPN"; method "aes128-gcm"; method "salsa2012+umac"; method "null+salsa2012+umac"; bind 193.28.153.11:10181; bind [2a02:ff80:1003:2::2]:10181; mode tap; include "secret.conf"; mtu 1406; # 1492 - IPv4/IPv6 Header - fastd Header... include peers from "peers"; status socket "/var/run/fastd-gera-greiz.status"; on up " /bin/ip link set address de:ad:be:ef:02:01 dev $INTERFACE up /bin/ip link set dev ggrzBAT up /usr/local/sbin/batctl -m ggrzBAT if add $INTERFACE /sbin/start-stop-daemon -b --start --exec /usr/local/sbin/batadv-vis -- -si ggrzBAT /sbin/start-stop-daemon -b --start --exec /usr/local/sbin/alfred -- -i ggrzBR -b ggrzBAT "; on down " /sbin/start-stop-daemon --stop --exec /usr/local/sbin/alfred /sbin/start-stop-daemon --stop --exec /usr/local/sbin/batadv-vis /bin/ip link set dev ggrzBAT down /usr/local/sbin/batctl -m ggrzBAT if del $INTERFACE /bin/ip link set dev $INTERFACE down "; # Accept all keys on verify "true"; # or with blacklist #on verify "/etc/fastd/ggrz/fastd-blacklist.sh $PEER_KEY"
Die Blacklist ist noch nicht integriert aber zur Vollständigkeit hier dennoch angegeben:
/etc/fastd/ggrz/fastd-blacklist.sh
#!/bin/bash PEER_KEY=$1 if /bin/grep -Fq $PEER_KEY /etc/fastd/ggrz/fastd-blacklist.json; then exit 1 else exit 0 fi
/etc/cron.d/update-fastd-blacklist
# Global variables SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # Update blacklist every 15 minutes. */15 * * * * root wget http://irgendwo.de/fastd-blacklist.json -O /etc/fastd/ggrz/fastd-blacklist.json > /dev/null
Exit-VPN
sudo apt-get install openvpn
Config und Scripte einfach in /etc/openvpn kopieren.Die VPN-Config um folgende zwei Zeilen für die Scripte erweitern:
up /etc/openvpn/openvpn.-up.sh down /etc/openvpn/openvpn. -down.sh
Noch das Interface anpassen:
dev exitVPN
IC-VPN
sudo apt-get install tinc bird bird6
Die Konfigurationsdateien sind mit der Gentoo-Anleitung identisch.
Firewall
Layer 3
sudo apt-get install iptables-persistent
Die Regeln genauso wie in der Gentoo-Anleitung einfügen aber zum Abspeichern folgendes eingeben:
sudo iptables-save | sudo tee /etc/iptables/rules.v4 sudo ip6tables-save | sudo tee /etc/iptables/rules.v6
Layer 2
sudo apt-get install ebtables bridge-utils
Regeln wie in der Gentoo-Anleitung einfügen und wie folgt abspeichern:
sudo EBTABLES_ATOMIC_FILE=/root/ebtables-atomic ebtables -t nat --atomic-save sudo EBTABLES_ATOMIC_FILE=/root/ebtables-atomic ebtables -t nat --atomic-commit
In der Datei /etc/default/ebtables folgendes ändern damit die Regeln beim Systemstart wieder hergestellt werden:
EBTABLES_LOAD_ON_START="yes"
Dienste
NTP
sudo apt-get install ntp
Da die Host-Uhr des V-Server falsch lief habe ich NTP angepasst damit die Uhr von NTP gestellt wird.Ansonsten kann die Konfiguration aus der Gentoo-Anleitung 1:1 übernommen werden.
/etc/ntp.conf
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help driftfile /var/lib/ntp/ntp.drift statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable server 0.debian.pool.ntp.org iburst server 1.debian.pool.ntp.org iburst server 2.debian.pool.ntp.org iburst server 3.debian.pool.ntp.org iburst # listen at localhost and mesh only #interface ignore wildcard #interface listen 127.0.0.1 #interface listen ::1 #interface listen 10.181.0.12 #interface listen fdb5:78b:64cc::12 # only use local time, synced with kvm host time #tos orphan 1 # By default, exchange time with everybody, but don't allow configuration. restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1
Unter KVM muss die Uhrzeit-Quelle erst angepasst werden damit NTP die Uhrzeit auch verändern kann.
/etc/rc.local
echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc ohne NTP auf einen V-Server zu verwenden ist keine gute Idee da diese sehr schnell nach dem Mond läuft.
Diese Lösung ist nicht 100% sauber aber mir hats genügt.
Hinweis: NTP bindet sich automatisch an neue Interfaces.
dnsmasq
/etc/resolv.conf
search ffggrz nameserver 127.0.0.1 nameserver 8.8.8.8
Die hier gezeigte dnsmasq.conf und damit auch das Update-Script ist noch nicht entgültig geklärt, daher sollte diese aus der Gentoo-Anleitung verwendet werden!
/etc/dnsmasq.conf
### Allgemeines #ignores README.md from Github-README #conf-dir=/etc/dnsmasq.d,.md #or use only with with .conf extension conf-dir=/etc/dnsmasq.d,*.conf bogus-priv no-resolv no-poll expand-hosts domain-needed cache-size=4096 strict-order interface=ggrzBR bind-interfaces ### DNS # DNS Server server=193.28.153.254 server=213.73.91.35 server=8.8.8.8 server=8.8.4.4 local=/ffggrz/ domain=ffggrz ### DHCP / RA dhcp-authoritative #log-dhcp dhcp-range=10.181.3.1,10.181.4.254,3m dhcp-option=option:router,10.181.0.12 dhcp-option=option:dns-server,10.181.0.12,10.181.0.11,10.181.0.13,8.8.8.8 dhcp-option=option:ntp-server,10.181.0.12 dhcp-option=option:domain-search,ffggrz ### MTU 1280 ##dhcp-option-force=26,1280 dhcp-range=set:v6,::,constructor:ggrzBR,slaac,ra-only,3m dhcp-option=tag:v6,option6:dns-server,[fdb5:78b:64cc::12],[fdb5:78b:64cc::11],[fdb5:78b:64cc::13],[2001:4860:4860::8888] dhcp-option=tag:v6,option6:ntp-server,[fdb5:78b:64cc::12],[fdb5:78b:64cc::11],[fdb5:78b:64cc::13] dhcp-option=tag:v6,option6:domain-search,ffggrz #enable-ra #ra-param=ggrzBAT,low,0,0 #ra-param=ggrzBR,high,60,1200
/etc/cron.d/update-dnsmasq-hostfile
# Global variables SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # Update hostsfile every 15 minutes. */15 * * * * root /usr/local/bin/update-dnsmasq-hostsfile > /dev/null
/usr/local/bin/update-dnsmasq-hostsfile
#!/bin/bash # dnsmasq configuration directory #HOSTSFILE_DIR=/etc/dnsmasq_hostsfile.d/ #CONF_DIR=/etc/dnsmasq_hostsfile.d/ CONF_DIR=/etc/dnsmasq.d/ function getCurrentVersion() { # Get hash from latest revision git log --format=format:%H -1 } cd $CONF_DIR # 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) echo "old: $GIT_REVISION" echo "new: $GIT_NEW_REVISION" if [ $GIT_REVISION != $GIT_NEW_REVISION ] then # Reload updated configuration echo "Reload dnsmasq configuration." cat $CONF_DIR/ffggrz-static.conf | sed -r 's/^dhcp-host=([A-Fa-f0-9:]*),([^,]*),([0-9]*)\\.([0-9]*)\\.([0-9]*)\\.([0-9]*).*/ptr-record=\\6.\\5.\\4.\\3.in-addr.arpa,\\2/' | grep '^ptr-record' > $CONF_DIR/ptr_records_from_static service dnsmasq force-reload fi
Im Github sollte es zwei Konfigurationsdateien geben, eine für die DNS-Auflösung (A, MX, NS, AAA, CNAME, TXT, ...) und eine für statische DHCP IP-Vergabe.
Beispiel:
ffggrz-dns.conf
# Config fuer zusaetlich Domains #test (Marcus) address=/bla.ffggrz/10.181.0.101 #test (Eric) address=/1.eric.ffggrz/10.181.0.120
ffggrz-static.conf
#Config fuer feste IPs und gleich passende Domain(IN-A) #test (Marcus) dhcp-host=68:9c:5e:9f:83:15,test_stadtmitte.ffggrz,10.181.0.102 #test (Eric) dhcp-host=4C:34:88:29:54:A5,eric-1.ffggrz,10.181.0.120
Da dnsmasq die README.md aus dem Github einlesen würde muss im dnsmasq entweder alle *.md ausgeschlossen oder nur *.conf geladen werden.
Hinweis: dnsmasq bindet sich automatisch an neue Interfaces.
Hinweis: Verzeichnis /etc/dnsmasq.d muss nicht erstellt werden!
ALFRED
cd /usr/local/src/ wget http://downloads.open-mesh.org/batman/releases/batman-adv-2015.1/alfred-2015.1.tar.gz tar -xzf alfred-2015.1.tar.gz cd alfred-2015.1/ make CONFIG_ALFRED_GPSD=n sudo make CONFIG_ALFRED_GPSD=n install
Hinweis: Alfred wird von FastD gestartet!
vnstat/vnstati
sudo apt-get install vnstat vnstati sudo vnstat -u -i ggrzBR sudo vnstat -u -i ggrzBAT sudo vnstat -u -i exitVPN sudo vnstat -u -i ggrzTUN1 sudo vnstat -u -i ggrzTUN3 sudo vnstat -u -i icVPN sudo chown vnstat:vnstat /var/lib/vnstat/* sudo service vnstat restart
/etc/cron.d/update-vnstat-webstats.sh
# Global variables SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ */5 * * * * root /usr/local/bin/update-vnstat-webstats.sh
/usr/local/bin/update-vnstat-webstats.sh
#!/bin/sh #IFACES=$(ls /var/lib/vnstat/) IFACES="ggrzBAT exitVPN icVPN" TARGET=/var/www/html/vnstat/ for iface in $IFACES; do /usr/bin/vnstati -i ${iface} -h -o ${TARGET}${iface}_hourly.png /usr/bin/vnstati -i ${iface} -d -o ${TARGET}${iface}_daily.png /usr/bin/vnstati -i ${iface} -m -o ${TARGET}${iface}_monthly.png /usr/bin/vnstati -i ${iface} -t -o ${TARGET}${iface}_top10.png /usr/bin/vnstati -i ${iface} -s -o ${TARGET}${iface}_summary.png done cat > ${TARGET}index.html <EOT for iface in $IFACES; do sed s/IFACE/${iface}/g >> ${TARGET}index.html <
Frontend
Gibts nur einmal pro Freifunk-Community, daher hier komplett weggelassen.
Optional: munin
sudo apt-get install munin
Integration in Webserver muss selbst erledigt werden.Falls es schon einen munin-server gibt sollte hier der munin-node installiert werden.
Backup und Wartung
Backup
sudo tar -czf - /etc > ~/gw2_backup_$(date +"%Y%m%d_%H%M%S").tar.gz
Das Backup sollte sicher aufbewahrt werden da darin auch Private-Keys und Passwörter stehen!
Wartung
kT
Überprüfung der Einstellungen
brctl show
bridge name bridge id STP enabled interfaces ggrzBR 8000.deadbeef0200 no ggrzBAT ggrzDummy
batctl -m ggrzBAT gwl
Gateway (#/255) Nexthop [outgoingIF]: advertised uplink bandwidth ... [B.A.T.M.A.N. adv 2015.1, MainIF/MAC: ggrzTUN1/de:ad:be:ef:02:03 (ggrzBAT)] de:ad:be:ef:01:01 (255) de:ad:be:ef:01:03 [ ggrzTUN1]: 96.0/96.0 MBit de:ad:be:ef:03:04 (255) de:ad:be:ef:03:05 [ ggrzTUN3]: 96.0/96.0 MBit
batctl -m ggrzBAT if
ggrzTUN3: active ggrzTUN1: active ggrzVPN: active
ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:00:28:14:c8 inet addr:193.28.153.11 Bcast:193.28.153.255 Mask:255.255.255.0 inet6 addr: 2a02:ff80:1003:2::2/64 Scope:Global inet6 addr: fe80::5054:ff:fe28:14c8/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:80296635 errors:0 dropped:8033 overruns:0 frame:0 TX packets:52538871 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:16191904959 (15.0 GiB) TX bytes:15949713964 (14.8 GiB) exitVPN Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.114.0.115 P-t-P:10.114.0.115 Mask:255.255.0.0 inet6 addr: fd39:cdef:9618:72::1071/112 Scope:Global UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:6024602 errors:0 dropped:0 overruns:0 frame:0 TX packets:3890046 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:7356020110 (6.8 GiB) TX bytes:417733636 (398.3 MiB) ggrzBAT Link encap:Ethernet HWaddr de:ad:be:ef:02:02 inet6 addr: fe80::dcad:beff:feef:202/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8622637 errors:0 dropped:0 overruns:0 frame:0 TX packets:9438523 errors:0 dropped:31656 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:857382035 (817.6 MiB) TX bytes:7883348224 (7.3 GiB) ggrzBR Link encap:Ethernet HWaddr de:ad:be:ef:02:00 inet addr:10.181.0.12 Bcast:10.181.63.255 Mask:255.255.192.0 inet6 addr: fdb5:78b:64cc::12/64 Scope:Global inet6 addr: fe80::dcad:beff:feef:200/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8626127 errors:0 dropped:65 overruns:0 frame:0 TX packets:9470171 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:736741551 (702.6 MiB) TX bytes:7884891558 (7.3 GiB) ggrzDummy Link encap:Ethernet HWaddr de:ad:be:ef:02:00 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) ggrzTUN1 Link encap:Ethernet HWaddr de:ad:be:ef:02:03 inet6 addr: fe80::dcad:beff:feef:203/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1458 Metric:1 RX packets:12414385 errors:0 dropped:0 overruns:0 frame:0 TX packets:10328976 errors:7 dropped:0 overruns:0 carrier:7 collisions:0 txqueuelen:1000 RX bytes:1787847851 (1.6 GiB) TX bytes:1392594024 (1.2 GiB) ggrzTUN3 Link encap:Ethernet HWaddr de:ad:be:ef:02:05 inet6 addr: fe80::dcad:beff:feef:205/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1458 Metric:1 RX packets:6878445 errors:0 dropped:0 overruns:0 frame:0 TX packets:7016310 errors:7 dropped:0 overruns:0 carrier:7 collisions:0 txqueuelen:1000 RX bytes:709346982 (676.4 MiB) TX bytes:779500947 (743.3 MiB) ggrzVPN Link encap:Ethernet HWaddr de:ad:be:ef:02:01 inet6 addr: fe80::dcad:beff:feef:201/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1406 Metric:1 RX packets:18217951 errors:0 dropped:0 overruns:0 frame:0 TX packets:19160527 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:2004329047 (1.8 GiB) TX bytes:9241262907 (8.6 GiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:88636 errors:0 dropped:0 overruns:0 frame:0 TX packets:88636 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:11916430 (11.3 MiB) TX bytes:11916430 (11.3 MiB)
ip addr show
1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:28:14:c8 brd ff:ff:ff:ff:ff:ff inet 193.28.153.11/24 brd 193.28.153.255 scope global eth0 valid_lft forever preferred_lft forever inet6 2a02:ff80:1003:2::2/64 scope global valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe28:14c8/64 scope link valid_lft forever preferred_lft forever 3: gre0@NONE: mtu 1476 qdisc noop state DOWN group default link/gre 0.0.0.0 brd 0.0.0.0 4: gretap0@NONE: mtu 1462 qdisc noop state DOWN group default qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 5: ggrzTUN1@NONE: mtu 1458 qdisc pfifo_fast master ggrzBAT state UNKNOWN group default qlen 1000 link/ether de:ad:be:ef:02:03 brd ff:ff:ff:ff:ff:ff inet6 fe80::dcad:beff:feef:203/64 scope link valid_lft forever preferred_lft forever 6: ggrzTUN3@NONE: mtu 1458 qdisc pfifo_fast master ggrzBAT state UNKNOWN group default qlen 1000 link/ether de:ad:be:ef:02:05 brd ff:ff:ff:ff:ff:ff inet6 fe80::dcad:beff:feef:205/64 scope link valid_lft forever preferred_lft forever 7: ggrzDummy: mtu 1500 qdisc pfifo_fast master ggrzBR state DOWN group default qlen 500 link/ether de:ad:be:ef:02:00 brd ff:ff:ff:ff:ff:ff 8: ggrzBR: mtu 1500 qdisc noqueue state UP group default link/ether de:ad:be:ef:02:00 brd ff:ff:ff:ff:ff:ff inet 10.181.0.12/18 brd 10.181.63.255 scope global ggrzBR valid_lft forever preferred_lft forever inet6 fdb5:78b:64cc::12/64 scope global valid_lft forever preferred_lft forever inet6 fe80::dcad:beff:feef:200/64 scope link valid_lft forever preferred_lft forever 9: ggrzBAT: mtu 1500 qdisc noqueue master ggrzBR state UNKNOWN group default link/ether de:ad:be:ef:02:02 brd ff:ff:ff:ff:ff:ff inet6 fe80::dcad:beff:feef:202/64 scope link valid_lft forever preferred_lft forever 10: ggrzVPN: mtu 1406 qdisc pfifo_fast master ggrzBAT state UNKNOWN group default qlen 500 link/ether de:ad:be:ef:02:01 brd ff:ff:ff:ff:ff:ff inet6 fe80::dcad:beff:feef:201/64 scope link valid_lft forever preferred_lft forever 13: exitVPN: mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.114.0.115/16 brd 10.114.255.255 scope global exitVPN valid_lft forever preferred_lft forever inet6 fd39:cdef:9618:72::1071/112 scope global valid_lft forever preferred_lft forever
ip route show
default via 193.28.153.1 dev eth0 10.114.0.0/16 dev exitVPN proto kernel scope link src 10.114.0.115 10.181.0.0/18 dev ggrzBR proto kernel scope link src 10.181.0.12 193.28.153.0/24 dev eth0 proto kernel scope link src 193.28.153.11
ip rule show
0: from all lookup local 1810: from all iif ggrzBR lookup ggrz 9181: from 10.114.0.115 lookup ggrz 32766: from all lookup main 32767: from all lookup default
ip route show table ggrz
0.0.0.0/1 via 10.114.0.1 dev exitVPN unreachable default 128.0.0.0/1 via 10.114.0.1 dev exitVPN
Nicht wundern, die Routing-Regeln werden nicht wie in iptables von oben nach unten abgearbeitet sondern in der Reihenfolge der Netzmaske!
Verschiedenes
Verbesserungen der Anleitung
- Ausdruck- und Rechtschreibkontrolle xD
- Kann Alfred über vor fastd gestartet werden? Dadurch könnte Alfred schon beim Systemstart gestartet werden
- Aufteilung der /etc/network/interfaces zur besseren übersicht
- Haben die up/down-Scripte des exitVPN einen richtigen Platz unter Debian? (wie unter Gentoo)
- Anleitung ausbauen um die Abhängigkeit zur Gentoo-Anleitung zu lösen.
Überlegungen zum Betrieb
reine Überlegungen zum Gateway-Betrieb ohne Anspruch auf Richtigkeit
Überlegungen zu IPv6-Only Netzwerken mit Windows/Linux
In der Aktuellen Konfiguration und Version (dnsmasq 2.72) ist ausschließlich das A-Flag im RA (Router-Advertisement-Packet) gesetzt.Daher wird nur im RA (RDNSS Feature) die "DNS Search List" und "Recursive DNS Server" verschickt, dies würde ausreichen damit ein IPv6-Only Netzwerk funktionieren kann.Um aber NTP, SIP, Routen oder ähnliches noch zu setzen wird DHCPv6 benötigt (O-Flag).Da Windows RDNSS nicht unterstützt ist im Moment DHCPv6 für ein funktionierendes Netzwerk notwendig.Erst mit den M-Flag wird über DHCPv6, unabhängig von der Auto-Konfiguration, eine IPv6 vom DHCPv6 vergeben.
In meinen Tests konnten meine Freifunk-Knoten (Gluon 2015.1.2/2015.2), mein Android-Handy (Android 4.2.1), den Raspberry Pi und Banana Pi mit gesetzten A- und O-Flag alles korrekt einstellen.Leider war ich unter Windows 8.1 nicht erfolgreich, erst als das M-Flag gesetzt wurde und der dnsmasq per DHCPv6 - zusätzlich zur autokonfigurierten - eine IPv6 vergeben hat konnte Windows auch alle anderen Daten korrekt einstellen.
Im Parallelbetrieb mit IPv4 reicht die Auto-Konfiguration ohne DHCPv6 da DNS über IPv4 (mit AAAA-Records) aufgelöst wird.
RA = Router-Advertisement-Packet
M-Flag = Managed Address Configuration Flag: statefull, get IP from DHCPv6
O-Flag = Other Configuration Flag: get other data from DHCPv6
A-Flag = Autonomous address-Configuration Flag: stateless
https://weirdfellow.wordpress.com/2014/09/05/dhcpv6-and-ra-with-dnsmasq/
Überlegungen zu Fastd Gateway Auto-Balancing
kT
Überlegungen zur vergabe fester IPs mit dnsmasq für interne Dienste
Vorteile:
- Zentrale Verwaltung
- geringere Hürden für Anfänfger da nichts eingstellt werden mussNachteile:
- kein DHCP-Server -> keine IP
- manche Geräte unterstützen kein DHCPParallelbetrieb?
Ungelöste Probleme
- da batman-adv nur die Verbindung und Verbindungsqualität (TQ) zum nächsten Node kennt entstehen folgende Phänomene:
- Pakete werden über Gateways geschickt obwohl eine Funkverbindung möglich gewesen wäre
- unterschiedliche Bandbreiten werden gleich behandelt
- Bei starker Auslastung mit verschiedenen Routen entsteht ein "schwallartiger" Datenstrom da erst die Route gewechselt wird wenn Pakete (TQ) verloren gehen
- http://trier.freifunk.net/2015/10/21/layer-2-anycast-routing-mit-batman/
- Verteiltes DNS
- Verteiltes DHCP
- Montoring / Fallback / Watchdog
- munin
- monit
- fertige Python-Scripte aus anderen FF-Communitys
- Details
- Geschrieben von: Matthias Drobny
- Kategorie: Gateways