Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
infrastruktur:freifunkmuenster [2014/07/15 22:10] – [Gateway] fusselkater | infrastruktur:freifunkmuenster [2017/06/01 10:26] (aktuell) – deleted entire legacy page commander1024 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== FreiFunk Münster ====== | ||
- | Hier soll alles rund um das Thema Freifunk gesammelt werden bis es eine geeignetere Stelle gibt. | ||
- | ===== Organisation ===== | ||
- | Wir nutzen den IP Block des (ehemaligen) [[http:// | ||
- | |||
- | ==== IP-Bereich ==== | ||
- | IPv4: 10.43.0.0/ | ||
- | IPv6: fd68: | ||
- | |||
- | ==== Reservierter IP-Bereich ==== | ||
- | |||
- | Dieser Bereich ist für feste IPs, Infrastruktur, | ||
- | |||
- | IPv4: 10.43.0.0/ | ||
- | IPv6: fd68: | ||
- | |||
- | ==== IP-Bereich Gateway 1 (VOID-DEV) ==== | ||
- | |||
- | IPv4-Adresse: | ||
- | IPv6-Adresse: | ||
- | |||
- | IPv4: 10.43.8.0/ | ||
- | IPv6: fd68: | ||
- | |||
- | ==== IP Bereich Gateway 2 (Warpzone) ==== | ||
- | |||
- | IPv4-Adresse: | ||
- | IPv6-Adresse: | ||
- | |||
- | IPv4: 10.43.16.0/ | ||
- | IPv6: fd68: | ||
- | |||
- | ==== IP Bereich Gateway 3 (Fusselkater) ==== | ||
- | |||
- | IPv4-Adresse: | ||
- | IPv6-Adresse: | ||
- | |||
- | IPv4: 10.43.24.0/ | ||
- | IPv6: fd68: | ||
- | |||
- | |||
- | ===== Freifunk am Hawerkamp ===== | ||
- | Der Hawerkamp soll mit freien WLAN, am besten auf Basis von Freifunk ausgestattet werden. | ||
- | Es gibt eine Spende von 25 Cisco Access Points vom Typ AIR-AP-1131AG-E-K9 | ||
- | |||
- | ===== Hardware ===== | ||
- | | Hersteller | Modell | WLAN | ext.Antenne? | ||
- | | Cisco | AIR-AP-1131AG-E-K9 | a/b/g | nein | ja | nein | | ||
- | | TP-Link | WR841ND | b/g/n 2.4Ghz | ja | nein | [[http:// | ||
- | | Ubiquity | Nanostation M5 Loco | 5 GHz | nein | ja | nein | | ||
- | |||
- | |||
- | |||
- | |||
- | ===== Firmware ===== | ||
- | Die Firmware wird vermutlich auf [[https:// | ||
- | |||
- | |||
- | ===== To-Do ===== | ||
- | * Community bei Freifunk.net als Subdomain/ | ||
- | * [[http:// | ||
- | * Gateway VM auf Warpzone Server einrichten (server.warpzone.ms -p 2223) | ||
- | * Fastd | ||
- | * VPN (openvpn) | ||
- | * DNS/DHCP (dnsmasq) | ||
- | * DHCP (isc-dhcpd) | ||
- | * ravd (dhcp ipv6) | ||
- | * alfred (teil von batman / Userspace / [[https:// | ||
- | * alfred-json ( https:// | ||
- | * batman-adv (meshing) [Vorsicht: zu neue Kernel nutzen die neue batman version mit neuerem kompability level --> nicht kompatibel] | ||
- | * FFMap-Backend (Übersichtskarte [[https:// | ||
- | * FFMAP (Übersichtskarte [[https:// | ||
- | * Webserver nötig falls nicht auf bestehendem System | ||
- | * DOKU(!) | ||
- | * VPN: Bei Lübecker / Berlinern nach Modalitäten für VPN anfragen: Alternativ eigenen Zugang, mit kosten verbunden (testweise genutzt: [[http:// | ||
- | * Firmware - eigene VM als Zentrales Buildsystem(server.warpzone.ms: | ||
- | * Key zum signieren der Firmware: Zentral über Buildserver (alternativ: | ||
- | * Schlüsselverwaltung der Router - Anmeldung per Email (Später: Kontaktformular? | ||
- | * Verwaltung von DNSeinträgen für .ffms | ||
- | |||
- | ==== Gateway ==== | ||
- | Anleitung zum Gateway einrichten, Vorlage ist die Dokumentation des FreiFunk [[http:// | ||
- | |||
- | * Debian Jessie (Kernel: 3.10.x neuere Kernel Version hat neueres Batman Support level - nicht kompatibel) | ||
- | * ** Zusätzliche Paketquellen ** | ||
- | * deb http:// | ||
- | < | ||
- | gpg --keyserver pgpkeys.mit.edu --recv-key 16EF3F64CB201D9C | ||
- | gpg -a --export 16EF3F64CB201D9C | apt-key add - | ||
- | </ | ||
- | * **Notwendige Pakete:** | ||
- | * bridge-utils (Verwaltung der Netzwerkbrücken) | ||
- | * batctl (B.A.T.M.A.N. Verwaltungstools) | ||
- | * iptables-persistent (Initialisierung der Firewall beim Booten) | ||
- | * openvpn (VPN zu MULLVAD) | ||
- | * haveged (Entropie) | ||
- | * fastd (VPN zu den Nodes) | ||
- | * radvd (IPv6 Router Advertisements) | ||
- | * isc-dhcp-server (DHCP) | ||
- | * bind9 (DNS) | ||
- | * git | ||
- | * ** IPv6 Forwarding aktivieren ** | ||
- | * Konfigurationsdatei ''/ | ||
- | < | ||
- | # IPv4 Forwarding | ||
- | net.ipv4.ip_forward=1 | ||
- | |||
- | # IPv6 Forwarding | ||
- | net.ipv6.conf.all.forwarding = 1 | ||
- | </ | ||
- | * Anschließend Reboot des Servers | ||
- | * **Batman Einrichten** | ||
- | * Bei der ''/ | ||
- | * Neustarten oder Modul händisch per '' | ||
- | * Überprüfen ob module geladen wurde: es existiert der pfad ''/ | ||
- | * **Netzwerk anpassen** | ||
- | * Eine Netzwerkbrücke als Schnittstelle zwischen dem Mesh auf der einen Seite und dem VPN nach XYZ als exist auf der anderen Seite dazu die ''/ | ||
- | * Erstellen eines Bridge Interfaces das eine IP im FF-IP Block hat< | ||
- | # Netwerkbrücke für Freifunk | ||
- | # - Hier läuft der Traffic von den einzelnen Routern und dem externen VPN zusammen | ||
- | # - Unter der hier konfigurierten IP ist der Server selber im Freifunk Netz erreichbar | ||
- | # - bridge_ports none sorgt dafür, dass die brücke auch ohne Interface erstellt wird | ||
- | |||
- | auto br0 | ||
- | |||
- | iface br0 inet static | ||
- | address 10.43.0.3 | ||
- | netmask 255.255.0.0 | ||
- | bridge_ports none | ||
- | |||
- | iface br0 inet6 static | ||
- | address fd68: | ||
- | netmask 48 | ||
- | </ | ||
- | * Batman Interface hinzufügen und an Bridge Interface binden < | ||
- | # Batman Interface | ||
- | # - Erstellt das virtuelle Inteface für das Batman-Modul und bindet dieses an die Netzwerkbrücke | ||
- | # - Die unten angelegte Routing-Tabelle wird später für das Routing innerhalb von Freifunk (Router/ | ||
- | |||
- | allow-hotplug bat0 | ||
- | |||
- | iface bat0 inet6 manual | ||
- | pre-up modprobe batman-adv | ||
- | post-up ip link set dev bat0 up | ||
- | post-up brctl addif br0 bat0 | ||
- | post-up batctl it 10000 | ||
- | post-up ip rule add from all fwmark 0x1 table 42 | ||
- | </ | ||
- | * Config anwenden indem das Netzwerk per '' | ||
- | * Table 42 die wir im Bridge Interface definiert haben muss noch mit Regeln gefüllt werden. | ||
- | * TODO: Konfiguration vom 2. Gateway übernehmen, | ||
- | * Dazu bearbeiten wir die ''/ | ||
- | :INPUT ACCEPT [0:0] | ||
- | :FORWARD ACCEPT [0:0] | ||
- | :OUTPUT ACCEPT [0:0] | ||
- | COMMIT | ||
- | # Regeln zum markieren eingehender Pakete | ||
- | *mangle | ||
- | :PREROUTING ACCEPT [0:0] | ||
- | :INPUT ACCEPT [0:0] | ||
- | :FORWARD ACCEPT [0:0] | ||
- | :OUTPUT ACCEPT [0:0] | ||
- | : | ||
- | -A PREROUTING -i br0 -j MARK --set-xmark 0x1/ | ||
- | -A OUTPUT -o eth0 -p udp --dport 53 -j MARK --set-xmark 0x1/ | ||
- | -A OUTPUT -o eth0 -p tcp --dport 53 -j MARK --set-xmark 0x1/ | ||
- | COMMIT | ||
- | </ | ||
- | * Nun wird alles von der bridge an den VPN Tunnel(der später eingerichtet wird) per nat weiter geleitetet dafür fügt man ebenfalls in der ''/ | ||
- | *nat | ||
- | :PREROUTING ACCEPT [0:0] | ||
- | :INPUT ACCEPT [0:0] | ||
- | :OUTPUT ACCEPT [0:0] | ||
- | : | ||
- | -A POSTROUTING -o tun0 -j MASQUERADE | ||
- | COMMIT | ||
- | </ | ||
- | * Iptables Neustarten über '' | ||
- | * **VPN Einrichten** | ||
- | * Unser VPN geht aktuell nach Schweden (Anbieter: https:// | ||
- | * Die Konfigurationsdateien (ca.crt / crl.pem / mullvad.crt / mullvad.key / mullvad_linux.conf) werden nach ''/ | ||
- | route-noexec | ||
- | up / | ||
- | * Nun wird das im vorherigen Punkt erwähnte Skript mullvad_up.sh mit folgendem Inhalt angelegt: < | ||
- | ip route replace 0.0.0.0/1 via $5 table 42 | ||
- | ip route replace 128.0.0.0/1 via $5 table 42 | ||
- | exit 0</ | ||
- | * Openvpn wird per '' | ||
- | * **Fastd Einrichten** | ||
- | * Konfigurationsverzeichnis erstellen < | ||
- | * Schlüssel für den Server erzeugen. Der Schlüssel wird in diesem Schritt nur erzeugt und auf der Kommandozeile ausgegeben. Secret und Public müssen in die Fastd-Konfiguration des Servers bzw. in die Router-Firmware übernommen werden. < | ||
- | * Konfigurationsdatei ''/ | ||
- | bind 0.0.0.0: | ||
- | interface " | ||
- | user " | ||
- | mode tap; | ||
- | method " | ||
- | mtu 1426; # 1426 - ipv4 header - fastd header | ||
- | secret " | ||
- | |||
- | log to syslog level debug; | ||
- | #folgende Zeile sorgt dafuer das jeder Peer akzeptiet wird | ||
- | #on verify " | ||
- | |||
- | include peers from "/ | ||
- | |||
- | on up " | ||
- | ip link set dev $INTERFACE address de: | ||
- | ip link set dev $INTERFACE up | ||
- | ifup bat0 | ||
- | batctl if add $INTERFACE | ||
- | batctl gw server | ||
- | "; | ||
- | |||
- | </ | ||
- | * Zum Testen kann fastd mit '' | ||
- | * Anschließend fastd mit '' | ||
- | * ** IPv6 Router Advertisements Einrichten ** | ||
- | * Jeder Gateway-Server erhält ein eigenes IPv6 Prefix für Router Anouncements | ||
- | * Achtung: radvd kann maximal /64 Netze vergeben | ||
- | * Der Eintrag RDNSS muss die IP-Adresse des Gateway enthalten | ||
- | * Konfigurationsdatei ''/ | ||
- | < | ||
- | interface br0 | ||
- | { | ||
- | AdvSendAdvert on; | ||
- | IgnoreIfMissing on; | ||
- | MaxRtrAdvInterval 200; | ||
- | |||
- | prefix fd68: | ||
- | { | ||
- | }; | ||
- | |||
- | RDNSS fd68: | ||
- | }; | ||
- | |||
- | }; | ||
- | </ | ||
- | * Start des Dienstes mit '' | ||
- | * ** DHCP Server Einrichten ** | ||
- | * Jeder Gateway-Server erhält einen Teil des IP Bereiches um Adressen zu vergeben | ||
- | * Die Optionen Router und Domain-Name-Servers enthalten jeweils die IP des Servers | ||
- | * Konfigurationsdatei ''/ | ||
- | < | ||
- | |||
- | default-lease-time 600; | ||
- | max-lease-time 3600; | ||
- | |||
- | authoritative; | ||
- | |||
- | log-facility local7; | ||
- | |||
- | subnet 10.43.0.0 netmask 255.255.0.0 { | ||
- | range 10.43.zz.1 10.43.zz.254; | ||
- | |||
- | option routers 10.43.0.x; | ||
- | option domain-name-servers 10.43.0.x; | ||
- | } | ||
- | |||
- | </ | ||
- | * Zudem wird der DHCP Server noch auf das Bridge-Interface festgelegt. Hierzu wird in der Datei ''/ | ||
- | < | ||
- | # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? | ||
- | # | ||
- | INTERFACES=" | ||
- | </ | ||
- | * Test des DHCP Servers mit '' | ||
- | * Anschließend DHCP Server starten mit '' | ||
- | === bind Einrichten === | ||
- | * Konfigurationsdatei ''/ | ||
- | < | ||
- | options { | ||
- | directory "/ | ||
- | |||
- | // If there is a firewall between you and nameservers you want | ||
- | // to talk to, you may need to fix the firewall to allow multiple | ||
- | // ports to talk. See http:// | ||
- | |||
- | // If your ISP provided one or more IP addresses for stable | ||
- | // nameservers, | ||
- | // Uncomment the following block, and insert the addresses replacing | ||
- | // the all-0' | ||
- | |||
- | // forwarders { | ||
- | // 0.0.0.0; | ||
- | // }; | ||
- | |||
- | // | ||
- | // If BIND logs error messages about the root key being expired, | ||
- | // you will need to update your keys. See https:// | ||
- | // | ||
- | dnssec-validation auto; | ||
- | | ||
- | recursion yes; | ||
- | allow-recursion { localnets; localhost; }; | ||
- | |||
- | auth-nxdomain no; # conform to RFC1035 | ||
- | listen-on-v6 { any; }; | ||
- | }; | ||
- | |||
- | logging { | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | category " | ||
- | channel " | ||
- | file "/ | ||
- | print-time yes; | ||
- | print-category yes; | ||
- | }; | ||
- | }; | ||
- | </ | ||
- | |||
- | * Konfigurationsdatei ''/ | ||
- | < | ||
- | // | ||
- | // Do any local configuration here | ||
- | // | ||
- | |||
- | // Consider adding the 1918 zones here, if they are not used in your | ||
- | // organization | ||
- | include "/ | ||
- | |||
- | |||
- | zone " | ||
- | type master; | ||
- | file "/ | ||
- | }; | ||
- | </ | ||
- | |||
- | * Dienst starten mit '' | ||
- | * ** Konfigurations-Git clonen ** | ||
- | * '' | ||
- | * '' | ||
- | * ** Gateway-Script ** | ||
- | * Damit der Gateway seine Funktion aufnimmt und über batman als Gateway anerkannt wird (erst dann funktioniert Routing, DHCP, usw.) muss das Kommando '' | ||
- | * Hierfür sollte idealerweise ein Gateway-Überwachungsscript erstellt werden. | ||
- | ==== NanoStation Loco M5 ==== | ||
- | Die Original Firmware für die NanoStation Loco M5 findet sich bei [[http:// | ||
- | ==== API File ==== | ||
- | Das API File liegt im ''/ | ||
- | '' | ||
- | | ||
- | === Knotenanzahl Automatisch Updaten lassen === | ||
- | TODO: [[http:// |