## page was renamed from FunkInselServer
<<TableOfContents>>

= Konfiguration unseres Tunnel Routers =

/!\ Diese Seite beschreibt die Konfiguration unseres alten Tunnel Setups. Das System wurde mit 11.10.2012 auf das [[FunkInselServer|Neue]] umgestellt.

{i} Diese Dokumentation beschreibt die Konfiguration unseres Tunnel Routers. Details zu unseren Funkinsel-Setup können auf der Seite [[FunkInsel]] gefunden werden. Informationen zu allen anderen Servern/Routern kann auf der Seite ServerDokumentation gefunden werden.

== Installation und Konfiguration ==

Unser Tunnelrouter ist ein normaler Linksys WRT54GL mit Freifunk Firmware auf dem ''openvpn'' installiert und als Server eingerichtet ist. Weiters ist es notwendig das mittels eines NTP Clients beim Booten die richtige Zeit und das richtige Datum gesetzt wird damit die Zertifikats Gültigkeitsüberprüfung nicht fehlschlägt. Zu guter letzt läuft darauf noch ''snmpd'' der dazu benützt wird um mit ''mrtg'' Statistiken zu führen.
Nach dem Flashen mit der Freifunk Firmware müssen die Pakete wie folgt installiert werden:

{{{
# ipkg install openvpn-ssl-nolzo snmpd ntpclient
}}}

Die Konfiguration von ''snmpd'' kann ohne Änderung übernommen werden. ''ntpclient'' muss nicht konfiguriert werden. Es reicht einen Initscript ''/etc/init.d/S60ntpclient'' anzulegen und folgendes hineinzukopieren:

{{{#!sh
#!/bin/sh
sh -c "sleep 120;ntpclient -s -h at.pool.ntp.org"&
}}}

Danach nur noch ausführbar markieren:

{{{
chmod +x /etc/init.d/S60ntpclient
}}}

Für ''openvpn'' muss zunächst das Verzeichnis ''/etc/openvpn'' angelegt werden und darin die Datei ''/etc/openvpn/server.conf'' mit folgenden Inhalt erstellt werden:

{{{
;local a.b.c.d
port 1194

proto udp

dev tap
ca /etc/openvpn/key/ca.crt
cert /etc/openvpn/key/server.crt
key /etc/openvpn/key/server.key  # This file should be kept secret
dh /etc/openvpn/key/dh1024.pem

ifconfig-pool-persist ipp.txt

server 10.11.100.0 255.255.255.0

cipher none

persist-key
persist-tun

verb 3

management localhost 7505
}}}

Das Verzeichnis ''/etc/openvpn/key'' muss vom Webserver kopiert werden (siehe weiter unten). Danach muss noch der Initscript /etc/init.d/S47openvpn angelegt werden und folgendes hineinkopiert werden:

{{{#!sh
#!/bin/sh

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

Zusätzlich muss im Webinterface unter 'OLSR' noch Policy Routing aktiviert werden und dann noch ein zusätzlicher Initsript ''/etc/init.d/S60fixpolicy'' angelegt werden:

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

Beide Initscripte müssen natürlich noch ausführbar markiert werden:

{{{
# chmod +x /etc/init.d/S47openvpn
# chmod +x /etc/init.d/S60fixpolicy
}}}

Zu guter letzt muss noch olsrd dazu gebracht werden auf dem Tunnelinterface zu arbeiten indem das folgende in die Datei ''/etc/local.olsrd.conf'' kopiert wurde:

{{{
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                                           
}       
}}}

Nachdem dies alles erledigt ist sollte nach einem Reboot der Tunnelrouter funktionieren.

== Zertifikate erstellen ==

Die Zertifikate liegen samt aller Scripte auf unserem Webserver (''www.ffgraz.net'') im Verzeichnis ''/srv/ovpn-tunnel-certs/''. Alle Scripte zum erstellen eines Zertifikates sind unter ''easy-rsa'' und die ''crt'' und ''key'' Files sind im Verzeichnis ''key'' zu finden. Um ein neues Zeritifikat zu erstellen sind die folgenden Schritte notwendig:

{{{
# cd /srv/ovpn-tunnel-certs/easy-rsa
# . ./vars
# ./build-key <common-name>
}}}

Das Script stellt ein paar Fragen von denen die meisten einfach mit Enter quitiert werden müssen (default Werte). Bei der Frage nach dem 'Common Name' muss dasselbe angegeben werden als das beim Aufruf des Scripts.
Danach ist das neu erstellte Zeritifikat im ''key'' Verzeichnis zu finden.


== Firmware Update / Backup ==

Vor einem Firmwareupgrade müssen die oben beschriebenen Scripte und Konfigurationsdatei gesichert werden. Dabei müssen folgende Scritte ausgeführt werden:

{{{
# cd /tmp
# tar -czf tunnel-backup.tar.gz /etc/openvpn/ /etc/local.olrsd.conf /etc/init.d/S47openvpn /etc/init.d/S60fixpolicy /etc/init.d/S60ntpclient
}}}

Danach muss die Datei tunnel-backup.tar.gz gesichert werden und der Router mit der neuen Firmware Version geflascht werden. Nachdem wie oben beschrieben die noch fehlenden Pakete installiert sind und das Archiv wieder zurückkopiert wurde kann alles wie folgt wiederhergestellt werden:

{{{
# cd /
# tar -xzf /tmp/tunnel-backup.tar.gz 
}}}

Danach muss der Router nur noch rebootet werden.

----
 . CategoryDocumentation