Freifunk Augsburg

Tinc VPN für die Vernetzung von Funkinseln

Tinc Setup

Update 03.05.2013:

Anleitung für neue OpenWrt Versionen aus dem Meshkit (Attitude Adjustment) angepasst.

Der grösste Vorteil von Tinc gegenüber OpenVPN ist die Dezentralität. Ein Knoten kann mit vielen Anderen über Tinc-Tunnel verbunden sein. Einen zentralen Server gibt es dabei nicht.

1. Tinc installieren

 

opkg update
opkg install tinc-nolzo

Hinweis: mindestens Tinc 1.0.19 oder eine gepatchte Version verwenden, mehr Infos dazu hier: http://augsburg.freifunk.net/blog/show/archive/2012/April/14/nochmal_tinc_und_olsr_jetzt_wirklich_gefixt.html

2. Verzeichnisse und Configs vorbereiten

  • mkdir -p /etc/tinc/freifunk/hosts
  • tincd -n freifunk -K
    Dies erstellt ein public/private keypair. Da wir noch keine Tinc Config haben wird sich Tinc mit "Cannot open config file /etc/tinc/freifunk/tinc.conf: No such file or directory" beschweren, das kann man ignorieren.
Generating 1024 bits keys:
................++++++ p
...................++++++ q
Done.
Please enter a file to save private RSA key to [/etc/tinc/freifunk/rsa_key.priv]:
Please enter a file to save public RSA key to [/etc/tinc/freifunk/hosts/meinrouter]:
  • In /etc/tinc/freifunk/ liegen nun der private (rsa_key.priv) und der öffentliche Schlüssel (rsa_key.pub). Den öffentlichen Schlüssel (Public Key) jetzt nach /etc/tinc/freifunk/hosts/<nodename> kopieren. Für <nodename> den Namen einsetzen, den man im nächsten Schritt verwendet (auf erlaubte Zeichen achten, siehe unten). Kopieren mit:
    cp /etc/tinc/freifunk/rsa_key.pub /etc/tinc/freifunk/hosts/<nodename>
  • Den eben kopierten Public Key öffnen und um Adresse und Port erweitern:

    vi /etc/tinc/freifunk/hosts/<nodename>
Address = meinrouter.mine.nu
Port = 4223
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAKe+pEuYsGXl6/tUDqc1/ZUE/3jK/IumPIljMBZr+cDB2G2DRGIKzkK1
1rM9BBusMIrhubmXz35FGY1Fx/CBt4RzbFbujdBdkK0eXm0D9dSNAugXenAsu0bB
64zkp5WuCQNaYgYXs37u5vAj08/ReY9HPPLcKClsY77L5KB28TEHAgMBAAE=
-----END RSA PUBLIC KEY-----
  • Kopiere jetzt deinen Public Key aus /etc/tinc/freifunk/hosts/ zu deinem Gegenüber und kopiere seine Datei zu dir ins /etc/tinc/freifunk/hosts/ Verzeichnis.
  • vi /etc/config/tinc
    Alles in <spitzen klammern> muss ersetzt werden!

config tinc-net freifunk
        option enabled 1
        # Eindeutiger Rechnername im netz - Darf nur alphanumerische Zeichen und Unterstrich enthalten.
        option Name <nodename>
        # Verbindung zu diesen Nodes aufbauen (public keys austauschen!)
        list ConnectTo <peer 1>
        list ConnectTo <peer 2>
        list ConnectTo <peer n>
        option DirectOnly 1
        option Broadcast direct
        option IndirectData 1
        option Mode switch
        option Port 4223
        option PingInterval 60
        option PingTimeout 10
        option PrivateKeyFile /etc/tinc/freifunk/rsa_key.priv

3. Netzwerk, Firewall und OLSR einrichten

3.1. Netzwerkinterface einrichten

Dazu die Datei /etc/config/network editieren und dort folgendes hinzufügen. Als <tunnel-ip> verwende bitte eine IP aus 10.11.63.x/24 und vergiss auch nicht, diese auf unserer Webseite zu registrieren.

config interface freifunk
        option ifname   freifunk
        option proto    static
        option ipaddr <tunnel-ip>
        option netmask 255.255.255.0

3.2. tinc-up und tinc-down erstellen

  • vi /etc/tinc/freifunk/tinc-up 
#!/bin/sh
ifup freifunk
  • vi /etc/tinc/freifunk/tinc-down 
#!/bin/sh
ifdown freifunk
  • chmod +x /etc/tinc/freifunk/tinc-* 
  • /etc/init.d/tinc enable

3.3. OLSR einrichten

Dazu muß /etc/config/olsrd bearbeitet und folgendes hinzugefügt werden

config Interface
    list interface 'freifunk'
    option 'LinkQualityMult' 'default 0.1'
    option 'HelloInterval' '30.0'
    option 'HelloValidityTime' '180.0'
    option 'TcInterval' '8.0'
    option 'TcValidityTime' '540.0'
    option 'MidInterval' '60.0'
    option 'MidValidityTime' '300.0'
    option 'HnaInterval' '60.0'
    option 'HnaValidityTime' '300.0'

Ist die eigene Internetverbindung schneller als 10Mbps (in die langsamste Richtung), dann sollte LinkQualityMult auf 0.15 gesetzt werden, damit diese schnellen Verbindungen bevorzugt werden.

3.4 Firewall einrichten

Dazu wird /etc/config/firewall editiert und zur Zone "freifunk" das Interface "freifunk" hinzugefügt. Ausserdem muss auf dem Router selber noch Port 4223 udp und tcp eingehend erlaubt werden indem man folgende Regeln zu /etc/config/firewall hinzufügt:

 

config 'zone' 'zone_freifunk'
        option 'input' 'REJECT'
        option 'forward' 'REJECT'
        option 'name' 'freifunk'
        option 'output' 'ACCEPT'
        option 'network' 'wifi0 freifunk'

config rule
        option src              wan
        option dest_port        4223
        option target           ACCEPT

5. Portforward einrichten (wenn nötig)

Wenn ein weiterer Router vor dem Freifunkrouter verwendet wird, muss man in der Regel auf diesem ein Portforwarding einrichten, damit eingehende Pakete auf Port 4223 (udp und tcp) zum Freifunkrouter weitergeleitet werden.

6. Tinc zum ersten mal starten

/etc/init.d/firewall restart
/etc/init.d/tinc start
/etc/init.d/olsrd restart

 

7. Testen

  • tincd -n freifunk -kUSR1 gibt im syslog (logread) die aktuellen Verbindungen aus.
  • noch mehr Infos erhält man mit tincd -n freifunk -kUSR2
  • Mit logread überprüfen, ob eine Verbindung aufgebaut wird

Bei Problemen benutze unseren Chat oder die Mailingliste.

 


							

Achtung!

Seit April 2012 müssen alle Tinc-Nodes eine Tinc-Version mit dem Direct-Broadcast-Patch benutzen, sonst passieren ganz schlimme Dinge.