VPN Installation · 13 min read · Dec 21, 2025
Installation eines VPN mit Tinc auf Ubuntu 16.04 LTS
Ein Virtuelles Privates Netzwerk (VPN) ist ein sicheres privates Netzwerk, das über ein größeres öffentliches Netzwerk wie das Internet betrieben wird. VPNs sind in den letzten Jahren zunehmend beliebt geworden, hauptsächlich weil sie erhöhte Sicherheit und Privatsphäre bieten, ohne dass teure und komplexe neue Hardware eingerichtet werden muss. Sie bieten auch mehrere andere Vorteile, einschließlich reduzierter Netzwerk- und Supportkosten.
VPNs funktionieren, indem sie einen verschlüsselten Tunnel durch ein öffentliches Netzwerk erstellen und diesen verwenden, um Daten sicher zwischen Servern und Terminals zu senden. Diese Verbindungen können auf verschiedene Weise verschlüsselt werden, und es gibt viele verschiedene VPN-Clients und Daemons, die zu Ihrer Architektur, Ihrem Budget und Ihrem Erfahrungsgrad passen.
Tinc ist eine solche Lösung (1). Ein Open-Source-VPN-Daemon, der jetzt für eine Vielzahl von Plattformen verfügbar ist und mehrere Vorteile gegenüber ähnlichen VPN-Clients bietet. Es bietet sichere und zuverlässige Verschlüsselung, optionale Kompression und ist leicht erweiterbar, während Ihr Netzwerk wächst. Das automatische Voll-Mesh-Routing bedeutet, dass VPN-Verkehr immer (wann immer möglich) direkt zur Zielmaschine gesendet wird, ohne Zwischenübertragungen, und dies verbessert die Sicherheit erheblich, indem die Möglichkeit des Datendiebstahls eingeschränkt wird (3). Darüber hinaus, da das Tinc-VPN auf der IP-Ebene des Netzwerkcodes als normales Netzwerkgerät erscheint, ist nach der Einrichtung eines Tinc-VPN keine Anpassung bestehender Software erforderlich. Dies macht das Tinc-VPN von Natur aus skalierbar.
Das einzige kleine Problem mit Tinc ist, dass einige Leute es als etwas knifflig empfunden haben, es einzurichten. Wenn das nach Ihnen klingt, keine Angst – heute werde ich Sie durch eine (mehr oder weniger) problemlose Möglichkeit führen, ein Tinc-VPN auf Ihren Servern einzurichten.
Voraussetzungen
Um dieses Tutorial vollständig zu befolgen, benötigen Sie mindestens drei Ubuntu 16.04-Server und Root-Zugriff auf jeder Maschine. Wenn Sie dies nicht haben oder sich nicht sicher sind, was das bedeutet, ist dieses Tutorial nicht für Sie – Sie sollten zuerst überprüfen, wie man einen Server mit Ubuntu einrichtet (2).
Wenn Sie ein Serversystem von Grund auf neu erstellen, müssen Sie zuerst darüber nachdenken, wie Ihre Maschinen miteinander kommunizieren werden. In diesem Tutorial werde ich die Variablen verwenden, die ich denke, dass die meisten Leute wählen würden, aber seien Sie sich bewusst, dass Sie möglicherweise einige der Variablennamen an Ihr eigenes Setup anpassen müssen.
Wenn Sie dieses Tutorial genau befolgen möchten, müssen Sie zuerst zwei VPS im selben Rechenzentrum einrichten und dann einen dritten VPS in einem zweiten Rechenzentrum erstellen. Meine Rechenzentren heißen NYC2, das die beiden VPS hat, und AMS2, das den dritten hat. Diese VPS werden wie folgt genannt:
externalnyc – Alle unsere VPN-Knoten werden sich mit diesem Server verbinden, was bedeutet, dass er verbunden und verfügbar bleiben muss, um sicherzustellen, dass das Netzwerk ordnungsgemäß funktioniert. Wenn Sie schließlich zusätzliche Server zu Ihrem Setup hinzufügen möchten, müssen diese auf die gleiche Weise wie externalnyc eingerichtet werden.
internalnyc – Dieser VPS verbindet sich über eine private Netzwerkschnittstelle mit dem externalnyc-VPN-Knoten.
ams1 – Dies ist unsere öffentliche VPN-Verbindung. Sie verbindet sich über das öffentliche Internet mit externalnyc.
Ziel
Was wir erreichen wollen, ist Folgendes:

