HOWTO: tinc VPN

Mar 6, 2014 00:00 · 2812 words · 14 minute read

Ich versuche hier ein ausführliches Tutorial bereitzustellen um ein Tinc-Netzwerk einzurichten. Falls es Unklarheiten, Falschangaben, Verbesserungsvorschläge oder sonstige Fragen geben sollte, schreib mir ne Mail oder komm in den Chat und frag da.

Das Tutorial bezieht sich auf die Tinc Versionen < 1.1

Ab Version 1.1 Ändert sich einiges in der Einrichtung. Sobald das stable release davon draußen ist, werde ich sicher noch ein Tut dafür machen.

Noch ein Wort zur hier dargestellten Konfiguration:

Das Client-Server-Schema, das hier beschrieben wird, ist nicht genau die Idee hinter Tinc, da Tinc ein dezentrales VPN ist, können alle Hosts als Client und Server fungieren. Sie Stellen ein Node dar. Ich habe das hier so beschrieben, da die meisten eh nur einen Rechner mit fester IP haben, bei ständiger Verfügbarkeit mehrerer Nodes sollte natürlich bei allen die feste IP bzw. die erreichbare (evtl. dynamische) Adresse eingetragen werden um das Netzwerk wirklich dezentral zu gestalten.

Alle Angaben in [eckigen Klammern] sind variabel und durch dich anzpassen!

Hier sind Links zu den jeweiligen Systemen:

Mac

(von mir getestet unter OSX 10.9.2-10.14.2)

Inhalt

Tinc beziehen:

Der Mac, den wir hier betrachten fungiert als Client. Bei Server-Konfigurationen müssen die config-files entsprechend angepasst werden (Siehe Linux-HOWTO).

Der einfachste Weg, Tinc auf dem Mac zu beziehen, ist per Homebrew. Ich werde im Folgenden auch explizit nur auf die Pfade der Homebrew-Installation eingehen.

Es kann natürlich auch selbst kompiliert werden, dabei musst du aber auf die dependecies achten. Tinc braucht auf jeden Fall XCode und die Libraries von OpenSSL, zlib und lzo. Für die Selbstbauer sei auf jeden Fall das example auf tinc-vpn.org zu empfehlen. Source gibt es hier (Tinc-Webseite) oder hier (direkt Download v1.0.24). Bitte achte darauf, dass die Pfade sich von der Homebrew Version unterscheiden!

Jetzt aber weiter mit Homebrew:

Installation:

Unter OSX <= 10.9 (Mavericks):

Ich brauchte bei meiner Tinc-Installation auch noch tuntap, um die virtuellen Netzwerkinterfaces bereitzustellen (Bitte nach der Installation von tuntap auf die Ausgaben von Homebrew achten und auch ausführen!!).

brew install tuntap
brew install tinc

Die Programmdateien liegen jetzt in /usr/local/Cellar/tinc/ und die Configs müssen nach /usr/local/etc/tinc/ (dieser Ordner ist nach der Installation nicht vorhanden).

Unter OSX >= 10.10 (Yosemite):

Unter Yosemite wird eine neuere Version von tuntap benötigt (wegen dem eingeführten Signing für Kernel-Extensions).
Diese kann per Caskroom bezogen werden:

brew install Caskroom/cask/tuntap
brew install tinc

Die Programmdateien liegen jetzt in /usr/local/Cellar/tinc/ und die Configs müssen nach /usr/local/etc/tinc/ (dieser Ordner ist nach der Installation nicht vorhanden).

Konfiguration:

Als erstes muss das Config-dir und die Ordnerstruktur für ein neues Netzwerk erstellt werden. In diesem Beispiel nennen wir unser erstes Netzwerk [myVPN].

Also:

mkdir /usr/local/etc && mkdir /usr/local/etc/tinc
cd /usr/local/etc/tinc
mkdir ./[myVPN] && mkdir ./[myVPN]/hosts

Danach erstellen wir eine tinc.conf im Netzwerkordner, öffnen sie…

cd /usr/local/etc/tinc/[myVPN]
touch tinc.conf
nano tinc.conf

… und ergänzen folgenden Inhalt:

Name = [myLaptop]
Mode = switch
ConnectTo = [myServer]
Device = /dev/tap0

Dann muss eine Datei für den jeweiligen Host erstellt werden und ein Schlüsselpaar für dein Tinc-Node im Netzwerk [myVPN] erzeugt werden (wir verwenden hier 4096 Bit Schlüssel).

