Brandschutz

Sobald auf jedem beteiligten Rechner ein »tincd« läuft, erreichen die Bochumer den Aachener Rechner unter der IP-Adresse »192.168.1.111« . Umgekehrt finden die Aachener ihre Kollegen unter der Adresse »192.168.2.222« . Das alles klappt freilich nur, wenn keine Firewall die Kommunikation stört. So reden die Tinc-Daemons standardmäßig auf Port 655 miteinander, den die Entwickler übrigens sogar bei der IANA hochoffiziell für sich reserviert haben. Darüber hinaus packt Tinc alle zu übertragenden Daten in UDP-Datagramme, und tauscht weitere Informationen per TCP aus. Die Firewall muss diese Pakete folglich nicht nur rein-, sondern auch rauslassen.

Sollten im Betrieb Probleme auftreten, helfen vielleicht die etwas ausführlicheren Meldungen des Daemons, die ein höheres Debug-Level aktiviert:

tincd --debug=5

Die 5 ist hier schon das höchste Level, das sämtlichen Netzverkehr mitschneidet. Zur Fehlersuche sollte ein Level von 2 ausreichen, der alle Status- und Fehlermeldungen der Skripte und des Tinc Daemons aufzeichnet.

Kryptisch

Unter der Haube bietet ein Tinc Daemon wenig spektakuläres: Sobald die Daten über die virtuelle Schnittstelle eingehen, erhalten sie zunächst eine 32-Bit lange Sequenznummer und werden anschließend standardmäßig per Blowfish-Algorithmus im Cipher Block Chaining (CBC) Modus verschlüsselt. Das Ergebnis erhält noch via SHA-1-Verfahren einen standardmäßig 4 Byte langen Message Authentication Code (MAC). Zusammen mit der Sequenznummer soll sie sogenannten Replay-Angriffen den Garaus machen. Das entstandene Datenpäckchen legt Tinc in ein UDP-Datagramm und schickt es Richtung Ziel. Parallel dazu bauen die Daemons eine TCP-Verbindung auf, über die sie unter anderem Schlüssel und weitere Metadaten austauschen. Aus diesem Grund spricht die Tinc-Dokumentation auch von einer Meta-Verbindung. Der Verschlüsselungsalgorithmus und der Message Authentification Algorithmus können in den Konfigurationsdateien frei gewählt werden, die Länge des MAC ist ebenfalls anpassbar. Die Länge des Schlüssels für den eigentlichen Verschlüsselungsvorgang ist immer auf die von OpenSSL vorgegebene Standardlänge festgelegt.

Gib mir Namen!

VPN kann man symbolischen Namen geben, indem man eine Zeile der Art

myvpn   10.0.0.0

der Datei »/etc/networks« hinzufügt. Dank der Registrierung bei der IANA darf man zusätzlich »/etc/services« die folgenden Zeilen anhängen: tinc 655/tcp TINC tinc 655/udp TINC

Mehr! Mehr! Mehr!

Die Aufnahme eines weiteren Computers in ein bestehendes VPN geht in wenigen Sekunden über die Bühne: Kommt beispielsweise beim Reifenhersteller eine weitere Außenstelle in Celle hinzu, legt man auf dem dortigen Computer wieder den bekannten Satz aus drei Konfigurationsdateien an:

<B>/etc/tinc/tinc.conf<B>
Name = celle
Device = /dev/tap0
<B>/etc/tinc/hosts/celle<B>
Adress = 80.1.2.3
Subnet = 192.168.3.0/24
<B>/etc/tinc/tinc-up<B>
#!/bin/sh
ifconfig $INTERFACE 192.168.3.133 netmask 255.255.0.0

Per »sudo tincd -K« erzeugt man ein Schlüsselpärchen, kopiert anschließend die Dateien »bochum« und »aachen« der bestehenden Gegenstellen ins Verzeichnis »/etc/tinc/hosts/« , startet in Celle einen »tincd« und verteilt die Datei »celle« auf die Verzeichnisse »/etc/tinc/hosts« in Bochum und Aachen. Das war es bereits, ein Neustart der anderen Daemon in Bochum und Aachen ist nicht erforderlich.

Tinc erlaubt es sogar mehrere, voneinander unabhängige, virtuelle Netzwerke zu betreiben. Auf diese Weise könnte man beispielsweise die Buchhaltung vom Versand trennen. Dazu startet man für jedes Netz einen eigenen Daemon. Um die Netze voneinander unterscheiden zu können, erhält jedes einen eigenen, frei wählbaren Namen, den so genannte Netname. Um einen Daemon einem Netz zuzuweisen, ruft man ihn bei allen Aktionen mit dem Paramater »-n netname« auf. Er sucht dann die bekannten Konfigurationsdateien im Unterverzeichnis »/etc/tinc/netname« . Um ein passendes Schlüsselpaar zu erstellen, verwendet man »tincd -n netname -K« .

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019