Achtung

Diese Anleitung ist bei weitem noch nicht fertig. Sie wird gerade aus dem alten Wiki umgezogen.


Dies soll eine allgemeine Anleitung zur Router-Konfiguration auf OpenWRT-Basis für die Teilnahme am Netz von Freifunk Mainz werden.

Dieser Prozess umfasst mehrere Schritte:

Router Flashen

Eine grobe Übersicht, wie das flashen vor sich geht findet man hier.


Todo: Link nach Domainumzug rausnehmen/anpassen.
Solltest du zu den Helden gehören, die ein Todo gelöst haben, darfst du diesen Hinweis löschen.

Wir verwenden als Grundlage für die Router das Betriebssystem OpenWRT. Um den Prozess einfacher zu machen, und da der Speicherplatz auf den Plasterouter sehr begrenzt ist, haben wir vorkompilierte Images im Angebot: Die jeweils aktuelle Version für deinen Router liegt unter images.freifunk-mainz.de (bzw. unter images.freifunk.lacerta.uberspace.de bis zum Domainumzug).

Alternativ kann dem Router auch ein "normales" OpenWRT verpasst werden, dann muss man jedoch die benötigten Pakete von Hand nachinstallieren:

$ opkg update
$ opkg install kmod-batman-adv tinc

Router einrichten

Nachdem OpenWRT erfolgreich auf den Router geflasht ist, bezieht dieser die IP-Adresse 192.168.1.1. Da bereits ein DHCP Server initial auf den Kisten läuft musst du dir keine eigene IP-Adresse setzen

Passwort setzen

Wie bei OpenWRT üblich, sollte das erste Einloggen per Telnet erfolgen, um das Root-Passwort zu ändern.

$ telnet 192.168.1.1
$ passwd <enter>
$ > Neues Passwort eingeben: 
$ > Neues Passwort wiederholen: 

Danach ist Telnet aus und SSH an. Nach einem Reboot muss der Login per SSH erfolgen

$ reboot -f

Die weiteren Einlogvorgänge erfolgen dann über SSH als Benutzer root:

$ ssh root@192.168.1.1

oder von einem Windows-PC mittels PUTTY - Hier Login per IP Adresse und SSH (Port 22)

Empfehlung: Sicherung der wichtigsten Dateien

Die Praxis zeigt, dass es gut ist, später nochmal einen Blick in die Original-Dateien werfen zu können, wenn es um definierte Hardware Eigenschaften geht. Wer mag legt Kopien an von:

$ cd /etc/config
$ cp wireless wireless.org
$ cp network network.org
$ cp tinc tinc.org
$ cp firewall firewall.org

Weiterhin gibt es im OpenWrt.org einen Artikel der beschreibt, wie man den Bootloader als Backup sichert und wieder zurück spielt. Zugegeben, versteht sicher nicht jeder.

Nachlesen: Backup des Bootloaders

Netzwerk konfigurieren

Leider unterscheiden sich die Addressierungen der Netzwerkinterfaces der Router je nach Modell und Hardware-Revision. Im folgenden der Anleitung werden die Interfaces als <WAN-IF> und <SWITCH-IF> bezeichnet.


Todo: Tabelle mit allen Routermodellen auffüllen.
Solltest du zu den Helden gehören, die ein Todo gelöst haben, darfst du diesen Hinweis löschen.

Router-Modell HW-Revision WAN-Interface Switch-Interface
tl-wr741nd v5 eth1 eth0
tl-wr841nd v7 (v8.x nicht geeignet) eth0 eth1
tl-wr1043nd v 1.x eth0.0 eth0.1
tl-wdr3500 v1 eth1 eth0

Laden der Datei network in den Editor. Eine Hilfe gibt es: hier

$ vi /etc/config/network

Einige Teile der Datei müssen ausgetauscht, andere ergänzt werden.

Gehen wir die Blöcke einfach mal durch:

config interface 'loopback' ==> Der ganze Block bleibt erhalten

config globals 'globals' ==> Der ganze Block (2 Zeilen) fliegt raus / löschen oder mit # auskommentieren

Hier fügen wir ein:

config interface 'vpn'
       option ifname 'freifunk_vpn'
       option mtu '1500'
       option proto 'batadv'
       option mesh 'bat0'
