Tinc_Installation.page 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. ACHTUNG!! In Bearbeitung!!!
  2. Datenquelle https://wiki.leipzig.freifunk.net/
  3. Und Emailverkehr der Infa-ffdo Gruppe
  4. Anpassung von Marcel
  5. APU mit Debian 10
  6. Laptop mit Mate 20
  7. === Anmerkung ===
  8. Anleitung für die Installation und Konfiguration für die Verwendung in unserem "Labor- Betrieb"
  9. === Installation von Tinc ===
  10. sudo apt-get update
  11. sudo apt-get install tinc
  12. === Lan Verbindung herstellen ===
  13. Per Netzwerkabel miteinander verbinden ;)
  14. === Feste IP Adresse Anlegen ===
  15. Um Fehler auszuschließen am besten statische IP-Adressen benutzen, die außerhalb des Bereiches vom lokalen DHCP-Servers (zB. F!Box) liegen.Default route dann manuell zum lokalen uplink gateway (zB zur
  16. F!Box) setzen. Konfiguration rebootfest machen (/etc/rc.conf bei BSD, /etc/network/interfaces bei Debian). Die im Folgenden als Beispiel verwendeten private-IP-Adressen natürlich durch die real konfigurierten ersetzen. (Wenn man die Netzwerkkonfiguration der APU versemmelt und nicht mehr per ssh drankommt, gibt's ja zum Glück noch die serielle
  17. Verbindung:-)
  18. In meinem Fall habe ich mich für die Adressen:
  19. Apu (Debian) : 192.168.1.100
  20. Laptop : 192.168.1.99
  21. === Verzeichnisstruktur anlegen ===
  22. mkdir -p /etc/tinc/lan/hosts/
  23. === Konfigurationsdateien "lan" anlegen ===
  24. Nun müssen eine Reihe von Konfigurationsdateien und -scripten angelegt werden damit Tinc ordnungsgemäß
  25. seinen Dienst verrichtet.
  26. ==== Tinc-Konfigurationsdatei ====
  27. vi /etc/tinc/lan/tinc.conf
  28. tinc Instanz aufsetzen (Beschreibung für tinc 1.0.x)
  29. ! Tipp! Für das Übertragen der Einstellungen am besten jeweils mit dem Befehl "cat" arbeiten
  30. Für die tinc-Instanz mit dem Namen "lan" ungefähr Folgendes in die
  31. config Datei .../tinc/lan/tinc.conf schreiben:
  32. Name = apu
  33. Device = /dev/net/tun
  34. Mode = switch
  35. AddressFamily = ipv4
  36. BindToAddress = 192.168.1.100
  37. Port = 10001
  38. MaxTimeout = 30
  39. GraphDumpFile = /var/run/tinc.lan.dot
  40. #LocalDiscovery = yes
  41. ConnectTo = laptop
  42. Und auf dem Laptop ähnliche Daten, bis auf: "Name,BindToAddress und ConnectTo".
  43. Name = laptop
  44. Device = /dev/net/tun
  45. Mode = switch
  46. AddressFamily = ipv4
  47. BindToAddress = 192.168.1.99
  48. Port = 10001
  49. MaxTimeout = 30
  50. GraphDumpFile = /var/run/tinc.lan.dot
  51. #LocalDiscovery = yes
  52. ConnectTo = apu
  53. Nun auf beiden Geräten die Schlüsselpaare generieren:
  54. (Anmerkung: bei mir funktionierte der Befehl nur mit Angabe des Pfades)
  55. tincd -n lan -K 4096
  56. oder
  57. /etc/tinc/lan/inc.conf -n lan -K 4096
  58. Dann in der public key Datei ..
  59. vi etc/tinc/lan/hosts/apu
  60. und
  61. vi etc/tinc/lan/hosts/laptop
  62. die IP-Adresse des hosts oben ergänzen:
  63. Address = 192.168.178.241
  64. Port = 10001
  65. -----BEGIN RSA PUBLIC KEY-----
  66. MIICCgKCAgEAwirLKOYuwraf+MneMpzWqKhv8qCcZCC7yFAN2y+OnT5lXzV/LgwQ
  67. [...]
  68. Nun die Datei .../tinc/lan/hosts/apu von der APU an die gleiche Stelle
  69. auf dem Laptop kopieren. Und umgekehrt .../laptop auf die APU.
  70. ! Zusatzinfos!
  71. # Hier die Erklärungen zu den einzelnen Parametern.
  72. # Mit welchen anderen Tinc-Daemons soll sich bei Programmstart verbunden werden.
  73. # Entsprechende Host-Konfiguation Dateien in "hosts/" müssen vorhanden sein.
  74. ConnectTo = apu
  75. # Name des Tunnelinterfaces, der vergeben werden soll z.B. tun0
  76. # Das zu verwendende virtuelle Netzwerkgerät. tinc erkennt automatisch, um welche Art von Gerät es sich handelt.
  77. # Beachten Sie, dass Sie nur ein Gerät pro Dämon verwenden können.
  78. Device = /dev/net/tun
  79. #Diese Option wirkt sich auf die Adressfamilie der abhörenden und ausgehenden Sockets aus.
  80. # Wenn "any" ausgewählt ist, werden je nach Betriebssystem sowohl IPv4- als auch IPv6- oder nur IPv6-Listening-Sockets erstellt.
  81. AddressFamily = ipv4
  82. # Mitdieser Option wird festgelegt, wie Pakete an andere Daemons weitergeleitet werden
  83. # switch = In diesem Modus werden die MAC-Adressen der Pakete im VPN verwendet, um wie bei
  84. # einem Ethernet-Switch dynamisch eine Routing-Tabelle zu erstellen
  85. Mode = switch
  86. # Wenn Ihr Computer mehr als eine IPv4- oder IPv6-Adresse hat, überwacht tinc standardmäßig alle auf eingehende Verbindungen.
  87. # Es können mehrere BindToAddress- Variablen angegeben werden. In diesem Fall werden Abhörsockets für jede angegebene Adresse erstellt.
  88. BindToAddress =
  89. # Wenn kein Port angegeben ist, wird der Socket an den durch die Option Port angegebenen Port oder an Port 655 gebunden,
  90. # wenn keiner angegeben ist. Um nur Bindung an einen bestimmten Port aber nicht an eine bestimmte Adresse, die Verwendung * für die Adresse .
  91. Port = 10001
  92. # Dies ist die maximale Verzögerung, bevor versucht wird, die Verbindung zu anderen Tinc-Daemons wiederherzustellen.
  93. MaxTimeout = 30
  94. # Wenn diese Option vorhanden ist, speichert tinc das aktuelle Netzwerkdiagramm jede Minute in den Dateinamen der Datei ,
  95. # es sei denn, es wurden keine Änderungen am Diagramm vorgenommen. Die Datei hat ein Format, das von graphviz-Tools gelesen werden kann. # Wenn der Dateiname mit einem Pipe-Symbol | beginnt, wird der Rest des Dateinamens als Shell-Befehl interpretiert, der ausgeführt wird. #Das Diagramm wird dann an stdin gesendet.
  96. GraphDumpFile = /var/run/tinc.lan.dot
  97. ==== Initialisierungsscript "tinc-up" ====
  98. vi /etc/tinc/'''''12_7'''''/tinc-up
  99. #!/bin/sh
  100. # This file is for tinc startup
  101. # -- Konfiguration Start --
  102. TINCPRT=655
  103. TINCADR=104.61.2.'''''12''''' # <-- diese IP auch anpassen! (siehe "Teilnehmer")
  104. TINCBRC=104.61.2.255
  105. TINCPRE=24
  106. TINCDEV=$INTERFACE
  107. # -- Konfiguration Ende --
  108. # Netzparameter laden
  109. eval $(/usr/bin/netparam)
  110. # Tinc Interface konfigurieren
  111. ip addr add $TINCADR/$TINCPRE brd $TINCBRC dev $TINCDEV
  112. # Input auf den Tinc-Port aus dem WAN erlauben
  113. iptables -I INPUT -i $WANDEV -p udp --dport $TINCPRT -j ACCEPT
  114. iptables -I INPUT -i $WANDEV -p tcp --dport $TINCPRT -j ACCEPT
  115. # Input / Output auf dem Tinc-Interface
  116. iptables -I INPUT -d $WIFIADR -i $TINCDEV -j ACCEPT
  117. iptables -I INPUT -d $TINCADR/$TINCPRE -j ACCEPT
  118. iptables -I OUTPUT -s $WIFIADR -o $TINCDEV -j ACCEPT
  119. iptables -I OUTPUT -s $TINCADR/$TINCPRE -j ACCEPT
  120. # Weiterleitungen zwischen Wifi- und Tinc-Interface erlauben
  121. iptables -I FORWARD -i $WIFIDEV -o $TINCDEV -j ACCEPT
  122. iptables -I FORWARD -i $TINCDEV -o $WIFIDEV -j ACCEPT
  123. # Weiterleitungen zwischen LAN- und Tinc-Interface erlauben
  124. iptables -I FORWARD -i $LANDEV -o $TINCDEV -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
  125. iptables -I FORWARD -i $TINCDEV -o $LANDEV -m state --state RELATED,ESTABLISHED -j ACCEPT
  126. # LAN Richtung Tinc natten
  127. iptables -t nat -A POSTROUTING -o $TINCDEV -s $LANNET/$LANPRE -j MASQUERADE
  128. # Interface aktivieren
  129. ip link set dev $TINCDEV up
  130. ==== Shutdownscript "tinc-down" ====
  131. vi /etc/tinc/'''''12_7'''''/tinc-down
  132. #!/bin/sh
  133. # This file closes down the tunnel device und removes corresponding firewall rules.
  134. # -- Konfiguration Start --
  135. TINCPRT=655
  136. TINCADR=104.61.2.'''''12''''' # <-- diese IP auch anpassen!
  137. TINCBRC=104.61.2.255
  138. TINCPRE=24
  139. TINCDEV=$INTERFACE
  140. # -- Konfiguration Ende --
  141. # Netzparameter laden
  142. eval $(/usr/bin/netparam)
  143. # Tinc Interface deaktivieren
  144. ip link set $TINCDEV down
  145. # Input auf den Tinc-Port aus dem WAN verbieten
  146. iptables -D INPUT -i $WANDEV -p udp --dport $TINCPRT -j ACCEPT
  147. iptables -D INPUT -i $WANDEV -p tcp --dport $TINCPRT -j ACCEPT
  148. # Input / Output auf dem Tinc-Interface verbieten
  149. iptables -D INPUT -d $WIFIADR -i $TINCDEV -j ACCEPT
  150. iptables -D INPUT -d $TINCADR/$TINCPRE -j ACCEPT
  151. iptables -D OUTPUT -s $WIFIADR -o $TINCDEV -j ACCEPT
  152. iptables -D OUTPUT -s $TINCADR/$TINCPRE -j ACCEPT
  153. # Weiterleitungen zwischen Wifi- und Tinc-Interface verbieten
  154. iptables -D FORWARD -i $WIFIDEV -o $TINCDEV -j ACCEPT
  155. iptables -D FORWARD -i $TINCDEV -o $WIFIDEV -j ACCEPT
  156. # Weiterleitungen zwischen LAN- und Tinc-Interface verbieten
  157. iptables -D FORWARD -i $LANDEV -o $TINCDEV -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
  158. iptables -D FORWARD -i $TINCDEV -o $LANDEV -m state --state RELATED,ESTABLISHED -j ACCEPT
  159. # LAN-Nat-Regel löschen
  160. iptables -t nat -D POSTROUTING -o $TINCDEV -s $LANNET/$LANPRE -j MASQUERADE
  161. # Interface dekonfigurieren
  162. ip addr del $TINCADR/$TINCPRE brd $TINCBRC dev $TINCDEV
  163. ==== Scripte ausführbar machen ====
  164. Die up- und down-Scripte ausführbar machen:
  165. chmod +x /etc/tinc/'''''12_7'''''/tinc-up
  166. chmod +x /etc/tinc/'''''12_7'''''/tinc-down
  167. ==== OLSR-Konfiguration für das Tinc-Interface ====
  168. vi /etc/local.olsrd.conf-tinc0
  169. Interface "tinc0"
  170. {
  171. HelloInterval 15.0
  172. HelloValidityTime 180.0
  173. TcInterval 10.0
  174. TcValidityTime 270.0
  175. MidInterval 30.0
  176. MidValidityTime 180.0
  177. HnaInterval 30.0
  178. HnaValidityTime 180.0
  179. Ip4Broadcast 104.61.2.255
  180. LinkQualityMult default 0.2
  181. }
  182. ==== Hinweis für den Betrieb hinter einem NAT ====
  183. Wenn der Rechner oder das Gerät, auf dem Tinc installiert ist hinter einer Firewall
  184. hängt, muss zudem der TCP-Tunnelmodus aktiviert werden.
  185. Dazu sollten die Zertifikate der anderen Nodes bearbeitet werden:
  186. vi /etc/tinc/'''''12_7'''''/hosts/*
  187. Dort wird zusätzlich zu den Optionen für Adresse und Port folgende Zeile
  188. vor dem Schlüssel eingefügt:
  189. TCPOnly = yes
  190. === Schlüssel erzeugen ===
  191. tincd -n '''''12_7''''' -K
  192. Der generierte öffentliche Schlüssel sollte ungefähr so aussehen:
  193. cat /etc/tinc/'''''12_7'''''/hosts/'''''12_7'''''
  194. -----BEGIN RSA PUBLIC KEY-----
  195. MIGJAoGBAKHymf+vQFBJzKUswWgCqfz9y0vCAtsH68ejWYwo2HUxEW3OZoPpEAb4
  196. belX9d9xs4PCU22O6lUvIbmUl4UGXXFKiWxhbY15K0+rzrJfdw1mfwo5uveaCGwu
  197. gzQ0hFpactWfL3EufX/fBG4tRreYQH3hDA2nLqam6ee0Gp46ZWr5AgMBAAE=
  198. -----END RSA PUBLIC KEY-----
  199. ==== Die Schlüsseldateien austauschen ====
  200. Beispiel für einen Schlüsselaustausch per ssh:
  201. Zertifikate von anderem Node auf den eig. Node kopieren
  202. scp root@104.61.x.y:/etc/tinc/'''''x_y'''''/hosts/* tinc/'''''12_7'''''/hosts/
  203. Eigenes Zertifikat auf anderen Node kopieren
  204. scp /etc/tinc/'''''12_7'''''/hosts/'''''12_7''''' root@104.61.x.y:/etc/tinc/'''''x_y'''''/hosts
  205. *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].
  206. === Tinc beim Booten automatisch starten ===
  207. Damit Tinc beim Booten automatisch gestartet wird, muss nun
  208. eine Datei mit dem Namen der verwendeten Konfiguration angelegt werden:
  209. vi /etc/tinc/nets.boot
  210. Dort wird der Name der Konfiguration eingetragen:
  211. '''''12_7'''''
  212. === Konfiguration überprüfen ===
  213. Nach dem Anlegen der Konfiguration sollte jetzt folgendes Verzeichnis-Layout existieren:
  214. /etc/tinc/
  215. /etc/tinc/nets.boot
  216. /etc/tinc/'''''12_7'''''/
  217. /etc/tinc/'''''12_7'''''/tinc.conf
  218. /etc/tinc/'''''12_7'''''/tinc-up
  219. /etc/tinc/'''''12_7'''''/tinc-down
  220. /etc/tinc/'''''12_7'''''/rsa_key.priv
  221. /etc/tinc/'''''12_7'''''/hosts/
  222. /etc/tinc/'''''12_7'''''/hosts/'''''12_7'''''
  223. /etc/tinc/'''''12_7'''''/hosts/...
  224. === Tinc-VPN starten ===
  225. Nachdem die Konfiguration beendet wurde kann nun Tinc gestartet werden:
  226. /etc/init.d/S52tinc start
  227. OLSR muss auch neu gestartet werden damit das neue Tinc-Interface aufgenommen wird:
  228. /etc/init.d/S53olsrd restart
  229. In den Logdateien sollten sich nun Meldungen vom Tinc-Daemon finden:
  230. logread -f
  231. === Tinc-VPN-Installation sichern/wiederherstellen ===
  232. In der Node unter [Verwalten] > [Backup] > Backup-Muster:
  233. /etc/tinc/*
  234. /etc/local.olsrd.conf*
  235. ergänzen und auf "Jetzt sichern" drücken.
  236. *vor einem Firmewareupdate wieder/nochmal "Jetzt sichern" wählen (evtl. die Pfade für die Kabelkopplung oder andere Pakete/Verzeichnisse ergänzen)
  237. *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
  238. *anschließend noch unter '''Software 2''' wieder das Paket freifunk-tinc-de installieren und Node mit dem einfachen Neustart starten
  239. *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)