Datei erstellen:

touch /usr/local/etc/tinc/[myVPN]/hosts/[myLaptop]    

Key generieren:

tincd -K 4096 -n [myVPN]
Generating 4096 bits keys:
..........++ p
.....................................................++ q
Done.
Please enter a file to save private RSA key to [/usr/local/etc/tinc/[myVPN]/rsa_key.priv]:
Please enter a file to save public RSA key to [/usr/local/etc/tinc/[myVPN]/hosts/[myLaptop]]:

Dann muss in dem Hosts-File für deinen Rechner noch das zu benutzende Netz bzw. die zugewiesene IP-Adresse eingetragen werden:

nano /usr/local/etc/tinc/[myVPN]/hosts/[myLaptop]

Für ein Subnetz muss eine Angabe mit Maske erfolgen, z.B. 10.0.0.0/24 für die Netzmaske 255.255.255.0

Für eine explizite IP, muss die IP-Adresse angegeben werden, z.B. 10.0.0.1.

Subnet = 10.0.0.2
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEA3socSGbwwkPl+xF8NgdTpEyZHzj+/VdV3xSvXSiIlgQ2QJGNLyeB
ieGJ7BBJv/tqhhLnpZz+W2iHfDSQ8K2HNmy7/JL8g0xH443k/2rcCHV98jrl3/mU
86LEfl7lYOqyhA+JildQRA3HXDQTREaxpLye5KlWOjMG3JcHnic0e4YBu+XiS19O
rcPLBweKmIaNuCFwqTM6lVCfKIuRX1LhHr3tV+j+2Eulo7CmWSqUQerj3H0TzO8i
+ptPVUKnjycYciw6HTEcJTE0ZB8mDESKuMc98vcWk7M636cFqDf+Trxl7GdoLEOD
OAOYU6rw75RThq/5bnHP452Lxi/7E7PfweapyojuCfEQlT6RbpQi9Wn3APCETiDP
xFZOEHJcFkmSKXzu/IdaL0aKARV6l5C6+p8xdwuQYSPmjP2LxeCwv0geyowfO0Ke
LdF7KLCY/MvYLT259KK5a5vuyVNLglx6G+FCccKPvWMB6y63xh7mgdrRB1TkndlB
yRJ6t3gM69oYkW/qN5rjZ0dC9OriHhEX9heDAbeavQ8BRaLzszKVHgO+i5ILCyfT
6Mw0IQEfhAHceEGHvL+QG4j0PPzyDUvmMaywx9lf0jqh1j58boBcQ0qS8SnY/jWS
6KCL4MNUjX2OVjfTVpcUSzaR8hcv1GZMcImopQFoRvGJJQVGpVWiXoMCAwEAAQ==
-----END RSA PUBLIC KEY-----

Note: Dieser Schlüssel wurde für dieses Tutorial erstellt und wird nirgendwo benutzt.

Dann müssen noch die jeweiligen anderen Nodes in den /usr/local/etc/tinc/[myVPN]/hosts/-Ordner eingefügt werden. Der Public Key des jeweiligen Nodes muss dann in die Datei eingefügt werden. Die Dateien der anderen Nodes sehen genau so aus, wie die deines eigenen Nodes.

Wichtig für die Files im Hosts-Ordner:

  • Die Dateinamen der einzelnen Nodes müssen auf allen Hosts identisch sein, bzw. müssen jeweils identisch mit dem Name-Eintrag in der tinc.conf des jeweiligen Nodes sein!
  • Sie müssen den Public Key des jeweiligen Nodes enthalten
  • Mindestens eine Datei muss die von außen erreichbare IP-Adresse oder die URL/Domain von einem Node enthalten (ein Server z.B.), am besten der, der bei ConnectTo eingetragen ist
  • Sie können einen Port enthalten, falls der Node nicht den Standard-Tinc-Port (655) benutzt

Beispieldatei für den node /usr/local/etc/tinc/hosts/[myServer]:

