Virtual Private Networks mit Tinc

Tunnelbau

Unter Linux buhlen zahlreiche VPN-Lösungen um die Gunst der Anwender, die sich jedoch meist nur relativ umständlich einrichten lassen. Eine schlanke und dazu noch äußerst flexible Alternative bietet das eher unbekannte Tinc.

Zu groß, zu langsam, zu unflexibel. So waren die bestehenden VPN-Programme und Protokollstandards in den Augen von Guus Sliepen und Ivo Timmermans. Also entwickelten sie kurzerhand ihr eigenes Protokoll samt Referenzimplementierung, nannten das erste brauchbare Ergebnis Tinc und veröffentlichten es unter der GPL. Seitdem sind über 10 Jahre vergangen und noch immer treiben die beiden ihr Projekt mutig voran – und haben dabei ein paar Schwachpunkte der Konkurrenz von vorn herein vermieden.

So legten die Entwickler die Konfigurationsdateien absichtlich sehr einfach an, was nicht nur eine schnelle Einrichtung ermöglicht, sondern auch Administrationsfehler minimiert. Gleichzeitig lässt sich ein mit Tinc aufgebautes VPN schnell erweitern: Jeder neu angestöpselten Knotenpunkt benötigt nur eine weitere Konfigurationsdatei. Anschließend ist noch nicht einmal ein Neustart der VPN-Software notwendig. Das eingebaute Routing sorgt dafür, dass die Informationen möglichst auf direktem Weg ihre Ziele erreichen. Tinc erlaubt so den raschen und flexiblen Aufbau von verschlüsselten, vermaschten Netzen ("Mesh Networking"). Darüber hinaus lässt sich das VPN als Bridge missbrauchen, die mehrere Ethernet-Segmente zu einem einzelnen, großen zusammenfasst. Auf diese Weise lassen sich sogar Anwendungen über das Internet nutzen, die sonst nur in einem LAN funktionieren. Schließlich läuft Tinc auf allen aktuellen Betriebssystemen, einschließlich Windows XP. Das neue Vista steht allerdings noch nicht auf der Kompatibilitätsliste.

Erdarbeiten

Wer das Tinc-Paket von seiner Homepage lädt, findet darin einen kleinen Daemon, der vollständig im Userspace läuft und im Gegensatz zu mancher Konkurrenz keinerlei Anpassungen im Kernel verlangt. Nach seinem Start richtet er auf seinem Wirtscomputer eine neue, virtuelle Netzwerkschnittstelle ein. Alle darüber verschickten Informationen verschlüsselt er, komprimiert sie und sendet sie schließlich über eine herkömmliche Netzwerkverbindung zur Gegenstelle. Dort nimmt ein weiterer Tinc-Daemon die Datenpakete in Empfang, entpackt und entschlüsselt sie wieder, bevor sie über die dortige virtuelle Netzwerkschnittstelle ihre Zielanwendung erreichen. Tinc bohrt gewissermaßen einen von der Außenwelt abgeschirmten Tunnel durch das Internet, man spricht daher auch neudeutsch von Tunneling. Da sich die virtuellen Netzwerkschnittstellen, also die Tunneleingänge, nach außen ähnlich wie echte Netzwerkkarten verhalten, bleibt das gesamte Verfahren für alle Beteiligten vollkommen transparent. Man muss weder bestehende Programme anpassen, noch müssen beide Seiten irgendetwas über sich wissen. Darüber hinaus kann Tinc beliebige Ethernet-Frames durch seine Tunnel schicken und ist nicht, wie so mancher Konkurrent, auf IP-Pakete beschränkt. Tinc nimmt folglich nicht nur IPv6-Pakete ohne zu murren zur Weiterleitung entgegen, es kann seine Tunnel auch durch ein IPv6-Netz graben.

Bauwerkzeug

Die virtuellen Netzwerkkarten erstellt Tinc mit Hilfe des universellen Tun/Tap-Treibers, der Bestandteil aller halbwegs aktuellen Linux-Kernel ist. Ob ihn die eigene Distribution aktiviert, beziehungsweise einkompiliert hat, verrät ein kurzes »sudo modinfo tun« das den Aufenthaltsort des zugehörigen Moduls ausspuckt.

Tinc komprimiert den von ihm beförderten Netzwerkverkehr auf Wunsch per »zlib« oder »LZO« . Die eigentliche und obligatorische Verschlüsselung der Daten erledigt das bewährte OpenSSL. Alle drei genannten Softwarepakete sind somit Voraussetzung für eine erfolgreiche Inbetriebnahme. Unter Ubuntu Linux heißen die zugehörigen und noch zu installierenden Kandidaten »liblzo2-2« , »liblzo2-dev« und »libssl-dev« .

Damit fehlt nur noch der Tinc-Daemon, der in Quellcode-Form auf seiner Homepage wartet [1]. Wenn möglich, sollten Sie ausschließlich auf ihn zurückgreifen und ein eventuell fertig geschnürtes Angebot Ihres Paketmanagers ausschlagen. Diese bieten häufig – wenn überhaupt – nur veraltete Versionen, die unter Umständen noch Sicherheitslöcher enthalten. Die Übersetzung von Tinc erfolgt zudem genau so flott mit dem bekannten Dreisatz:

 

Achten Sie dabei auf das angehängte »--prefix=« , da ansonsten gleich alle Konfigurationsdateien unter »/usr/local/etc/tinc« verschwinden müssen. Wenn Ihre Distribution auf »udev« verzichtet, müssen Sie unter Umständen noch eine Gerätedatei erstellen. Dazu prüfen Sie, ob »/dev/net/tun« existiert. Wenn nicht, legt sie der Befehl »sudo mknod -m 600 /dev/net/tun c 10 200« an.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Setup eines Kubernetes-Clusters mit Kops

Vor allem für Testinstallationen von Kubernetes gibt es einige Lösungen wie Kubeadm und Minikube. Für das Setup eines Kubernetes-Clusters in Cloud-Umgebungen hat sich Kops als Mittel der Wahl bewährt. Wir beschreiben seine Fähigkeiten und geben eine Anleitung für den praktischen Einsatz. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite