Locked History Actions

FunkInselFreifunk

Funkinsel Setup auf Freifunk Firmware

{i} Dieses Howto beschreibt das Funkinsel Setup für die Freifunk Firmware. Howtos für andere Firmware Images können auf der Seite FunkInsel gefunden werden.

Installation

OpenVPN

Zunächst muss OpenVPN installiert werden:

# ipkg install openvpn-ssl-nolzo

Das Verzeichnis /etc/openvpn und darin eine Konfigurationsdatei anlegen.

# mkdir /etc/openvpn
# cd /etc/openvpn
# vi ff-tunnel.conf

Hier eine Beispielkonfiguration:

client

dev tap0

proto udp
remote tun.graz.funkfeuer.at 1194
resolv-retry infinite
nobind

persist-key
persist-tun

# cd /etc/openvpn
# chroot /etc/openvpn
# user nobody
# group nogroup

ca "ca.crt"
cert "<name>.crt"
key "<name>.key"

ns-cert-type server

cipher none

verb 3

Diese Konfiguration geht davon aus das die Zertifikate mit denen sich der Router authentifiziert im gleichen Verzeichnis wie die Konfiguration liegt. Sollten diese woanders liegen kann dass ebenfalls mit relativen oder absoluten Pfaden angegeben werden. Die 4 auskommentierten Zeilen bringen wenn sie einkommentiert werden den OpenVPN dazu in ein chroot-jail unter dem User nodody zu laufen. Dies ist wohl auf einem Linksys/Buffalo etwas übertrieben aber sollte auf einem normalen System verwendet werden.

Zum Testen kann OpenVPN nun mit folgenden Kommando starten lassen:

# insmod tun
# openvpn --config /etc/openvpn/ff-tunnel.conf

Das muss natürlich nach jedem Reboot neu gemacht werden. Am besten erledigt man das mit einem Initscript.

# vi /etc/init.d/S47openvpn

Und dann das hineinkopieren

#!/bin/sh


case $1 in
        start)
                openvpn --config /etc/openvpn/ff-tunnel.conf --cd /etc/openvpn/ --daemon
        ;;
        stop)
                killall openvpn
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        *)
                echo "Usage: $0 start|stop|restart"
                exit 1
        ;;
esac

exit 0

und ausführbar machen:

# chmod +x /etc/init.d/S47openvpn

OLSR

Jetzt muss noch OLSRd dazu gebracht werden auf das Tunnelinterface zu lauschen:

# rm /etc/local.olsrd.conf
# cp /rom/etc/local.olsrd.conf /etc/
# vi /etc/local.olsrd.conf

und folgendes hineinkopieren:

Interface "tap0"
{
        HelloInterval           3.0
        HelloValidityTime       125.0
        TcInterval              2.0
        TcValidityTime          500.0
        MidInterval             25.0
        MidValidityTime         500.0
        HnaInterval             10.0
        HnaValidityTime         125.0
        LinkQualityMult         10.12.11.1 0.2
}

Mit Hilfe der Zeile LinkQualityMult ... lässt sich die ETX für den Tunnel künstlich verschlechtern. Dies kann Sinn machen wenn der Tunnel als reines Backup gedacht ist und nur dann zum Zuge kommen soll wenn der Funklink ausfällt. Das obige Beispiel würde den ETX Wert von normal 1.0 auf 5.0 erhöhen.

Policy Routing

In der neuen Freifunk Firmware kann man Policy Routing über eine Option im Webinterface aktivieren. Die Option ist unter Verwalten -> OLSR zu finden. Dies funktioniert soweit ganz gut allerdings fehlt für unser Netz noch eine Kleinigkeit ohne der unsere offiziellen IP's nicht funktionieren. Hier ein Initscript der das behebt:

# vi /etc/init.d/S55fixpolicy

Folgendes reinkopieren:

#!/bin/sh
ip rule add from 10.0.0.0/8 lookup olsr
ip rule add to 10.0.0.0/8 lookup olsr
ip rule add from 193.33.150.0/23 lookup olsr
ip rule add to 193.33.150.0/23 lookup olsr
ip rule add from 89.106.208.0/21 lookup olsr
ip rule add to 89.106.208.0/21 lookup olsr

und ausführbar machen:

# chmod +x /etc/init.d/S55fixpolicy

Nach einem Reboot sollte der Tunnel aufgebaut werden und die Funkinsel somit aktiv sein.