Tinc_Installation.page 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. ACHTUNG!! In Bearbeitung!!!
  2. Datenquelle https://wiki.leipzig.freifunk.net/
  3. Anpassung an Freifunk Dortmund von Marcel
  4. === Anmerkung ===
  5. 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.
  6. Alle '''''fett und kursiv''''' geschriebenen Werte müssen für den eigenen Node angepasst und alle
  7. Vorkommen von '''''12_7''''' durch die eigene Node-Nummer in der Form ''<Projekt>_<Node>'' ersetzt werden.
  8. === Installation von Tinc ===
  9. ipkg update
  10. ipkg install freifunk-tinc
  11. === Verzeichnisstruktur anlegen ===
  12. mkdir -p /etc/tinc/'''''12_7'''''/hosts/
  13. === Konfigurationsdateien anlegen ===
  14. Nun müssen eine Reihe von Konfigurationsdateien und -scripten angelegt werden damit Tinc ordnungsgemäß
  15. seinen Dienst verrichtet.
  16. ==== Tinc-Konfigurationsdatei ====
  17. vi /etc/tinc/'''''12_7'''''/tinc.conf
  18. # Symbolischer Name für diese Verbindung. (nur alphanumerische Werte und der _ sind erlaubt)
  19. Name = '''''12_7'''''
  20. # Mit welchen anderen Tinc-Daemons soll sich bei Programmstart verbunden werden.
  21. # Entsprechende Host-Konfiguation Dateien in "hosts/" müssen vorhanden sein.
  22. ConnectTo = 116_1
  23. ConnectTo = 17_35
  24. Device = /dev/net/tun
  25. # Name des Tunnelinterfaces, der vergeben werden soll z.B. tun0
  26. Interface = tinc0
  27. AddressFamily = ipv4
  28. Hostnames = yes
  29. Mode = switch
  30. PrivateKeyFile = /etc/tinc/'''''12_7'''''/rsa_key.priv
  31. PingTimeout = 30
  32. ==== Initialisierungsscript "tinc-up" ====
  33. vi /etc/tinc/'''''12_7'''''/tinc-up
  34. #!/bin/sh
  35. # This file is for tinc startup
  36. # -- Konfiguration Start --
  37. TINCPRT=655
  38. TINCADR=104.61.2.'''''12''''' # <-- diese IP auch anpassen! (siehe "Teilnehmer")
  39. TINCBRC=104.61.2.255
  40. TINCPRE=24
  41. TINCDEV=$INTERFACE
  42. # -- Konfiguration Ende --
  43. # Netzparameter laden
  44. eval $(/usr/bin/netparam)
  45. # Tinc Interface konfigurieren
  46. ip addr add $TINCADR/$TINCPRE brd $TINCBRC dev $TINCDEV
  47. # Input auf den Tinc-Port aus dem WAN erlauben
  48. iptables -I INPUT -i $WANDEV -p udp --dport $TINCPRT -j ACCEPT
  49. iptables -I INPUT -i $WANDEV -p tcp --dport $TINCPRT -j ACCEPT
  50. # Input / Output auf dem Tinc-Interface
  51. iptables -I INPUT -d $WIFIADR -i $TINCDEV -j ACCEPT
  52. iptables -I INPUT -d $TINCADR/$TINCPRE -j ACCEPT
  53. iptables -I OUTPUT -s $WIFIADR -o $TINCDEV -j ACCEPT
  54. iptables -I OUTPUT -s $TINCADR/$TINCPRE -j ACCEPT
  55. # Weiterleitungen zwischen Wifi- und Tinc-Interface erlauben
  56. iptables -I FORWARD -i $WIFIDEV -o $TINCDEV -j ACCEPT
  57. iptables -I FORWARD -i $TINCDEV -o $WIFIDEV -j ACCEPT
  58. # Weiterleitungen zwischen LAN- und Tinc-Interface erlauben
  59. iptables -I FORWARD -i $LANDEV -o $TINCDEV -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
  60. iptables -I FORWARD -i $TINCDEV -o $LANDEV -m state --state RELATED,ESTABLISHED -j ACCEPT
  61. # LAN Richtung Tinc natten
  62. iptables -t nat -A POSTROUTING -o $TINCDEV -s $LANNET/$LANPRE -j MASQUERADE
  63. # Interface aktivieren
  64. ip link set dev $TINCDEV up
  65. ==== Shutdownscript "tinc-down" ====
  66. vi /etc/tinc/'''''12_7'''''/tinc-down
  67. #!/bin/sh
  68. # This file closes down the tunnel device und removes corresponding firewall rules.
  69. # -- Konfiguration Start --
  70. TINCPRT=655
  71. TINCADR=104.61.2.'''''12''''' # <-- diese IP auch anpassen!
  72. TINCBRC=104.61.2.255
  73. TINCPRE=24
  74. TINCDEV=$INTERFACE
  75. # -- Konfiguration Ende --
  76. # Netzparameter laden
  77. eval $(/usr/bin/netparam)
  78. # Tinc Interface deaktivieren
  79. ip link set $TINCDEV down
  80. # Input auf den Tinc-Port aus dem WAN verbieten
  81. iptables -D INPUT -i $WANDEV -p udp --dport $TINCPRT -j ACCEPT
  82. iptables -D INPUT -i $WANDEV -p tcp --dport $TINCPRT -j ACCEPT
  83. # Input / Output auf dem Tinc-Interface verbieten
  84. iptables -D INPUT -d $WIFIADR -i $TINCDEV -j ACCEPT
  85. iptables -D INPUT -d $TINCADR/$TINCPRE -j ACCEPT
  86. iptables -D OUTPUT -s $WIFIADR -o $TINCDEV -j ACCEPT
  87. iptables -D OUTPUT -s $TINCADR/$TINCPRE -j ACCEPT
  88. # Weiterleitungen zwischen Wifi- und Tinc-Interface verbieten
  89. iptables -D FORWARD -i $WIFIDEV -o $TINCDEV -j ACCEPT
  90. iptables -D FORWARD -i $TINCDEV -o $WIFIDEV -j ACCEPT
  91. # Weiterleitungen zwischen LAN- und Tinc-Interface verbieten
  92. iptables -D FORWARD -i $LANDEV -o $TINCDEV -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
  93. iptables -D FORWARD -i $TINCDEV -o $LANDEV -m state --state RELATED,ESTABLISHED -j ACCEPT
  94. # LAN-Nat-Regel löschen
  95. iptables -t nat -D POSTROUTING -o $TINCDEV -s $LANNET/$LANPRE -j MASQUERADE
  96. # Interface dekonfigurieren
  97. ip addr del $TINCADR/$TINCPRE brd $TINCBRC dev $TINCDEV
  98. ==== Scripte ausführbar machen ====
  99. Die up- und down-Scripte ausführbar machen:
  100. chmod +x /etc/tinc/'''''12_7'''''/tinc-up
  101. chmod +x /etc/tinc/'''''12_7'''''/tinc-down
  102. ==== OLSR-Konfiguration für das Tinc-Interface ====
  103. vi /etc/local.olsrd.conf-tinc0
  104. Interface "tinc0"
  105. {
  106. HelloInterval 15.0
  107. HelloValidityTime 180.0
  108. TcInterval 10.0
  109. TcValidityTime 270.0
  110. MidInterval 30.0
  111. MidValidityTime 180.0
  112. HnaInterval 30.0
  113. HnaValidityTime 180.0
  114. Ip4Broadcast 104.61.2.255
  115. LinkQualityMult default 0.2
  116. }
  117. ==== Hinweis für den Betrieb hinter einem NAT ====
  118. Wenn der Rechner oder das Gerät, auf dem Tinc installiert ist hinter einer Firewall
  119. hängt, muss zudem der TCP-Tunnelmodus aktiviert werden.
  120. Dazu sollten die Zertifikate der anderen Nodes bearbeitet werden:
  121. vi /etc/tinc/'''''12_7'''''/hosts/*
  122. Dort wird zusätzlich zu den Optionen für Adresse und Port folgende Zeile
  123. vor dem Schlüssel eingefügt:
  124. TCPOnly = yes
  125. === Schlüssel erzeugen ===
  126. tincd -n '''''12_7''''' -K
  127. Der generierte öffentliche Schlüssel sollte ungefähr so aussehen:
  128. cat /etc/tinc/'''''12_7'''''/hosts/'''''12_7'''''
  129. -----BEGIN RSA PUBLIC KEY-----
  130. MIGJAoGBAKHymf+vQFBJzKUswWgCqfz9y0vCAtsH68ejWYwo2HUxEW3OZoPpEAb4
  131. belX9d9xs4PCU22O6lUvIbmUl4UGXXFKiWxhbY15K0+rzrJfdw1mfwo5uveaCGwu
  132. gzQ0hFpactWfL3EufX/fBG4tRreYQH3hDA2nLqam6ee0Gp46ZWr5AgMBAAE=
  133. -----END RSA PUBLIC KEY-----
  134. ==== Die Schlüsseldateien austauschen ====
  135. Beispiel für einen Schlüsselaustausch per ssh:
  136. Zertifikate von anderem Node auf den eig. Node kopieren
  137. scp root@104.61.x.y:/etc/tinc/'''''x_y'''''/hosts/* tinc/'''''12_7'''''/hosts/
  138. Eigenes Zertifikat auf anderen Node kopieren
  139. scp /etc/tinc/'''''12_7'''''/hosts/'''''12_7''''' root@104.61.x.y:/etc/tinc/'''''x_y'''''/hosts
  140. *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].
  141. === Tinc beim Booten automatisch starten ===
  142. Damit Tinc beim Booten automatisch gestartet wird, muss nun
  143. eine Datei mit dem Namen der verwendeten Konfiguration angelegt werden:
  144. vi /etc/tinc/nets.boot
  145. Dort wird der Name der Konfiguration eingetragen:
  146. '''''12_7'''''
  147. === Konfiguration überprüfen ===
  148. Nach dem Anlegen der Konfiguration sollte jetzt folgendes Verzeichnis-Layout existieren:
  149. /etc/tinc/
  150. /etc/tinc/nets.boot
  151. /etc/tinc/'''''12_7'''''/
  152. /etc/tinc/'''''12_7'''''/tinc.conf
  153. /etc/tinc/'''''12_7'''''/tinc-up
  154. /etc/tinc/'''''12_7'''''/tinc-down
  155. /etc/tinc/'''''12_7'''''/rsa_key.priv
  156. /etc/tinc/'''''12_7'''''/hosts/
  157. /etc/tinc/'''''12_7'''''/hosts/'''''12_7'''''
  158. /etc/tinc/'''''12_7'''''/hosts/...
  159. === Tinc-VPN starten ===
  160. Nachdem die Konfiguration beendet wurde kann nun Tinc gestartet werden:
  161. /etc/init.d/S52tinc start
  162. OLSR muss auch neu gestartet werden damit das neue Tinc-Interface aufgenommen wird:
  163. /etc/init.d/S53olsrd restart
  164. In den Logdateien sollten sich nun Meldungen vom Tinc-Daemon finden:
  165. logread -f
  166. === Tinc-VPN-Installation sichern/wiederherstellen ===
  167. In der Node unter [Verwalten] > [Backup] > Backup-Muster:
  168. /etc/tinc/*
  169. /etc/local.olsrd.conf*
  170. ergänzen und auf "Jetzt sichern" drücken.
  171. *vor einem Firmewareupdate wieder/nochmal "Jetzt sichern" wählen (evtl. die Pfade für die Kabelkopplung oder andere Pakete/Verzeichnisse ergänzen)
  172. *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
  173. *anschließend noch unter '''Software 2''' wieder das Paket freifunk-tinc-de installieren und Node mit dem einfachen Neustart starten
  174. *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)