Wie man ein leichtgewichtiges P2P-Mesh-VPN mit Tinc erstellt

Eine grafische Darstellung einer Wolke mit einem Schloss darunter.

Tinc ist ein Open-Source-Virtual-Private-Network (VPN)-Adapter, der eine einfache Möglichkeit bietet, ein privates Peer-to-Peer (P2P)-Mesh-Netzwerk unter Linux, Windows und macOS zu erstellen. Ähnlich wie OpenVPN und Wireguard kann es mehrere Computer über verschiedene Netzwerktopologien hinweg zu einem einzigen virtuellen LAN verbinden. Hier zeigen wir Ihnen die Vorteile der Verwendung von Tinc und wie Sie ein einfaches auf Tinc basierendes Mesh-Netzwerk installieren und erstellen.

Warum Tinc statt Wireguard und OpenVPN verwenden?

Ein einzigartiges Verkaufsargument von Tinc gegenüber anderen VPN-Daemons ist, dass es als Mesh-Netzwerk konzipiert ist. Das bedeutet, dass es sich im Gegensatz zu Wireguard leicht an Veränderungen der Netzwerkbedingungen anpassen kann. Dies macht es widerstandsfähiger, insbesondere für Computer mit einer schlechten Netzwerkverbindung.

Ein Terminal, das die Leistungsanalyse von Tinc auf Ubuntu anzeigt.

Nebenbei profitiert Tinc von den meisten Funktionen, die Sie von einem traditionellen VPN wie OpenVPN erwarten würden. Dazu gehören die Fähigkeit, NAT-Umgebungen zu durchqueren, verschlüsselte Tunnel zu erstellen und LAN-nur Anwendungen zu verknüpfen.

Ein Terminal, das die Ping-Leistung von Tinc auf Debian zeigt.

Schließlich strebt Tinc auch an, jede Verbindung, die Sie im Netzwerk herstellen, P2P zu gestalten. Dies kann entweder durch automatische Peer-Erkennung oder durch Koordination mit einem öffentlich zugänglichen Tinc-Server erfolgen. Infolgedessen sind Verbindungen innerhalb eines Tinc-VPN nicht nur widerstandsfähig, sondern auch schnell und reaktionsschnell.

Gut zu wissen: Noch unentschlossen, welches VPN Sie wählen sollen? Lesen Sie unseren Artikel, in dem wir vergleichen, wie Wireguard und OpenVPN gegeneinander abschneiden.

Tinc auf Linux installieren

Der erste Schritt zur Installation von Tinc besteht darin, sicherzustellen, dass Ihr System auf dem neuesten Stand ist. Unter Ubuntu führen Sie den folgenden Befehl aus:

sudo apt update && sudo apt upgrade -y

Laden Sie Tinc direkt aus den Paketrepositories von Ubuntu herunter und installieren Sie es:

sudo apt install tinc

Ein Terminal, das den Installationsprozess des Pakets Tinc in Ubuntu zeigt.

Um Tinc auf anderen Linux-Distributionen zu installieren, verwenden Sie den entsprechenden Paketmanager für dieses System. Zum Beispiel muss ich sudo dnf install tinc ausführen, um das Programm in Fedora zu beziehen.

Ein Terminal, das den Installationsprozess in Fedora Linux zeigt.

Bestätigen Sie, dass Sie Tinc ordnungsgemäß installiert haben, indem Sie eine Terminal-Sitzung öffnen und tincd --version ausführen.

Ein Terminal, das die aktuelle Tinc-Version unter Ubuntu anzeigt.

Ein einfaches Mesh-Netzwerk mit Tinc erstellen

Mit Tinc auf Ihrem Rechner können Sie jetzt Ihr erstes auf Tinc basierendes Netzwerk konfigurieren. Erstellen Sie einen neuen Ordner im Verzeichnis “/etc/tinc”. Dieser wird alle Dateien enthalten, die mit Ihrem Tinc-Knoten verbunden sind:

sudo mkdir -p /etc/tinc/mynetwork/hosts

Erstellen Sie eine neue Konfigurationsdatei mit Ihrem bevorzugten Texteditor:

sudo nano /etc/tinc/mynetwork/tinc.conf

Fügen Sie den folgenden Block von Code in Ihre neue Konfigurationsdatei ein:

Name = mynode  
Device = /dev/net/tun