Address = [myServer].dyndns.org
Subnet = 10.0.0.1
Port = 123456 #optional
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEA3socSGbwwkPl+xF8NgdTpEyZHzj+/VdV3xSvXSiIlgQ2QJGNLyeB
ieGJ7BBJv/tqhhLnpZz+W2iHfDSQ8K2HNmy7/JL8g0xH443k/2rcCHV98jrl3/mU
86LEfl7lYOqyhA+JildQRA3HXDQTREaxpLye5KlWOjMG3JcHnic0e4YBu+XiS19O
rcPLBweKmIaNuCFwqTM6lVCfKIuRX1LhHr3tV+j+2Eulo7CmWSqUQerj3H0TzO8i
+ptPVUKnjycYciw6HTEcJTE0ZB8mDESKuMc98vcWk7M636cFqDf+Trxl7GdoLEOD
OAOYU6rw75RThq/5bnHP452Lxi/7E7PfweapyojuCfEQlT6RbpQi9Wn3APCETiDP
xFZOEHJcFkmSKXzu/IdaL0aKARV6l5C6+p8xdwuQYSPmjP2LxeCwv0geyowfO0Ke
LdF7KLCY/MvYLT259KK5a5vuyVNLglx6G+FCccKPvWMB6y63xh7mgdrRB1TkndlB
yRJ6t3gM69oYkW/qN5rjZ0dC9OriHhEX9heDAbeavQ8BRaLzszKVHgO+i5ILCyfT
6Mw0IQEfhAHceEGHvL+QG4j0PPzyDUvmMaywx9lf0jqh1j58boBcQ0qS8SnY/jWS
6KCL4MNUjX2OVjfTVpcUSzaR8hcv1GZMcImopQFoRvGJJQVGpVWiXoMCAwEAAQ==
-----END RSA PUBLIC KEY-----

Note: Ja, das hier ist der selbe Key wie oben, muss aber bei dir der Key des Servers sein!

Nun wird noch ein Script namens tinc-up benötigt um das virtuelle Interface zu starten und eine Adresse im VPN zuzuweisen und Konnektivität zu gewährleisten. Wenn sich die Datei tinc-up im Ordner des Netzwerkes befindet, wird sie vom tincd beim start automatisch mit ausgeführt.

Also Datei erstellen:

cd /usr/local/etc/tinc/[myVPN]
touch tinc-up
chmod +x tinc-up
nano tinc-up

Hier ein Beispielscript mit unserer Konfiguration (ggf. anpassen):

#!/bin/sh
# tinc-up Script for [myLaptop] in [myVPN] Network
INTERFACE="tap0"
TINCADDR="10.0.0.2"
TINCBRDC="10.0.0.255"
TINCNETMASK="255.255.255.0"

ifconfig $INTERFACE $TINCADDR broadcast $TINCBRDC netmask $TINCNETMASK

An dieser Stelle sollte die Konfiguration an sich vollständig sein.

(Diese beiden Dinge sind Optional!)

Normalerweise legt Homebrew automatisch eine Verknüpfung nach /usr/local/sbin/.

Wenn das nicht der Fall sein sollte, kann noch ein Symlink nach /usr/local/sbin/ gelegt werden um den Daemon von überall starten lassen zu können.

ln -s /usr/local/Cellar/tinc/1.0.24/sbin/tincd /usr/local/sbin/

Wir können jetzt noch ein pidfile erstellen um den daemon richtig killen zu können. Dies können wir aber später noch durch das plist file erledigen lassen, falls der tinc-daemon beim booten gestartet werden soll, ist aber an dieser Stelle optional. Bei den meisten Installationen ist es so, dass der Pfad var/run/ noch erstellt werden muss!

touch /usr/local/Cellar/tinc/1.0.24/var/run/tinc.[myVPN].pid

Daemon starten und stoppen

Jetzt kann die Verbindung getestet werden:

sudo tincd -n [myVPN]

Zum Stoppen des daemons (ggf. muss die Versionsnummer angepasst werden):

sudo kill -9 `cat /usr/local/Cellar/tinc/1.0.24/var/run/tinc.[myVPN].pid`

Für eine detaillierte Ausgabe ohne dass der tinc-daemon in den Hintergrund geht, z.B. zur Fehlersuche, hilft folgender Befehl: sudo tincd -n [myVPN] -D –debug=4

Tinc beim booten starten

Damit Tinc beim Start von OS X gleich mit ausgeführt wird, müssen wir noch ein plist file bauen und nach /Library/LaunchDaemons/ packen.

cd /Library/LaunchDaemons/
sudo touch [myVPN].tinc.plist
sudo chown root:wheel [myVPN].tinc.plist
sudo nano [myVPN].tinc.plist