Unser privates Netzwerk wird durch die grüne Linie dargestellt und verbindet alle drei Server. Das Orange ist unser privates Netzwerk, das die beiden NYC2-Server miteinander verbindet. Alle drei Server können über das VPN verbunden werden, obwohl das private Netzwerk für AMS1 nicht zugänglich ist.
Um dies zu tun, befolgen Sie diese Schritte:
Tinc installieren
Zuerst müssen wir Tinc installieren. Wie immer stellen Sie sicher, dass alle Ihre apt-Repositories auf dem neuesten Stand sind, indem Sie Folgendes ausführen:
sudo apt-get updateDann installieren Sie Tinc auf die übliche Weise über apt:
sudo apt-get install tincUnd das war’s! Ihre Maschine wird jetzt Tinc sowie alle benötigten Voraussetzungen herunterladen. Jetzt müssen wir uns die Konfiguration ansehen.
Konfiguration
Die Konfiguration von Tinc kann sich ein wenig von anderen VPNs unterscheiden, die Sie gewohnt sind. Es verwendet einen “Netzwerknamen”, um ein VPN von einem anderen zu unterscheiden. Dies wird sehr nützlich, wenn Sie mehrere VPNs über Tinc betreiben, ist aber zunächst etwas kontraintuitiv. Da dies unser erstes Tinc-Netzwerk ist, halten wir es einfach und nennen unser VPN “netname”.
Jetzt für jeden unserer Server. Jeder benötigt drei Konfigurationselemente:
Die Konfigurationsdateien: tinc.conf, tinc-up, tinc-down und eine optionale Anzahl anderer Dateien.
Öffentliche und private Schlüsselpaare: diese sind für Verschlüsselung und Authentifizierung.
Host-Konfigurationsdateien: Diese enthalten öffentliche Schlüssel und andere VPN-Konfigurationselemente.
Lassen Sie uns nun jeden unserer Server nacheinander konfigurieren. Zuerst externalnyc.
Configure externalnyc
OK, jetzt zu den Details. Auf externalnyc beginnen Sie damit, die Verzeichnisstruktur für das VPN netname zu erstellen. Führen Sie Folgendes aus:
sudo mkdir -p /etc/tinc/netname/hostsÖffnen Sie nun tinc.conf in Ihrem bevorzugten Texteditor:
sudo vi /etc/tinc/netname/tinc.confSobald Sie die Datei vor sich haben, fügen Sie Folgendes am Ende der Datei hinzu:
Name = externalnyc
AddressFamily = ipv4
Interface = tun0Alles, was Sie hier tun, ist, einen Knoten namens externalnyc zu konfigurieren und dem Server mitzuteilen, dass seine Netzwerkschnittstelle ipv4 verwenden und “tun0” genannt werden soll. Speichern Sie die Datei und schließen Sie sie.
Als Nächstes müssen wir eine Host-Konfigurationsdatei für externalnyc erstellen. Um dies zu tun, öffnen Sie die Hosts-Konfigurationsdatei in einem Texteditor:
sudo vi /etc/tinc/netname/hosts/externalnycFügen Sie erneut einige Zeilen am Ende dieser Datei hinzu, wobei Sie die öffentliche IP-Adresse Ihres VPS in der ersten Zeile ersetzen:
Address = externalnyc_public_IP
Subnet = 10.0.0.1/32Dies ist die Datei, die andere Server verwenden werden, um sich mit externalnyc zu verbinden. Die Adresse sagt anderen Knoten, wie und wo sie sich mit diesem Server verbinden können, und die Subnetzadresse ist das Subnetz, in dem dieser Daemon arbeiten wird. Speichern Sie erneut Ihre Änderungen an dieser Datei und schließen Sie sie.
Jetzt müssen wir das öffentliche/private Schlüssel-Paar für diesen Host generieren. Das ist einfach, führen Sie einfach Folgendes aus:
sudo tincd -n netname -K4096Dies erstellt einen privaten RSA-Schlüssel und fügt ein öffentliches Schlüsselpaar am Ende der Konfigurationsdatei hinzu, die wir gerade erstellt haben. Sie können es erneut öffnen, um zu sehen, dass dies erledigt wurde, wenn Sie möchten.
Jetzt müssen wir tinc-up erstellen, ein kleines Skript, das ausgeführt wird, wenn unser VPN gestartet wird. Öffnen Sie die folgende Datei zur Bearbeitung:
sudo vi /etc/tinc/netname/tinc-upUnd fügen Sie hinzu:
#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0Wann immer das VPN netname gestartet wird, wird dieses Skript ausgeführt. Es wird eine Netzwerkschnittstelle erstellt, die von unserem VPN verwendet wird, und auf diesem VPN wird externalnyc die IP 10.0.0.1 haben.
Aber wenn das VPN gestoppt wird, möchten wir, dass diese Netzwerkschnittstelle verschwindet, also benötigen wir ein weiteres Skript. Dies sollte an tinc-down angehängt werden. Öffnen Sie:
sudo vi /etc/tinc/netname/tinc-downUnd fügen Sie dann hinzu:
#!/bin/sh
ifconfig $INTERFACE downUnd erneut speichern und beenden. Wir haben jetzt unsere Skripte, aber damit sie funktionieren, müssen sie als ausführbar markiert werden. Das ist einfach, über die Befehlszeile:
sudo chmod 755 /etc/tinc/netname/tinc-*Speichern Sie und beenden Sie, und Sie sind mit der Konfiguration dieses Servers fertig. Als Nächstes internalnyc und ams1.
Configure internalnyc und ams1
Um die beiden verbleibenden Server zu konfigurieren, müssen Sie die gleichen Befehle auf jeder Maschine ausführen. Es gibt einige kleinere Variationen, die ich anmerken werde, aber der Prozess ist im Grunde derselbe.
Wie wir es oben mit externalnyc gemacht haben, müssen wir zuerst die Verzeichnisstruktur für unsere Konfigurationsdateien erstellen. Führen Sie auf jedem Server Folgendes aus und öffnen Sie dann die Tinc-Konfigurationsdatei zur Bearbeitung:
sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.confFügen Sie dann einige Zeilen am Ende dieser Datei hinzu, wobei Sie “node_name” durch den Namen jedes Knotens ersetzen:
Name = node_name
AddressFamily = ipv4
Interface = tun0
ConnectTo = externalnycSie können sehen, dass beide unserer Server jetzt konfiguriert sind, um zu versuchen, sich mit externalnyc zu verbinden. Speichern Sie diese Datei und schließen Sie sie.
Jetzt müssen wir die Hosts-Konfigurationsdatei erstellen. Führen Sie aus:
sudo vi /etc/tinc/netname/hosts/node_nameFügen Sie dann für internalnyc diese Zeile hinzu:
Subnet = 10.0.0.2/32Und für ams1 fügen Sie diese Zeile hinzu:
Subnet = 10.0.0.3/32Der einzige Unterschied hier ist, dass die Adressen unterschiedlich sind, damit wir unsere Server unterscheiden können. Speichern Sie diese Datei und schließen Sie sie.
Jetzt müssen wir, wie zuvor, unsere öffentlichen / privaten Schlüsselpaare generieren und das Skript zum Starten der Netzwerkschnittstelle erstellen. Führen Sie auf jedem Server Folgendes aus:
sudo tincd -n netname -K4096Und dann:
sudo vi /etc/tinc/netname/tinc-upJetzt. Für jeden Server müssen wir die Adressen verwenden, die wir zuvor angegeben haben. Wenn Sie mir genau folgen, müssen Sie für internalnyc hinzufügen:
ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0Und für ams1:
ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0Aber wenn Sie oben andere Adressen angegeben haben, ändern Sie sie auch hier. Speichern Sie diese Dateien und beenden Sie. Wir sind fast da.
Wir müssen nur das Skript zum Stoppen der Netzwerkschnittstelle erstellen, genau wie zuvor:
sudo vi /etc/tinc/netname/tinc-downUnd dann fügen Sie diese Zeile auf beiden Servern hinzu:
ifconfig $INTERFACE downUnd der letzte Teil der Konfiguration besteht darin, unsere neuen Skripte ausführbar zu machen:
sudo chmod 755 /etc/tinc/netname/tinc-*Speichern Sie und beenden Sie. Puh. Wenn alles gut gelaufen ist, sind jetzt alle drei Server konfiguriert. Jetzt zur Implementierung der Kryptographie.
Schlüssel verteilen
Wenn Sie bereits ein Konfigurationsmanagementsystem verwenden, haben Sie Glück. In einer idealen Welt muss jeder Knoten, den wir jetzt erstellt haben, in der Lage sein, direkt mit einem anderen Knoten über eine öffentliche/private Schlüssel-Schnittstelle zu kommunizieren. Die Schlüssel, wie wir oben gesehen haben, befinden sich jetzt in den Hosts-Konfigurationsdateien für jeden Server. In dem einfachen Netzwerk, das wir hier erstellen, muss tatsächlich nur externalnyc Schlüssel mit den anderen Knoten austauschen.
Und so ist der einfachste Weg, dies zu tun, einfach jeden öffentlichen Schlüssel an alle Mitglieder der verschiedenen Knoten zu kopieren. Das ist eigentlich ziemlich einfach, seien Sie nur vorsichtig, den “Address”-Wert in der Konfigurationsdatei von externalnyc auf seine eigene private IP-Adresse zu ändern, wenn Sie ihn kopieren. Auf diese Weise wird die Verbindung über das private Netzwerk hergestellt.
Wenn Sie mir gefolgt sind und Ihr VPN “netname” genannt haben, befinden sich die Hosts-Konfigurationsdateien hier: /etc/tinc/netname/hosts
Schlüssel zwischen externalnyc und internalnyc austauschen
Das ist unkompliziert. Auf internalnyc finden Sie die Hosts-Konfigurationsdatei und kopieren Sie sie nach externalnyc:
scp /etc/tinc/netname/hosts/internalnyc user@externalnyc_private_IP:/tmpDann kopieren Sie auf externalnyc dieselbe Datei an den richtigen Ort:
cd /etc/tinc/netname/hosts; sudo cp /tmp/internalnyc .Jetzt machen wir das Gegenteil. Auf externalnyc kopieren Sie die Hosts-Konfigurationsdatei nach internalnyc:
scp /etc/tinc/netname/hosts/externalnyc user@internalnyc_private_IP:/tmpUnd dann auf internalnyc kopieren Sie die Datei, damit sie am richtigen Ort ist:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .Jetzt müssen wir die Hosts-Konfigurationsdatei von externalnyc auf internalnyc bearbeiten, damit die Adresse korrekt ist. Dies ist so, dass die Knoten über das private Netzwerk mit dem VPN verbunden werden. Öffnen Sie also auf internalnyc die Hosts-Konfigurationsdatei für externalnyc:
sudo vi /etc/tinc/netname/hosts/externalnycUnd ändern Sie den Adresswert in die private IP-Adresse von externalnyc, so:
Address = externalnyc_private_IPSpeichern Sie die Datei und beenden Sie. Das sind diese beiden Schlüssel erledigt. Jetzt müssen wir nur noch Schlüssel mit unserem verbleibenden Knoten austauschen.
Schlüssel zwischen externalnyc und ams1 austauschen
Der Prozess hier ist ziemlich ähnlich. Verwenden Sie ams1, um die Hosts-Konfigurationsdatei nach externalnyc zu kopieren:
scp /etc/tinc/netname/hosts/ams1 user@externalnyc_public_IP:/tmpUnd dann erneut an den richtigen Ort kopieren, indem Sie externalnyc verwenden:
cd /etc/tinc/netname/hosts; sudo cp /tmp/ams1 .Bleiben Sie auf externalnyc, kopieren Sie die Datei in die andere Richtung, nach ams1:
scp /etc/tinc/netname/hosts/externalnyc user@ams1_public_IP:/tmpUnd noch einmal, auf ams1, kopieren Sie diese Datei, damit sie am richtigen Ort ist:
cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .Und Sie sind mit dem Schlüsselaustausch fertig. Theoretisch haben Sie jetzt ein funktionierendes, verschlüsseltes VPN über Tinc. Wenn Sie dieses Tutorial genau befolgt haben, können Sie mit dem Testen Ihres Setups fortfahren. Wenn Sie jedoch auch die Gelegenheit genutzt haben, zusätzliche Knoten hinzuzufügen, ist jetzt ein guter Zeitpunkt, alle Schlüssel auszutauschen, die Sie benötigen.
Denken Sie daran, dass Sie, wenn Sie einen zentralen Knoten verwenden, wie ich es hier tue, nicht alle Schlüssel an alle Server kopieren müssen. Wenn Sie jedoch möchten, dass Knoten direkt miteinander kommunizieren können, müssen sie Schlüssel direkt austauschen. Der Prozess dafür ist derselbe, den ich oben beschrieben habe – führen Sie einfach so viele Iterationen durch, wie Sie benötigen, um die gewünschte Konnektivität zu erreichen.
Testen
Sie sollten jetzt bereit sein zu testen. Dazu ist es eine gute Idee, Tinc im Debug-Modus zu starten, damit wir Fehler erfassen und mehr Informationen erhalten können, wenn etwas schiefgeht. Denken Sie daran, dass ein schlecht konfiguriertes VPN tatsächlich ein Sicherheitsrisiko darstellen kann, also stellen Sie sicher, dass alles ordnungsgemäß funktioniert, bevor Sie Ihr VPN für wichtige Dinge verwenden.
Um Tinc im Debug-Modus zu starten, führen Sie auf jedem Knoten, beginnend mit externalnyc, Folgendes aus:
sudo tincd -n netname -D -d3Wenn Sie Ihr VPN anders genannt haben, ändern Sie natürlich die Variable “netname” in den entsprechenden Namen.
Nachdem der Daemon auf jedem Knoten gestartet wurde, sollte er Ausgaben zurückgeben, die Ihnen den Namen jedes Knotens anzeigen, während sie sich verbinden. Wenn dies nicht passiert, haben Sie irgendwo einen Fehler gemacht.
Jetzt können wir das VPN testen. In einem neuen Fenster auf ams1 pingen Sie internalnyc mit seiner IP-Adresse an. Wir haben dies zuvor auf 10.0.0.2 festgelegt, also geben Sie ein:
ping 10.0.0.2Hoffentlich funktioniert Ihr Ping. Sie sollten auch einige Debugging-Ausgaben in den anderen Fenstern sehen, die die Verbindungen beschreiben, die Sie gerade hergestellt haben. Ams1 ist jetzt über Ihr neues VPN mit externalnyc verbunden und kann über dieses mit internalnyc verbinden. Drücken Sie STRG-C und der Ping wird gestoppt.
Jetzt haben Sie eine sichere VPN-Verbindung, die Sie für jede andere Art von Netzwerkkommunikation verwenden können – Anwendungsanschlüsse, Dateien kopieren, SSH oder alles andere, was Sie möchten.
Wenn Ihr Ping nicht funktioniert hat, Sie aber denken, dass Sie alles richtig gemacht haben, könnte es sein, dass eine Firewall im Weg war. Überprüfen Sie Ihre Firewall-Einstellungen und versuchen Sie es erneut.
Tinc beim Booten
Nur noch eine letzte Sache. Wenn Sie Ihr Tinc-VPN jetzt für alle Ihre Netzwerke verwenden möchten, möchten Sie es möglicherweise so einstellen, dass es beim Booten startet. Sie müssen dies auf jedem Knoten tun, indem Sie die Datei nets.boot bearbeiten. Öffnen Sie die Datei mit:
sudo vi /etc/tinc/nets.bootUnd fügen Sie dann den Namen Ihres neuen VPNs zu dieser Datei hinzu. Wenn Sie wie ich “netname” gewählt haben, sieht das folgendermaßen aus:
# Diese Datei enthält alle Namen der Netzwerke, die beim Systemstart gestartet werden sollen.
netnameSpeichern Sie und beenden Sie, und Sie sind fertig. Tinc funktioniert jetzt und wird beim Booten gestartet. Gut gemacht.
Wenn Sie Tinc steuern müssen, können Sie jetzt den “service”-Befehl verwenden, um dies zu tun. Führen Sie auf jedem Knoten einfach Folgendes aus:
sudo service tinc startUnd spielen Sie ein wenig herum. Die meisten grundlegenden Steuerungen können über diesen Befehl erreicht werden.
Fazit
Sie sollten jetzt eine sichere VPN-Verbindung haben, die über Tinc auf all Ihren Maschinen läuft. Dieses VPN kann als Basis verwendet werden, um weitere Netzwerkfunktionen aufzubauen.
Wenn Sie in Zukunft weitere Knoten hinzufügen oder Tinc mit anderen VPNs kombinieren möchten, wird Tinc Ihnen dies ermöglichen. Der Prozess für jeden zusätzlichen Knoten ist derselbe, den ich oben beschrieben habe, und Sie sollten leicht sehen können, welche Variablen und Adressen geändert werden müssen. Denken Sie nur daran, dass, wenn Sie möchten, dass Knoten direkt miteinander verbinden können, Sie Schlüssel direkt zwischen ihnen austauschen müssen. So funktioniert Tinc als Mesh-VPN, das etwas sicherer ist als mein Ansatz. Andernfalls können Sie Ihr Netzwerk einfach so einrichten, wie ich es getan habe, und alles über einen zentralen Knoten laufen lassen.
So oder so, Sie sind jetzt frei, herumzuspielen. Viel Glück!
Ressourcen
(2) https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.