Hinweis: Einige Linux-Distributionen könnten den Speicherort des Tun-Adapters innerhalb von “/dev” ändern. Um den genauen Pfad für Ihr System zu finden, führen Sie aus:

find /dev -name *tun* -type c

Erstellen Sie eine Textdatei im “hosts”-Ordner mit dem Namen Ihres Tinc-Knotens und fügen Sie Folgendes ein:

Subnet = 192.168.11.1/32  
Address = YOUR-MACHINE-IP-ADDRESS-HERE  
Port = 655

Ersetzen Sie den Wert der Variablen “Address” durch die IP-Adresse Ihres Rechners. Sie können dies herausfinden, indem Sie ip addr ausführen.

Ein Terminal, das die private IP-Adresse des Ubuntu-Rechners hervorhebt.

Hinweis: Sie müssen die öffentliche IP-Adresse Ihres Rechners angeben, wenn Sie ein öffentlich zugängliches VPN erstellen möchten.

Speichern Sie die Hosts-Datei Ihres Rechners und erstellen Sie dann zwei Dateien unter “/etc/tinc/mynetwork:”

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Öffnen Sie die Datei “tinc-up” und fügen Sie den folgenden Bash-Code ein. Dies erstellt das virtuelle Netzwerk-Interface für Tinc und weist dieser Schnittstelle die IP-Adresse zu:

#!/bin/sh  
  
ip link set $INTERFACE up  
ip addr add 192.168.11.1/32 dev $INTERFACE  
ip route add 192.168.11.0/24 dev $INTERFACE

Speichern Sie die Datei, und öffnen Sie dann die Datei “tinc-down” und fügen Sie Folgendes ebenfalls ein. Dies tut das Gegenteil von “tinc-up:” Es weist die IP-Adresse von Ihrem Tinc-Interface ab und entfernt diese Schnittstelle von Ihrem Rechner:

#!/bin/sh  
  
ip route del 192.168.11.0/24 dev $INTERFACE  
ip addr del 192.168.11.1/32 dev $INTERFACE  
ip link set $INTERFACE down

Ein Terminal, das die Inhalte des Skripts tinc-down in Ubuntu anzeigt.

Generieren Sie ein Schlüsselpaar für Ihren Tinc-Knoten, indem Sie tincd ausführen:

sudo tincd -n mynetwork --generate-keys=4096

Drücken Sie zweimal die Eingabetaste, um den Standardspeicherort für beide privaten und öffentlichen Schlüssel für Ihren Tinc-Knoten zu akzeptieren.

Ein Terminal, das den Schlüsselpaarerzeugungsprozess für Tinc in Ubuntu zeigt.

Hinzufügen des ersten Tinc-Clients

Um einen neuen Tinc-Client hinzuzufügen, stellen Sie zunächst sicher, dass Sie Tinc auf Ihrem zweiten Rechner ordnungsgemäß installiert haben.

Ein Terminal, das die Tinc-Version auf Debian anzeigt.

Erstellen Sie die Verzeichnisstruktur für Ihre Tinc-Konfiguration mit mkdir -p.

Verwenden Sie Ihren bevorzugten Texteditor, um die Konfigurationsdatei für Ihren Tinc-Client zu erstellen:

sudo nano /etc/tinc/mynetwork/tinc.conf

Fügen Sie die folgenden Zeilen Code in die Konfigurationsdatei Ihres zweiten Rechners ein:

Name = myclient  
Device = /dev/net/tun  
ConnectTo = mynode

Erstellen Sie eine Datei mit dem Namen Ihres Tinc-Rechners unter “/etc/tinc/mynetwork/hosts”. In diesem Fall habe ich meinen zweiten Rechner als “myclient” benannt, also werde ich eine Datei mit dem Namen “myclient” erstellen:

sudo nano /etc/tinc/mynetwork/hosts/myclient

Fügen Sie den folgenden Block von Code in Ihre neue Hosts-Datei ein. Ähnlich wie bei Ihrem ersten Knoten diktiert dies die Netzwerk-Konfiguration Ihres Tinc-Daemons:

Subnet = 192.168.11.2/32  
Port = 655

Speichern Sie Ihre neue Hosts-Datei und erstellen Sie dann ein “tinc-up” und ein “tinc-down”-Skript auf Ihrem zweiten Rechner:

sudo touch /etc/tinc/mynetwork/tinc-{up,down}  
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}