Inhalt der Datei net.tinc.[myVPN].plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>KeepAlive</key>
	<true/>
	<key>Label</key>
	<string>tinc.[myVPN]</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/local/sbin/tincd</string>
		<string>-n</string>
		<string>[myVPN]</string>
		<string>-D</string>
    	<string>--pidfile=/var/run/tinc.[myVPN].pid</string>
	</array>
</dict>
</plist>

Wenn tinc per plist beim booten gestartet wird, ist es nützlich, sich die folgenden Befehle zu merken:

Laufende tinc-daemons anzeigen:

sudo launchctl list | grep 'tinc'

Zum stoppen und zu verhindern, dass tinc wieder gestartet wird (fügt den disabled Key zum Prozess hinzu):

sudo launchctl unload -w /Library/LaunchDaemons/[myVPN].tinc.plist

Inverse Operation dazu wäre (tinc korrekt mit launchd starten):

sudo launchctl load -w /Library/LaunchDaemons/[myVPN].tinc.plist

Dann zum stoppen einfach diesen Befehl nehmen: sudo launchctl stop tinc.[myVPN]

Mehrere Tinc Netze betreiben

Um mehrere Tinc-VPNs auf dem Mac zu betreiben, muss für jedes weitere Netzwerk ein anderer Port als der Standard-Port benutzt werden und jeweils in tinc.conf, [myLaptop] und ggf. auch in [myServer] angegeben werden.

Zudem muss ein anderes Interface bei Device in den Dateien tinc.conf und tinc-up angegeben werden. Die verfügbaren Interfaces sind nach erfolgreicher Installation von tuntap in /dev zu finden.

Folgender Befehl zeigt nur die tap-Interfaces an: ls /dev/ | grep ‘tap’

Linux

(von mir getestet unter Ubuntu 13.10-14.10 und Debian 6.x)

Inhalt

Wir gehen mal davon aus, dass das Linux als Server fungiert, zu dem sich andere Nodes verbinden. Bei anderen Konfigurationen müssen die config-files entsprechend angepasst werden (Für einen Linux-Client z.B. siehe Mac-Configs).

Ich gehe hier auf Debian basierte Systeme ein, da ich Diese hauptsächlich benutze. Bei anderen Distributionen müssen ggf. die Pfade angepasst werden, aber im Groben und Ganzen dürfte das für die meisten Distros natürlich passen.

Tinc beziehen:

Auf Debian basierten Systemen gibt es Tinc in den standard-repositories.

Wie auf dem Mac kann es natürlich auch selbst kompiliert werden, dabei musst du aber auf die dependecies achten. Tinc braucht auf jeden Fall die Libraries von OpenSSL, zlib und lzo. Source gibt es hier (Tinc-Webseite) oder hier (direkt Download v1.0.23).

Installation:

sudo apt-get install tinc

Wichtig sind die Config-Files, denn apt kümmert sich um den ganzen Rest. Diese Liegen in /etc/tinc/.

Konfiguration:

Als erstes muss im Config-dir die Ordnerstruktur für ein neues Netzwerk erstellt werden. In diesem Beispiel nennen wir unser erstes Netzwerk [myVPN].

Also: cd /etc/tinc mkdir ./[myVPN] && mkdir ./[myVPN]/hosts touch nets.boot

Danach erstellen wir eine tinc.conf im Netzwerkordner, öffnen sie…

cd /etc/tinc/[myVPN]
touch tinc.conf
nano tinc.conf

… und ergänzen folgenden Inhalt:

Name = [myServer]
Mode = switch
Interface = [myVPN]_tinc

Dann muss ein Schlüsselpaar für dein Tinc-Node im Netzwerk [myVPN] erzeugt werden:

sudo tincd -K 4096 -n [myVPN]
Generating 4096 bits keys:
..........++ p
.....................................................++ q
Done.
Please enter a file to save private RSA key to [/etc/tinc/[myVPN]/rsa_key.priv]:
Please enter a file to save public RSA key to [/etc/tinc/[myVPN]/hosts/[myServer]]:

Dann muss in dem Hosts-File für deinen Rechner noch das zu benutzende Netz bzw. die zugewiesene IP-Adresse und die von außen erreichbare IP eingetragen werden:

cd ./hosts/
nano [myServer]

