Tinc Installation
Inhaltsverzeichnis |
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 <Projekt>_<Node> 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 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 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)