Router: Manuelle Konfiguration
Übertragen aus dem zentralen Freifunk Wiki am 2015-04-02.
Inhaltsverzeichnis
Router-Netzwerktopologie
bat0
Virtuelle Netzwerkschnittstelle für das Mesh-Netzwerk (WLAN).
br-client
Brücke welche alle Netzwerkschnittstellen mit dem internen Freifunk-Netzwerk verbindet.
Mitglieder:
- Switch-Ports des Routers
- Freifunk-WLAN
- Mesh-WLAN
Konfiguration:
- IP-Adresse: dhcp-client
- Konfiguration: /etc/config/network
br-wan
Brücke welche alle Netzwerkschnittstellen mit dem externen Netz verbindet (WAN - Internetzugang).
Mitglieder:
- WAN-Port des Routers
Konfiguration:
- IP-Adresse: dhcp-client
- Konfiguration: /etc/config/network
eth0
Physikalische Schnittstelle der Switch-Ports des Routers.
Teil des Client-Netzwerkes, erhält daher keine eigene Schnittstellenkonfiguration.
- VLAN: 1
- Ports können im switch_vlan hinzugefügt / entfernt werden.
- Konfiguration: /etc/config/network
eth1
Physikalische Schnittstelle des WAN-Ports des Routers.
Teil des WAN-Netzwerkes, erhält daher keine eigene Schnittstellenkonfiguration.
local-node
Virtuelle Netzwerkschnittstelle für den lokalen Zugriff auf den Router mit fester Standard-Konfiguration.
- IP-Adresse: 10.119.0.1/32 fdc7:3c9d:b889:a272::1/128
- Konfiguration: /etc/config/network
mesh-vpn
Virtuelle WLAN-Schnittstelle für die Freifunk-VPN-Verbindung.
wlan0
Virtuelle WLAN-Schnittstelle für das interne Freifunk-Netzwerk.
Teil des Client-Netzwerkes, erhält daher keine eigene Schnittstellenkonfiguration.
- ESSID: "freifunk.net"
- Konfiguration: /etc/config/wireless
wlan0-1
Virtuelle WLAN-Schnittstelle für das Mesh-Netzwerk.
- ESSID: "mesh.freifunk.net"
- BSSID: 12:CA:FF:EE:BA:BE
- Konfiguration: /etc/config/wireless
Allgemeine Dienste-Konfiguration für Gluon
Gluon basiert auf OpenWRT, daher können erweiterte Informationen vom OpenWRT-Wiki nachgelesen werden.
Konfigurationsmodus
Wenn der Router zum ersten Mal mit der Gluon-Firmware gestartet wird (zB. nach dem Flashen), dann startet er in den Konfigurationsmodus. In diesem Modus hat er eine andere IP-Adresse (192.168.1.1) und auf der Weboberfläche läuft eine Konfigurationsoberfläche mit der man grundlegende Einstellungen machen kann.
Weitere Anpassungen kann man per SSH vornehmen (s.u.), dafür muss nicht in den Konfigurationsmodus gewechselt werden, es muss aber im Konfigurationsmodus vorab entweder ein SSH-Schlüssel oder ein Passwort eingerichtet worden sein.
- Erstkonfiguration
Um den Router überhaupt in Betrieb nehmen zu können wird ein Name und ein VPN-Schlüssel benötigt.
Den VPN-Schlüssel muss man zusammen mit dem Knotennamen an <dreilaendereck@freifunk.net> senden, damit er in den Gateways eingetragen wird und sich der Router somit künftig verbinden kann.
- Nachträgliche Konfiguration
Später kann jederzeit in den Konfigurationsmodus gewechselt werden indem man die Reset-Taste des Routers so lange drückt, bis alle LEDs kurz aufleuchten. Anschliessend muss man wieder die IP-Adresse 192.168.1.1 zum Zugriff verwenden.
Die bestehende Konfiguration bleibt beim Wechsel in den Konfigurationsmodus erhalten.
- Erweiterte Konfiguration / SSH-Zugang
Auf der Weboberfläche können oben rechts auch erweiterte Konfigurationsoptionen aufgerufen werden, dort kann dann zB. ein SSH-Schlüssel oder -Passwort hinterlegt werden für die Konfiguration per SSH.
SSH-Verbindung aufbauen
Jeder Router hat lokal die IP-Adresse 10.119.0.1.
Passwort oder SSH-Schlüssel müssen vorab im Konfigurationsmodus in der erweiterten Konfiguration hinterlegt werden.
uci
Zur Konfiguration verwendet Gluon uci, eine kommandozeilenbasierte Konfigurationssprache. Damit werden Meta-Konfigurationsdateien zu einzelnen Diensten bearbeitet, welche dann beim Start der Dienste in die jeweiligen native Konfigurationsdateien umgeschrieben werden.
- Konfiguration ausgeben
uci show
- Änderungen festschreiben
Nicht vergessen!
uci commit
- Konfigurationsdateien manuell bearbeiten
cd /etc/config ls -la vim ...
DHCP- / DNS-Server
Diese Dienste werden von dnsmasq bereitgestellt.
VPN Knoten - Gateway
Um die Freifunk-Knoten in das Freifunk-Netz einzubinden, müssen sie zuerst miteinander verbunden werden. Dies wird über VPN-Tunnel gelöst. Dh. alle Knoten verbinden sich per VPN mit einem oder mehreren Gateways, wodurch sie Verbindung zu allen anderen Freifunk-Knoten sowie dem Freifunk-Uplink (Zugang zum Internet) erhalten. Diese VPN-Verbindung wird über die reguläre Internetverbindung des Knotens hergestellt - alles, was aber innerhalb des Freifunk-Netzwerks passiert, läuft über das VPN, Zugang zum Internet erhalten Freifunk-Clients nur über den Uplink der Freifunk-Gateways. Der lokale Internetzugang dient aus Freifunk-Sicht also nur noch der VPN-Verbindung.
- Dienst: fastd
- Konfiguration: /etc/config/fastd
- Init-Skript: /etc/init.d/fastd
Die Fastd-Konfiguration ist hierarchisch aufgebaut:
- config fastd 'Name'
- definiert eine VPN-Verbindung
- Verschlüsselungsalgorithmus
- maximale Paketgrösse (muss auf physische Anforderungen, zB. ADSL, angepasst werden)
- Netzwerkschnittstelle
- lokaler VPN-Schlüssel (muss dem Gateway bekannt sein)
- config peer-group 'Name'
- definiert eine Gruppe von Gegenstellen einer VPN-Verbindung
- ermöglicht es für ein VPN mehrere Gegenstellen ("Peers") einzurichten
- die Peer-Group wird einer VPN-Verbindung zugeordnet
- config peer 'Name'
- definiert eine einzelne Gegenstelle
- Schlüssel der Gegenstelle
- Netzwerkadresse der Gegenstelle
- der Peer wird einer Peer-Group und / oder einer VPN-Verbindung zugeordnet
Ad-Hoc Routing
Aufbauend auf der logischen Verknüpfung via VPN wird das Freifunk-Netz nicht geroutet, sondern gebridged. Dh. alle Geräte teilen sich einen IP-Adressraum, die Router wissen nicht, welche Netzwerkadresse an welchem Router an welchem Standort angeschlossen ist. Für das virtuelle Routing der Netzwerkpakete wird BATMAN, eine Eigenentwicklung von Freifunk, verwendet. Der Informationsaustausch über die Netzwerktopologie findet dagegen über Alfred statt.
BATMAN ist ein Kernel-Modul und wird von Alfred eingerichtet.
- Netzwerkschnittstelle: bat0
- Konfiguration: /etc/config/batman-adv
- Init-Skript: /etc/init.d/alfred
Üblicherweise wird bat0 mit dem Netzwerk gebridged, welches in das Mesh eingebunden werden soll (Freifunk Client-Netzwerk), andernfalls ist nur der Knoten selbst Teil des Freifunk-Meshs.
- Debugging
batctl
Siehe auch
Topologie
Damit BATMAN weiss, welche Netzwerkpakete wohin weitergeleitet werden sollen, sammelt Alfred Daten über das Netzwerk. Er analysiert die Schnittstellen und die dahinter erreichbaren Netzwerke und Knoten.
Alfred hat zwei Betriebsmodi, Master und Slave. Ein Master-Server sammelt Daten von anderen Alfred-Instanzen und verteilt diese wieder, ein Slave-Client verwaltet nur die eigenen Daten und tauscht sich mit dem Master aus. Normalerweise sind WLAN-Accesspoints als Slave eingerichtet, während die Gateways die Rolle der Master übernehmen.
- Konfiguration: /etc/config/alfred
- Init-Skript: /etc/init.d/alfred
Logging
Es werden standardmässig keine Log-Dateien geschrieben. Ein begrenztes Syslog kann aus dem Speicher gelesen werden:
logread
Individuelle Konfigurationen
Hier ein paar Konfigurationsbeispiele für bestimmte Szenarien, die nicht dem Standard-Anwendungsfall entsprechen.
Statische WAN-Adresse
- Anwendungsfall
Oft möchte man im Netzwerk bestimmten Geräten statische Adressen zuordnen, so dass man sie immer unter der selben IP-Adresse erreichen kann.
- Hintergrund
Diese Konfiguration kann mittlerweile auch über den Konfigurationsmodus in der Weboberfläche vorgenommen werden, wenn man in den "Expert Mode" wechselt (Link oben rechts). In dieser Anleitung zeigen wir, wie es von Hand gemacht wird, dabei ist noch eine Besonderheit zu beachten.
- der WAN-Port heisst eth1
- Gluon verwendet für das WAN eine Bridge "wan"
In der Netzwerk-Konfigurationsdatei kann das WAN-Interface (die wan-Bridge) einfach von der Standardeinstellung proto 'auto' auf proto 'static' umgestellt und mit IP-Adress-Einstellungen versehen werden. Allerdings müssen Nameserver an anderer Stelle eingetragen werden, da sie sonst ein Konflikt mit dem lokalen Nameserver (DNSMasq) verursachen. Vergisst man die Eintragung ganz, kommt keine Verbindung zum VPN zustande, da fastd die Peers nicht finden kann.
- Konfiguration
- per SSH auf den Router verbinden
- Datei /etc/config/network anpassen (vi /etc/config/network)
- im Abschnitt config interface 'wan' die Einstellung auf statisch ändern:
- option proto 'static'
- gewünschte IP-Adresse eintragen:
- option ipaddr '192.168.x.x'
- Netzwerkmaske / Subnetz nicht vergessen:
- option netmask '255.255.255.0'
- ...und das Standard-Gateway - die IP-Adresse des nächsten Routers
- option gateway '192.168.x.x'
- Datei /etc/config/gluon-wan-dnsmasq anpassen (vi /etc/config/gluon-wan-dnsmasq)
- Nameserver eintragen (meist IP-Adresse des Routers) - Kommentarzeichen # entfernen!
- list 'server' '192.168.x.x'
- Konfiguration übertragen mit uci commit
- Gerät neu starten mit reboot
Router als Switch - WAN- und Switch-Ports als Bridge
- Anwendungsfall
Die Switch-Ports des Routers sollen mit dem lokalen LAN verbunden sein, welches über den WAN-Port angesteckt ist. Dh. der Router verhält sich wie ein normaler Switch.
Das Freifunk-Netzwerk ist nur per WLAN erreichbar.
- Hintergrund
- der WAN-Port heisst eth1
- die LAN-Ports heissen eth0
- Gluon verwendet für das WAN eine Bridge "wan"
- Gluon verwendet für das LAN eine Bridge "cient"
Wir entfernen daher eth0 aus der client-Bridge und fügen es der wan-Bridge hinzu:
- Konfiguration
- per SSH auf den Router verbinden
- Datei /etc/config/network anpassen (vi /etc/config/network)
- im Abschnitt config interface 'wan' die Switch-Ports der WAN-Bridge hinzufügen:
- option ifname 'eth0 eth1'
- im Abschnitt config interface 'client' die Switch-Ports aus der Client-Bridge entfernen:
- option ifname 'bat0'
- Konfiguration übertragen mit uci commit
- Gerät neu starten mit reboot