ACHTUNG!! In Bearbeitung!!! Datenquelle https://wiki.leipzig.freifunk.net/ Anpassung an Freifunk Dortmund von Marcel === Anmerkung === Erstellt wurde diese Anleitung mit dem VI-Editor. Wenn ihr es mit Putty installiert, müsst ihr nur das "vi" durch ein "edit" ersetzen. Diese Anleitung verwendet die 104.61.12.7 als Beispielnode. Alle '''''fett und kursiv''''' geschriebenen Werte müssen für den eigenen Node angepasst und alle Vorkommen von '''''12_7''''' durch die eigene Node-Nummer in der Form ''_'' ersetzt werden. === Installation von Tinc === ipkg update ipkg install freifunk-tinc === Verzeichnisstruktur anlegen === mkdir -p /etc/tinc/'''''12_7'''''/hosts/ === Konfigurationsdateien anlegen === Nun müssen eine Reihe von Konfigurationsdateien und -scripten angelegt werden damit Tinc ordnungsgemäß seinen Dienst verrichtet. ==== Tinc-Konfigurationsdatei ==== vi /etc/tinc/'''''12_7'''''/tinc.conf # Symbolischer Name für diese Verbindung. (nur alphanumerische Werte und der _ sind erlaubt) Name = '''''12_7''''' # Mit welchen anderen Tinc-Daemons soll sich bei Programmstart verbunden werden. # Entsprechende Host-Konfiguation Dateien in "hosts/" müssen vorhanden sein. ConnectTo = 116_1 ConnectTo = 17_35 Device = /dev/net/tun # Name des Tunnelinterfaces, der vergeben werden soll z.B. tun0 Interface = tinc0 AddressFamily = ipv4 Hostnames = yes Mode = switch PrivateKeyFile = /etc/tinc/'''''12_7'''''/rsa_key.priv PingTimeout = 30 ==== Initialisierungsscript "tinc-up" ==== vi /etc/tinc/'''''12_7'''''/tinc-up #!/bin/sh # This file is for tinc startup # -- Konfiguration Start -- TINCPRT=655 TINCADR=104.61.2.'''''12''''' # <-- diese IP auch anpassen! (siehe "Teilnehmer") TINCBRC=104.61.2.255 TINCPRE=24 TINCDEV=$INTERFACE # -- Konfiguration Ende -- # Netzparameter laden eval $(/usr/bin/netparam) # Tinc Interface konfigurieren ip addr add $TINCADR/$TINCPRE brd $TINCBRC dev $TINCDEV # Input auf den Tinc-Port aus dem WAN erlauben iptables -I INPUT -i $WANDEV -p udp --dport $TINCPRT -j ACCEPT iptables -I INPUT -i $WANDEV -p tcp --dport $TINCPRT -j ACCEPT # Input / Output auf dem Tinc-Interface iptables -I INPUT -d $WIFIADR -i $TINCDEV -j ACCEPT iptables -I INPUT -d $TINCADR/$TINCPRE -j ACCEPT iptables -I OUTPUT -s $WIFIADR -o $TINCDEV -j ACCEPT iptables -I OUTPUT -s $TINCADR/$TINCPRE -j ACCEPT # Weiterleitungen zwischen Wifi- und Tinc-Interface erlauben iptables -I FORWARD -i $WIFIDEV -o $TINCDEV -j ACCEPT iptables -I FORWARD -i $TINCDEV -o $WIFIDEV -j ACCEPT # Weiterleitungen zwischen LAN- und Tinc-Interface erlauben iptables -I FORWARD -i $LANDEV -o $TINCDEV -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -I FORWARD -i $TINCDEV -o $LANDEV -m state --state RELATED,ESTABLISHED -j ACCEPT # LAN Richtung Tinc natten iptables -t nat -A POSTROUTING -o $TINCDEV -s $LANNET/$LANPRE -j MASQUERADE # Interface aktivieren ip link set dev $TINCDEV up ==== Shutdownscript "tinc-down" ==== vi /etc/tinc/'''''12_7'''''/tinc-down #!/bin/sh # This file closes down the tunnel device und removes corresponding firewall rules. # -- Konfiguration Start -- TINCPRT=655 TINCADR=104.61.2.'''''12''''' # <-- diese IP auch anpassen! TINCBRC=104.61.2.255 TINCPRE=24 TINCDEV=$INTERFACE # -- Konfiguration Ende -- # Netzparameter laden eval $(/usr/bin/netparam) # Tinc Interface deaktivieren ip link set $TINCDEV down # Input auf den Tinc-Port aus dem WAN verbieten iptables -D INPUT -i $WANDEV -p udp --dport $TINCPRT -j ACCEPT iptables -D INPUT -i $WANDEV -p tcp --dport $TINCPRT -j ACCEPT # Input / Output auf dem Tinc-Interface verbieten iptables -D INPUT -d $WIFIADR -i $TINCDEV -j ACCEPT iptables -D INPUT -d $TINCADR/$TINCPRE -j ACCEPT iptables -D OUTPUT -s $WIFIADR -o $TINCDEV -j ACCEPT iptables -D OUTPUT -s $TINCADR/$TINCPRE -j ACCEPT # Weiterleitungen zwischen Wifi- und Tinc-Interface verbieten iptables -D FORWARD -i $WIFIDEV -o $TINCDEV -j ACCEPT iptables -D FORWARD -i $TINCDEV -o $WIFIDEV -j ACCEPT # Weiterleitungen zwischen LAN- und Tinc-Interface verbieten iptables -D FORWARD -i $LANDEV -o $TINCDEV -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -D FORWARD -i $TINCDEV -o $LANDEV -m state --state RELATED,ESTABLISHED -j ACCEPT # LAN-Nat-Regel löschen iptables -t nat -D POSTROUTING -o $TINCDEV -s $LANNET/$LANPRE -j MASQUERADE # Interface dekonfigurieren ip addr del $TINCADR/$TINCPRE brd $TINCBRC dev $TINCDEV ==== Scripte ausführbar machen ==== Die up- und down-Scripte ausführbar machen: chmod +x /etc/tinc/'''''12_7'''''/tinc-up chmod +x /etc/tinc/'''''12_7'''''/tinc-down ==== OLSR-Konfiguration für das Tinc-Interface ==== vi /etc/local.olsrd.conf-tinc0 Interface "tinc0" { HelloInterval 15.0 HelloValidityTime 180.0 TcInterval 10.0 TcValidityTime 270.0 MidInterval 30.0 MidValidityTime 180.0 HnaInterval 30.0 HnaValidityTime 180.0 Ip4Broadcast 104.61.2.255 LinkQualityMult default 0.2 } ==== Hinweis für den Betrieb hinter einem NAT ==== Wenn der Rechner oder das Gerät, auf dem Tinc installiert ist hinter einer Firewall hängt, muss zudem der TCP-Tunnelmodus aktiviert werden. Dazu sollten die Zertifikate der anderen Nodes bearbeitet werden: vi /etc/tinc/'''''12_7'''''/hosts/* Dort wird zusätzlich zu den Optionen für Adresse und Port folgende Zeile vor dem Schlüssel eingefügt: TCPOnly = yes === Schlüssel erzeugen === tincd -n '''''12_7''''' -K Der generierte öffentliche Schlüssel sollte ungefähr so aussehen: cat /etc/tinc/'''''12_7'''''/hosts/'''''12_7''''' -----BEGIN RSA PUBLIC KEY----- MIGJAoGBAKHymf+vQFBJzKUswWgCqfz9y0vCAtsH68ejWYwo2HUxEW3OZoPpEAb4 belX9d9xs4PCU22O6lUvIbmUl4UGXXFKiWxhbY15K0+rzrJfdw1mfwo5uveaCGwu gzQ0hFpactWfL3EufX/fBG4tRreYQH3hDA2nLqam6ee0Gp46ZWr5AgMBAAE= -----END RSA PUBLIC KEY----- ==== Die Schlüsseldateien austauschen ==== Beispiel für einen Schlüsselaustausch per ssh: Zertifikate von anderem Node auf den eig. Node kopieren scp root@104.61.x.y:/etc/tinc/'''''x_y'''''/hosts/* tinc/'''''12_7'''''/hosts/ Eigenes Zertifikat auf anderen Node kopieren scp /etc/tinc/'''''12_7'''''/hosts/'''''12_7''''' root@104.61.x.y:/etc/tinc/'''''x_y'''''/hosts *Hinweis: Keys müssen mit anderen Nodes ausgestauscht werden (mind. 2 - mit Angabe der Nodes unter /etc/tinc/x_y/tinc.conf und ConnectTo = a_b, sowie ablegen deren Schlüssel unter tinc/x_y/hosts/a_b), ansonsten kann Tinc keine Verbindung aufbauen - hierzu hilft euch ein wenig das [http://wiki.leipzig.freifunk.net/Projekt2 Projekt 2], dort könnt ihr euch die Schlüssel von den anderen Tinc-Nodes kopieren und auch eure erzeugten '''öffentlichen'''-Schlüssel (in der Node unter /etc/tinc/x_y/hosts/x_y zu finden x_y = wieder eure Node-IP) ablegen. Nun müsst ihr nur noch die Tinc-Nodeadmins um Aufname eurer im Wiki abgelegten Keys bitten, am besten über E-Mail oder im [http://wiki.leipzig.freifunk.net/Jabber Jabber]. === Tinc beim Booten automatisch starten === Damit Tinc beim Booten automatisch gestartet wird, muss nun eine Datei mit dem Namen der verwendeten Konfiguration angelegt werden: vi /etc/tinc/nets.boot Dort wird der Name der Konfiguration eingetragen: '''''12_7''''' === Konfiguration überprüfen === Nach dem Anlegen der Konfiguration sollte jetzt folgendes Verzeichnis-Layout existieren: /etc/tinc/ /etc/tinc/nets.boot /etc/tinc/'''''12_7'''''/ /etc/tinc/'''''12_7'''''/tinc.conf /etc/tinc/'''''12_7'''''/tinc-up /etc/tinc/'''''12_7'''''/tinc-down /etc/tinc/'''''12_7'''''/rsa_key.priv /etc/tinc/'''''12_7'''''/hosts/ /etc/tinc/'''''12_7'''''/hosts/'''''12_7''''' /etc/tinc/'''''12_7'''''/hosts/... === Tinc-VPN starten === Nachdem die Konfiguration beendet wurde kann nun Tinc gestartet werden: /etc/init.d/S52tinc start OLSR muss auch neu gestartet werden damit das neue Tinc-Interface aufgenommen wird: /etc/init.d/S53olsrd restart In den Logdateien sollten sich nun Meldungen vom Tinc-Daemon finden: logread -f === Tinc-VPN-Installation sichern/wiederherstellen === In der Node unter [Verwalten] > [Backup] > Backup-Muster: /etc/tinc/* /etc/local.olsrd.conf* ergänzen und auf "Jetzt sichern" drücken. *vor einem Firmewareupdate wieder/nochmal "Jetzt sichern" wählen (evtl. die Pfade für die Kabelkopplung oder andere Pakete/Verzeichnisse ergänzen) *Firmwareupdate durchführen, anschließend bei der IP-Vergabe den '''''Expertenmodus''''' wählen und dort das Häckchen bei '''''gesicherte Daten wiederherstellen''''' (evtl. noch LAN-/WAN-Einstellungen beibehalten) setzen und neustarten *anschließend noch unter '''Software 2''' wieder das Paket freifunk-tinc-de installieren und Node mit dem einfachen Neustart starten *nun sollten alle Tinc-VPN-Nachbarn wieder vorhanden sein (sofern ihr keinen Pfad beim Sichern vergessen habt - Beachtung liegt bei Kabelkopplungen und Firewallregeln für neue Interfaces wie z.B. bei WAN-LAN-Kopplungen, bei WAN-WAN könnt ihr das mit den Häcken drunter (Http / Https / Ssl / Ping) setzen)