Für ein Subnetz muss eine Angabe mit Maske erfolgen, z.B. 10.0.0.0/24 für die Netzmaske 255.255.255.0

Für eine explizite IP, muss die IP-Adresse angegeben werden, z.B. 10.0.0.1.

Address = [myServer].dyndns.org
Subnet = 10.0.0.1
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEA3socSGbwwkPl+xF8NgdTpEyZHzj+/VdV3xSvXSiIlgQ2QJGNLyeB
ieGJ7BBJv/tqhhLnpZz+W2iHfDSQ8K2HNmy7/JL8g0xH443k/2rcCHV98jrl3/mU
86LEfl7lYOqyhA+JildQRA3HXDQTREaxpLye5KlWOjMG3JcHnic0e4YBu+XiS19O
rcPLBweKmIaNuCFwqTM6lVCfKIuRX1LhHr3tV+j+2Eulo7CmWSqUQerj3H0TzO8i
+ptPVUKnjycYciw6HTEcJTE0ZB8mDESKuMc98vcWk7M636cFqDf+Trxl7GdoLEOD
OAOYU6rw75RThq/5bnHP452Lxi/7E7PfweapyojuCfEQlT6RbpQi9Wn3APCETiDP
xFZOEHJcFkmSKXzu/IdaL0aKARV6l5C6+p8xdwuQYSPmjP2LxeCwv0geyowfO0Ke
LdF7KLCY/MvYLT259KK5a5vuyVNLglx6G+FCccKPvWMB6y63xh7mgdrRB1TkndlB
yRJ6t3gM69oYkW/qN5rjZ0dC9OriHhEX9heDAbeavQ8BRaLzszKVHgO+i5ILCyfT
6Mw0IQEfhAHceEGHvL+QG4j0PPzyDUvmMaywx9lf0jqh1j58boBcQ0qS8SnY/jWS
6KCL4MNUjX2OVjfTVpcUSzaR8hcv1GZMcImopQFoRvGJJQVGpVWiXoMCAwEAAQ==
-----END RSA PUBLIC KEY-----

Note: Dieser Schlüssel wurde für dieses Tutorial erstellt und wird nirgendwo benutzt.

Dann müssen noch die jeweiligen anderen Nodes in den /etc/tinc/[myVPN]/hosts/-Ordner eingefügt werden. Die Dateien der anderen Nodes sehen genau so aus, wie die deines eigenen Nodes. Der Public Key des jeweiligen Nodes muss dann in die Datei eingefügt werden.

** Wichtig für die Files im Hosts-Ordner: **

  • Die Dateinamen der einzelnen Nodes müssen auf allen Hosts identisch sein, bzw. müssen jeweils identisch mit dem Name-Eintrag in der tinc.conf des jeweiligen Nodes sein!
  • Sie müssen den Public Key des jeweiligen Nodes enthalten
  • Die Datei vom Server sollte eine von außen erreichbare IP-Adresse oder die URL/Domain enthalten
  • Sie können einen Port enthalten, falls der Node nicht den Standard-Tinc-Port (655) benutzt

Beispieldatei für den node /etc/tinc/hosts/[myLaptop]:

Subnet = 10.0.0.2
Port = 123456 #optional
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEA3socSGbwwkPl+xF8NgdTpEyZHzj+/VdV3xSvXSiIlgQ2QJGNLyeB
ieGJ7BBJv/tqhhLnpZz+W2iHfDSQ8K2HNmy7/JL8g0xH443k/2rcCHV98jrl3/mU
86LEfl7lYOqyhA+JildQRA3HXDQTREaxpLye5KlWOjMG3JcHnic0e4YBu+XiS19O
rcPLBweKmIaNuCFwqTM6lVCfKIuRX1LhHr3tV+j+2Eulo7CmWSqUQerj3H0TzO8i
+ptPVUKnjycYciw6HTEcJTE0ZB8mDESKuMc98vcWk7M636cFqDf+Trxl7GdoLEOD
OAOYU6rw75RThq/5bnHP452Lxi/7E7PfweapyojuCfEQlT6RbpQi9Wn3APCETiDP
xFZOEHJcFkmSKXzu/IdaL0aKARV6l5C6+p8xdwuQYSPmjP2LxeCwv0geyowfO0Ke
LdF7KLCY/MvYLT259KK5a5vuyVNLglx6G+FCccKPvWMB6y63xh7mgdrRB1TkndlB
yRJ6t3gM69oYkW/qN5rjZ0dC9OriHhEX9heDAbeavQ8BRaLzszKVHgO+i5ILCyfT
6Mw0IQEfhAHceEGHvL+QG4j0PPzyDUvmMaywx9lf0jqh1j58boBcQ0qS8SnY/jWS
6KCL4MNUjX2OVjfTVpcUSzaR8hcv1GZMcImopQFoRvGJJQVGpVWiXoMCAwEAAQ==
-----END RSA PUBLIC KEY-----

