123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- 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 ''<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 [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)
|