Dezentrales VPN mit Tinc

Seite 4: Mehr Knoten, mehr Netze

Inhaltsverzeichnis

Der zweite Tinc-Knoten benötigt eine ähnliche Einrichtung. Man legt das Profilverzeichnis, die Datei tinc.conf sowie die Schlüsseldateien an und erweitert die Datei mit dem öffentlichen Schlüssel um Einträge für das Subnetz, die echte Adresse des Knotens sowie um die Portnummer:

Address=tincknoten2.example.net
Port=54321
Subnet=192.168.0.0/16
Compression=9
----BEGIN RSA PUBLIC KEY----
AuS...sEnsTElle=
----END RSA PUBLIC KEY----

Der Subnetz-Eintrag wird hier auf 192.168.0.0/16 gesetzt, was auch das lokale Netz des zweiten Knotens mit der Adresse 192.168.99.0/24 abdeckt. Das Tinc-Skript tinc-up kümmert sich beim VPN-Aufbau wieder um die Vergabe einer IP-Adresse für die lokale VPN-Schnittstelle.

#!/bin/sh
/sbin/ifconfig $INTERFACE 192.168.99.1 netmask 255.255.0.0

Tinc erstellt dank der Netzwerkmaske 255.255.0.0 passende Routing-Einträge auf allen anderen VPN-Knoten, weitere per Hand einzutragende Einträge sind unnötig.

Abschließend teilt die Zeile „ConnectTo=tincknoten1“ in der Datei tinc.conf dem Rechner mit, dass er sich zum ersten Tinc-Knoten verbinden soll. Beide Seiten benötigen für eine korrekte Authentifizierung sowie für die Routing-Informationen jedoch die Datei mit dem öffentlichen Schlüssel der Gegenseite, die man im hosts-Verzeichnis des VPN-Profils ablegt. Besteht das VPN bereits aus mehreren Knoten, kann sich der Rechner parallel zu den anderen verbinden, wenn die Konfigurationsdatei mehrere ConnectTo-Zeilen enthält.

Soll ein weiteres LAN ins VPN gelangen, wiederholt man diese Schritte. Dabei muss man jedoch beachten, dass die Adress- und Netzwerkbereiche der einzelnen Knoten sich nicht überlappen.

Soll ein Mitarbeiter von unterwegs ins Tinc-VPN gelangen, muss er nicht gleich ein eigenes Subnetz mitbringen. Dem Mobilknoten reicht eine einzelne Adresse, was sich über die Notation 192.168.99.100/32 ausdrücken lässt und die man so in den Subnet-Eintrag der eigenen Hosts-Datei einträgt.

Address=tincclient.example.net
Port=54321
Subnet=192.168.99.100/32
Compression=9
ConnectTo=tincknoten2
----BEGIN RSA PUBLIC KEY----
HIS...LaqMMBBE=
----END RSA PUBLIC KEY----

Mobile Rechner verbinden sich zumeist aus einem lokalen Netz ins Internet, dessen Router keine Port-Weiterleitungen ins LAN erlaubt. Baut dieser Computer eine VPN zu einem Knoten auf, melden beide Seiten zwar einen erfolgreichen VPN-Aufbau, allein die per UDP transportierten VPN-Pakete finden nicht ihren Weg zum Ziel. Tinc kann die eigentlichen VPN-Daten jedoch über TCP-Verbindungen tunneln, was sich mit der Zeile TCPOnly=yes in der Datei tinc.conf auf dem Client einschalten lässt.

Mode=switch 
Name=mobiltincknoten1
PrivateKeyFile=c:/Programme/tinc/MeinTincVPN/rsa_key.priv
ConnectTo=tincknoten2
TCPOnly=yes

Nach den ersten Aufruf registriert sich Tinc mit dem passenden Profil als Windows-Dienst, der beim Booten automatisch startet.

Windows-Nutzer setzen die Adresse des VPN-Adapters über die Eigenschaften des Netzwerk-Interfaces. Da das VPN aus mehreren lokalen Netzen aus dem Bereich 192.168.0.0/16 besteht, erhält die Schnittstelle die Netzwerkmaske 255.255.0.0. Die Einträge für das Standard-Gateway und die DNS-Server bleiben leer.

Sind diese Vorarbeiten erledigt, tauscht der mobile Knoten mit seinen Verbindungspartnern die Dateien mit den öffentlichen Schlüsseln und den Einstellungen untereinander aus.