Öffnen Sie die tinc-up-Datei mit Ihrem bevorzugten Texteditor und fügen Sie den folgenden Block von Code ein:

#!/bin/sh  
ip link set $INTERFACE up  
ip addr add 192.168.11.2/32 dev $INTERFACE  
ip route add 192.168.11.0/24 dev $INTERFACE

Speichern Sie Ihre tinc-up-Datei, öffnen Sie dann tinc-down und fügen Sie ebenfalls die folgenden Zeilen Code ein:

#!/bin/sh  
  
ip route del 192.168.11.0/24 dev $INTERFACE  
ip addr del 192.168.11.2/32 dev $INTERFACE  
ip link set $INTERFACE down

Schließen Sie die Konfiguration Ihres Tinc-Clients ab, indem Sie sein Schlüsselpaar generieren:

sudo tincd -n mynetwork --generate-keys=4096

Ein Terminal, das den Schlüsselpaarerzeugungsprozess auf dem zweiten Tinc-Rechner zeigt.

Ausführen des Tinc-Mesh-Netzwerks

An diesem Punkt haben Sie nun zwei ordnungsgemäß konfigurierte Tinc-Daemons. Sie müssen jedoch diese beiden Tinc-Demons miteinander verknüpfen, um Ihr P2P-VPN unter Linux zu erstellen. Dazu müssen Sie die Host-Konfigurationsdatei von Ihrem Tinc-Knoten an Ihren Client und umgekehrt kopieren.

Beginnen Sie damit, Ihre Terminal-Sitzung des Knotens zu öffnen und zum Verzeichnis “/etc/tinc/mynetwork/hosts” zu navigieren:

cd /etc/tinc/mynetwork/hosts

Kopieren Sie die Konfigurationsdatei in diesem Verzeichnis und übertragen Sie sie an Ihren Client. In meinem Fall werde ich scp verwenden, um diese Datei über ssh zu senden:

scp ./mynode YOUR-CLIENT-IP-ADDRESS:~

Ein Terminal, das den Prozess des Übertragens der Tinc-Client-Konfiguration von einem System auf ein anderes zeigt.

Hinweis: Obwohl ich in diesem Beispiel scp verwendet habe, können Sie sie auch manuell über USB-Sticks übertragen.

Gehen Sie zu Ihrem Client-Rechner und kopieren Sie die Hosts-Datei, die Sie gerade an den Ordner “hosts” des Clients übertragen haben:

sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/

Führen Sie danach scp auf der Clientseite aus, um die Hosts-Datei zurück zu Ihrem Knoten zu übertragen:

scp /etc/tinc/mynetwork/hosts/myclient YOUR-NODE-IP-ADDRESS:~

Kopieren Sie die Hosts-Datei Ihres Clients in das Hosts-Verzeichnis Ihres Knotens:

sudo cp ~/myclient /etc/tinc/mynetwork/hosts/

Nur am Rande: Sorgen Sie sich um Ihre persönliche Privatsphäre im Internet? Erfahren Sie, wie Sie die Privatsphäre und Sicherheit Ihres Linux-PCs verbessern können.

Starten des Tinc-Mesh-Netzwerks

Starten Sie Ihr vollständig konfiguriertes Tinc-Netzwerk, indem Sie den folgenden Befehl auf jedem Ihrer Hosts ausführen:

sudo tincd -n mynetwork

Bestätigen Sie, dass Sie mit Ihren Knoten über die Tinc-Oberfläche kommunizieren können, indem Sie ein einfaches Ping durchführen:

ping -c 5 192.168.11.2

Ein Terminal, das die Latenz des Tinc-VPN sowie das Netzwerkgerät, das auf Ubuntu läuft, anzeigt.

Zum Schluss aktivieren Sie den Tinc-Dienst, um sicherzustellen, dass Ihr VPN beim Systemstart funktioniert:

sudo systemctl enable --now [email protected]

Das Erlernen, wie man sein eigenes P2P-Mesh-VPN in Linux mit Tinc erstellt, ist nur der erste Schritt in die wunderbare Welt der Computer-Netzwerke. Tauchen Sie tief in die Feinheiten dieser Technologie ein, indem Sie unsere umfassende Übersicht über VPNs lesen.

Bildnachweis: Growtika über Unsplash. Alle Änderungen und Screenshots von Ramces Red.