config interface 'mesh'
       option ifname 'adhoc0'
       option mtu '1528'
       option proto 'batadv'
       option mesh 'bat0'


config interface 'lan' ==> Dieser Block wird entfernt. Vorher die Zeile "option ifname " suchen und den Namen des Interfaces mit der Tabelle oben vergleichen. Dieser Name ist die <SWITCH-IF>. Block jetzt löschen.

An dieser Stelle einsetzen: Für Router nur mit 2,4 GHz ...

config interface 'freifunk'
       option ifname '<SWITCH-IF> bat0 freifunk_wlan'
       option type 'bridge'
       option proto 'static'
       #  Eure IP-Addresse aus dem WIKI bei ipaddr ersetzen
       option ipaddr  '10.37.X.X'
       option netmask '255.255.0.0'
       option dns     '10.37.4.1'

Für Router mit 2,4 GHz und 5 GHz ...

config interface 'freifunk'
       option ifname '<SWITCH-IF> bat0 freifunk_wlan freifunk_wlan2'
       option type 'bridge'
       option proto 'static'
       #  Eure IP-Addresse aus dem WIKI bei ipaddr ersetzen
       option ipaddr  '10.37.X.X'
       option netmask '255.255.0.0'
       option dns     '10.37.4.1'

config interface 'wan' ==> Dieser Block bleibt erhalten

config interface 'wan6' ==> Der ganze Block (3 Zeilen) fliegt raus / löschen oder mit # auskommentieren

config switch... ==> diese Blöcke bleiben erhalten

Speichern und raus: Bei 'vi' mit ESC :wq



Todo: Kommandos des VI Editors sammeln/referenzieren.
Solltest du zu den Helden gehören, die ein Todo gelöst haben, darfst du diesen Hinweis löschen.


DNS Ausschalten

DNS abschalten durch einmaliges Absetzen des folgenden Befehls

$/etc/init.d/dnsmasq disable


WLAN konfigurieren

Laden der Datei wireless in den Editor. Eine Hilfe für den vi-editor gibt es: hier

$ vi /etc/config/wireless

Der Inhalt wird modifiziert und ergänzt. Gehen wir wieder die Blöcke durch

config wifi-device  radio0

==> Dieser Block bleibt erhalten. Hier folgende Zeile korrigieren:

option channel  11

Diese Zeile entfernen oder mit # vorne versehen:

#option disabled 1

In der Original-Datei gibt es dahinter nun einen Block:

config wifi-iface

Dieser ganze Block wird entfernt und statt dessen durch gleich zwei Blöcke ersetzt:

Einfügen an der Stelle:

config wifi-iface
       option device     'radio0'
       option mode       'ap'
       option encryption 'none'
       option ifname     'freifunk_wlan'
       option ssid       'Freifunk Mainz'
       option network    'freifunk'
       option isolate    '1'
  
config wifi-iface
       option device     'radio0'
       option encryption 'none'
       option ssid       'mesh'
       option ifname     'adhoc0'
       option mode       'adhoc'
       option bssid      '02:ca:ff:ee:ba:be'

Nur bei einem Dualband Router mit 2,4 und 5 GHz geht es in der Originaldatei weiter. Dort gibt es jetzt noch einmal das gleiche für "radio1".

config wifi-device  radio1

Dieser Block bleibt erhalten. Nur die folgende Zeile daraus entfernen oder mit # vorne versehen:

#option disabled 1

Der letzte Block wird wieder entfernt und durch diese Blöcke ersetzt:

config wifi-iface
     option device     'radio1'
     option mode       'ap'
     option encryption 'none'
     option ifname     'freifunk_wlan2'
     option ssid       'Freifunk Mainz'
     option network    'freifunk'
     option isolate    '1'
  
config wifi-iface
     option device     'radio1'
     option mode       'adhoc'
     option encryption 'none'
     option ifname     'adhoc0'
     option ssid       'mesh'
     option bssid      '02:ca:ff:ee:ba:be'

Wir speichern wieder mit ESC :wq

Tinc konfigurieren

Laden der Datei tinc in den Editor. Eine Hilfe gibt es: hier

$ vi /etc/config/tinc

Der komplette Inhalt wird gelöscht und mit folgendem Inhalt gefüllt (NODENAME bitte austauschen):