Note: Ja, das hier ist der selbe Key wie oben, muss aber bei dir der Key des Servers sein!

Nun wird noch ein Script namens tinc-up benötigt um das virtuelle Interface zu starten. Wenn sich die Datei tinc-up im Ordner des Netzwerkes befindet, wird sie vom tincd gleich mit ausgeführt.

Also Datei erstellen:

cd /etc/tinc/[myVPN]
touch tinc-up
chmod +x tinc-up
nano tinc-up

Hier ein Beispielscript mit unserer Konfiguration:

#!/bin/sh
# tinc-up Script for [myServer] in [myVPN] Network
TINCADDR="10.0.0.1"
TINCBRDC="10.0.0.255"
TINCNETMASK="255.255.255.0"

ifconfig $INTERFACE $TINCADDR broadcast $TINCBRDC netmask $TINCNETMASK

Damit sollte die Konfiguration an sich vollständig sein.

Daemon starten und stoppen

Jetzt kann die Verbindung getestet werden:

sudo tincd -n [myVPN]

Zum Stoppen des daemons (ggf. muss die Versionsnummer angepasst werden): sudo kill -9 cat /var/run/tinc.[myVPN].pid

Für eine detaillierte Ausgabe ohne dass der tinc-daemon in den Hintergrund geht, z.B. zur Fehlersuche, hilft folgender Befehl: sudo tincd -n [myVPN] -D –debug=4

Tinc beim booten starten

Damit Tinc beim Start von Linux ausgeführt wird, müssen einfach die Netze, die gestartet werden sollen in die Datei /etc/tinc/nets.boot eingetragen werden. Ein Netzwerk pro Zeile.

Dann dürfte das Startscript in /etc/init.d/ aktiviert sein und tinc kann per sudo service tinc start|stop|restart|reload|force-reload|alarm gestartet, gestoppt, neu gestartet, usw. werden.

Mehrere Tinc Netze betreiben

Um mehrere Tinc-VPNs auf einem Linux-System zu betreiben, musst du jeweils neue Ordner für Netze anlegen und das Tutorial einfach noch einmal durchgehen.

Zudem muss das Interface bei Interface in der tinc.conf umbenannt werden, damit tinc für das andere Netzwerk ein neues Interface erstellt.

Windows

(von mir getestet unter Windows 8.1 Pro 64-Bit)

Inhalt

Tinc beziehen:

Wir gehen mal davon aus, dass das Windows als Client fungiert, der sich zu unserem Server verbindet. Bei Server-Konfigurationen müssen die config-files entsprechend angepasst werden (Siehe Linux-HOWTO).

Ich gehe hier auf Windows 8.1 64-Bit ein, da dies das einzige Windows war, das ich zur Hand hatte.

Die Tinc Installationsdatei gibt es als Download auf der Tinc-Webseite oder hier als direkten Download (v1.0.23).

Installation:

Einfach die Datei tinc-1.0.23-install.exe ausführen.

Wichtig sind auch hier die Config-Files. Diese Liegen in C:\Program Files (x86)\tinc.

(Bei einem 32-Bit System wahrscheinlich in C:\Program Files\tinc.)

Konfiguration:

Als erstes muss im Config-Dir die Ordnerstruktur für ein neues Netzwerk erstellt werden. In diesem Beispiel nennen wir unser erstes Netzwerk [myVPN].

Also öffnen wir eine Eingabeaufforderung (CMD) mit Administratorrechten (Rechtsklick -> Als Admin ausführen). Dann geben wir folgendes ein:

cd C:\Program Files (x86)\tinc
mkdir [myVPN]
cd [myVPN]
mkdir hosts

(Die Eingabeaufforderung offen lassen!)