config tinc-net 'ffmz'
       option enabled '1'
       option generate_keys '1'
       # NODENAME ersetzen. Wird aus der IP im Wiki erstellt durch Entfernung der Punkte
       # z.B. 10.37.1.100 wird zu  10371100. Es kann zu Doppeldeutigkeiten kommen. 
       option Name 'NODENAME'
       option key_size '2048'
       option logfile '/tmp/log/tinc.ffmz.log'
       option debug '0'
       # gate2 ist derzeit das einzig existierende Gateway
       list ConnectTo 'gate2'
       option DirectOnly '1'
       option Forwarding 'off'
       option Interface 'freifunk_vpn'
       option Mode 'switch'
       option Compression '10'

Speicher und verlassen des Editors wieder mit ESC :wq

Tinc neu starten damit einmalig die Schlüssel generiert werden (Achtung: das geht nur einmal)

/etc/init.d/tinc restart

Durch "......." wird eine Tätigkeit angezeigt. Danach finden wir ein neues Verzeichnis mit neuen Dateien.

cd /etc/tinc/ffmz

Zeigt eine rsa_key.priv und ein weiteres Unterverzeichnis hosts. Die rsa_key.priv beinhaltet den privaten Schlüssel der nicht herausgegeben, aber extern als Sicherheitskopie aufbewahrt werden sollte. Genau so verhält es sich mit dem öffentlichen Schlüssel den wir im hosts Unterverzeichnis finden.

cd /etc/tinc/ffmz/hosts

Der öffentliche Schlüssel hat den Namen den wir in der TINC Datei eben unter option Name 'NODENAME' eingetragen haben.

Dessen Inhalt auflisten (cat 1037.....) und per Mail an keys@freifunk-mainz.de zusammen mit dem NODENAMEN senden. Dieser Schlüssel muss im gate2 eingetragen werden.

Datei gate2 im Verzeichnis hosts anlegen:

$vi /etc/tinc/ffmz/hosts/gate2

Befüllen mit dem Inhalt aus der unten angezeigten Tabelle - GATE2 - (Gate1 ist offline)

Da man das aus der Tabelle unten so schlecht markiert und kopiert bekommt, hier nochmal der Dateiinhalt herausgezogen:

Address=89.238.78.70
Port=8889
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEArYARYgLj7fD8JuT8aWr7jx9GET8imVX2p1O7ySY7mwBv5VaR8Saw
FAjiIxrOdjZvUhApm9D4WzozpVFcm4G64YJxvFKN5q5EEd5cDr6KDWVJucUiAos6
4sopPBhGcIwMq1FluRwlkAzRgVgl63jEbNl8nEPW/eEOJ4tq8YEyw3z6zQRX0GNt
OIBy4+bhApO6e3EzVsOykFeLNLLsb2FHquqHav7bQDd0uBvzCp3nSvQ6wJJzfho/
7adPC/BqmIIHlxlFHpJzquRdxDeyjd/l0iUmv/CJv2+XsPcV85UTBvM7HRbTWg0F
0ISoXtU/QKTWcV6C+5JnpQ7pcIbTuesIewIDAQAB
-----END RSA PUBLIC KEY-----


Wir speichern wieder mit ESC :wq

Firewall Datei befüllen

Die Firewall Datei muss neuen Inhalt bekommen.

$vi /etc/config/firewall

Alles muss raus. Neu rein der folgende Inhalt:

config defaults
       option syn_flood        1
       option input            ACCEPT
       option output           ACCEPT
       option forward          REJECT 
  
config zone
       option name             wan
       option network          'wan'
       option input            ACCEPT
       option output           ACCEPT
       option forward          REJECT
  
config zone
       option name             freifunk
       option network          'freifunk'
       option input            ACCEPT
       option output           ACCEPT
       option forward          REJECT
  
config rule
       option name             Reject-Telnet
       option src              freifunk
       option proto            tcp
       option dest_port        23
       option target           REJECT

Wir speichern wieder mit ESC :wq

Weitere Handgriffe

Diesen Befehl noch absetzen. Für Nodename wieder den in der TINC Datei angegebenen verwenden:

$uci set system.@system[0].hostname=NODENAME

WOW - fast fertig: jetzt kommt ein Reboot

$reboot -f


Konfiguration testen

Einen Überblick findet man unter Funktionstests.