Danach öffnen wir den Editor ebenfalls mit Administratorrechten (Rechtsklick -> Als Admin ausführen) und speichern die Datei als tinc.conf unter C:\Program Files (x86)\tinc\[myVPN] (Bitte darauf achten, dass die Datei nicht als .txt gespeichert wird!).

Danach ergänzen wir folgenden Inhalt:

Name = [myLaptop]
Mode = switch
ConnectTo = [myServer]
Interface = MyNetwork_tinc

(Editor ebenfalls offen lassen!)

Dann muss ein Schlüsselpaar für dein Tinc-Node im Netzwerk [myVPN] erzeugt werden, wir geben folgendes ins CMD ein:

cd C:\Program Files (x86)\tinc
tincd -n [myVPN] -K 4096
Generating 4096 bits keys:
..........++ p
.....................................................++ q
Done.
Please enter a file to save private RSA key to [C:\Program Files (x86)\tinc\[myVPN]\rsa_key.priv]:
Please enter a file to save public RSA key to [C:\Program Files (x86)\tinc\[myVPN]\hosts\[myLaptop]]:

Dann muss in dem Hosts-File für deinen Rechner (in unserem Fall [myLaptop]) noch das zu benutzende Netz bzw. die zugewiesene IP-Adresse und die von außen erreichbare IP eingetragen werden:

Editor Öffnen C:\Program Files (x86)\tinc\[myVPN]\hosts\[myLaptop]

Für ein Subnetz muss eine Angabe mit Maske erfolgen, z.B. 10.0.0.0/24 für die Netzmaske 255.255.255.0

Für eine explizite IP, muss die IP-Adresse angegeben werden, z.B. 10.0.0.1.

Subnet = 10.0.0.3
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEA3socSGbwwkPl+xF8NgdTpEyZHzj+/VdV3xSvXSiIlgQ2QJGNLyeB
ieGJ7BBJv/tqhhLnpZz+W2iHfDSQ8K2HNmy7/JL8g0xH443k/2rcCHV98jrl3/mU
86LEfl7lYOqyhA+JildQRA3HXDQTREaxpLye5KlWOjMG3JcHnic0e4YBu+XiS19O
rcPLBweKmIaNuCFwqTM6lVCfKIuRX1LhHr3tV+j+2Eulo7CmWSqUQerj3H0TzO8i
+ptPVUKnjycYciw6HTEcJTE0ZB8mDESKuMc98vcWk7M636cFqDf+Trxl7GdoLEOD
OAOYU6rw75RThq/5bnHP452Lxi/7E7PfweapyojuCfEQlT6RbpQi9Wn3APCETiDP
xFZOEHJcFkmSKXzu/IdaL0aKARV6l5C6+p8xdwuQYSPmjP2LxeCwv0geyowfO0Ke
LdF7KLCY/MvYLT259KK5a5vuyVNLglx6G+FCccKPvWMB6y63xh7mgdrRB1TkndlB
yRJ6t3gM69oYkW/qN5rjZ0dC9OriHhEX9heDAbeavQ8BRaLzszKVHgO+i5ILCyfT
6Mw0IQEfhAHceEGHvL+QG4j0PPzyDUvmMaywx9lf0jqh1j58boBcQ0qS8SnY/jWS
6KCL4MNUjX2OVjfTVpcUSzaR8hcv1GZMcImopQFoRvGJJQVGpVWiXoMCAwEAAQ==
-----END RSA PUBLIC KEY-----

Note: Dieser Schlüssel wurde für dieses Tutorial erstellt und wird nirgendwo benutzt.

Dann müssen wir noch die Dateien für jeweiligen anderen Nodes in den C:\Program Files (x86)\tinc\[myVPN]\hosts\-Ordner legen. Der Public Key des jeweiligen Nodes muss dann in die Datei eingefügt werden. Die Dateien der anderen Nodes sehen genau so aus, wie die deines eigenen Nodes.

** Wichtig für die Files im Hosts-Ordner: **

  • Die Dateinamen der einzelnen Nodes müssen auf allen Hosts identisch sein, bzw. müssen jeweils identisch mit dem Name-Eintrag in der tinc.conf des jeweiligen Nodes sein!
  • Sie müssen den Public Key des jeweiligen Nodes enthalten
  • Die Datei vom Server sollte eine von außen erreichbare IP-Adresse oder die URL/Domain enthalten
  • Sie können einen Port enthalten, falls der Node nicht den Standard-Tinc-Port (655) benutzt

Beispieldatei für den node C:\Program Files (x86)\tinc\[myVPN]\hosts\[myServer]:

Address = [myServer].dyndns.org
Subnet = 10.0.0.2
Port = 123456 #optional
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEA3socSGbwwkPl+xF8NgdTpEyZHzj+/VdV3xSvXSiIlgQ2QJGNLyeB
ieGJ7BBJv/tqhhLnpZz+W2iHfDSQ8K2HNmy7/JL8g0xH443k/2rcCHV98jrl3/mU
86LEfl7lYOqyhA+JildQRA3HXDQTREaxpLye5KlWOjMG3JcHnic0e4YBu+XiS19O
rcPLBweKmIaNuCFwqTM6lVCfKIuRX1LhHr3tV+j+2Eulo7CmWSqUQerj3H0TzO8i
+ptPVUKnjycYciw6HTEcJTE0ZB8mDESKuMc98vcWk7M636cFqDf+Trxl7GdoLEOD
OAOYU6rw75RThq/5bnHP452Lxi/7E7PfweapyojuCfEQlT6RbpQi9Wn3APCETiDP
xFZOEHJcFkmSKXzu/IdaL0aKARV6l5C6+p8xdwuQYSPmjP2LxeCwv0geyowfO0Ke
LdF7KLCY/MvYLT259KK5a5vuyVNLglx6G+FCccKPvWMB6y63xh7mgdrRB1TkndlB
yRJ6t3gM69oYkW/qN5rjZ0dC9OriHhEX9heDAbeavQ8BRaLzszKVHgO+i5ILCyfT
6Mw0IQEfhAHceEGHvL+QG4j0PPzyDUvmMaywx9lf0jqh1j58boBcQ0qS8SnY/jWS
6KCL4MNUjX2OVjfTVpcUSzaR8hcv1GZMcImopQFoRvGJJQVGpVWiXoMCAwEAAQ==
-----END RSA PUBLIC KEY-----

Note: Ja, das hier ist der selbe Key wie oben, muss aber bei dir der Key des Servers sein!

Interface erstellen

Der Installer erstellt leider kein Interface für Tinc, daher müssen wir das manuell machen:

Wir geben ins CMD ein (die Zeilen mit einem Pfad davor sind Systemausgaben):

cd C:\Program Files (x86)\tinc\tap-win64
addtap.bat

C:\Program Files (x86)\tinc\tap-win64>rem Add a new TAP virtual ethernet adapter


C:\Program Files (x86)\tinc\tap-win64>tapinstall.exe install OemWin2k.inf tap0901
Device node created. Install is complete when drivers are installed...
Updating drivers for tap0901 from C:\Program Files (x86)\tinc\tap-win64\OemWin2k.inf.
Drivers installed successfully.

C:\Program Files (x86)\tinc\tap-win64>pause
Drücken Sie eine beliebige Taste . . .

Nun müssen wir noch die IP-Adresse für das Interface einstellen:

Systemsteuerung Netzwerk- und Freigabecenter Adaptereinstellungen ändern LAN-Verbindung (TAP-Win32 Adapter V9) Internet Protokoll Version 4 (TCP/IPv4) Folgende IP-Adresse verwenden:

IP-Adresse 10.0.0.2 und Subnetzmaske 255.255.255.0 eintragen.

Beide offenen Fenster mit OK bestätigen und das Interface umbenennen in MyNetwork_tinc (in den Namen, der in der tinc.conf unter Interfaceangegeben ist).

Damit dürfte die Konfiguration fertig sein.

Daemon starten

Jetzt kann die Verbindung getartet werden:

cd C:\Program Files (x86)\tinc
tincd -n [myVPN]

Tinc beim booten starten

Wenn Windows mit einem gestarteten Tinc-Daemon herunterfährt, müsste es diesen auch beim booten wieder starten und das Interface aktivieren. Der Dienst kann dann unter

Systemsteuerung Verwaltung Dienste tinc.[myVPN]

gesteuert werden.

Mehrere Tinc Netze betreiben

Um mehrere Tinc-VPNs auf einem Windows-System zu betreiben, musst du unter C:\Program Files (x86)\tinc jeweils neue Ordner für die Netze anlegen und das Tutorial noch einmal durchgehen. Es müssen auch für jedes weitere Netzwerk neue TAP-Interfaces erzeugt werden.