Tinc und GIT
Tinc ist im gegenstart zu OpenVPN eine mash vpn. Damit dies funktioniert müssen aber auf jemden Server die öffentlichen Schüssel/Konfigurationsdateien bekannt sein. Um diese Schlüssel zu verteilen verwende ich GIT.
Hier ein aufbau zwischen zwei Servern (SRV01/SRV02). Jeweils habe den Ordner /opt/git/ erstell und das Git ausgeschekt. Den VPN Ordner habe ich dann mittels eines Symlinks ins /etc/tinc Verzeichnis gelinkt.
ln -s /opt/git/vpn.tinc/vpn /etc/tinc/vpn
Folgende Daten und Ordner befinden sich in meinem Git. Mittels der .d Verzeichnisse werden die einzelne Dateien auf den Servern gelinkt (siehe unten).
/etc/tinc/vpn/
hosts
hosts/srv01
hosts/srv02
tinc.conf.d
tinc.conf.d/srv01.conf
tinc.conf.d/srv02.conf
up.d
up.d/srv01-up
up.d/srv02-up
down.d
down.d/down
Die Dateien im einzelnen.
--- SRV01 ---
hosts/srv01:
Name = srv01 Address = srv01.chr.istoph.de Cipher = blowfish Digest = sha1 IndirectData = yes Subnet = 10.8.0.1/32 Subnet = 192.168.0.1/24
Wichtig: bei Subnet muss einmal die Lokale Adresse auf die gelauscht werden soll mit /32 angegeben werden. Das zweite Subnet ist nur beispielhaft für weiteres netz das sich hinter SRV01 befindet.
tinc.conf.d/srv01.conf:
Name = srv01 AddressFamily = ipv4 BindToInterface = eth0 ConnectTo = srv02 Device = /dev/net/tun Mode = router KeyExpire = 3600 PrivateKeyFile = /etc/tinc/vpn/rsa_key.priv
up.d/srv01-up:
#!/bin/bash ip addr add 10.8.0.1/24 dev vpn ip link set vpn up
down.d/down:
#!/bin/bash
Auf SRV01 müssen dann natürlich nur folgende Symlinks erstellt werden.
ln -s tinc.conf.d/srv01.conf tinc.conf
ln -s up.d/srv01-up tinc-up
ln -s down.d/down tinc-down
--- SRV02 ---
hosts/srv02:
Name = srv02 Address = srv02.chr.istoph.de Cipher = blowfish Digest = sha1 IndirectData = yes Subnet = 10.8.0.2/32
tinc.conf.d/srv02.conf:
Name = srv02 AddressFamily = ipv4 BindToInterface = eth0 ConnectTo = srv01 Device = /dev/net/tun Mode = router KeyExpire = 3600 PrivateKeyFile = /etc/tinc/vpn/rsa_key.priv
up.d/srv02-up:
#!/bin/bash ip addr add 10.8.0.2/24 dev vpn ip link set vpn up
ln -s tinc.conf.d/srv02.conf tinc.conf
ln -s up.d/srv02-up tinc-up
ln -s down.d/down tinc-down
--- END ---
Nach dem die Dateien angelegt sind können auf dem jeweiligen Server (SRV01 / SEV02), die Keys erstellt werden.
tincd --generate-keys=4096 -n vpn
Dies Legt den Privaten schlüssel rsa_key.priv an und legt den Öffentlichen Schlüssel in die host/srv01 Datei.
Vor dem Starten von Tinc müssen die up/down Scripte noch Ausführungsrechte auf den Jeweiligen Servern bekommen.
chmod +x up.d/srv*
chmod +x down.d/down
Nun können wir alles im GIT einchecken. Nicht vergessen nach dem einchecken von SRV01 auf SRV02 zu pullen und erst dann die Dateien anzulegen um sie zu puschen.
git add hosts/srv01 tinc.conf.d/srv01.conf up.d/srv01-up down.d/down
git commit -m "tinc: add srv01"
git puch
Wichtig hierbei ist den Privaten Schlüssel rsa_key.priv nicht einzucken. Auch aus Backup gründen macht dies keinen Sinn da dieser immer wieder neu erstellt werden kann.
Bei Ubuntu Systemen muss in der Datei /etc/tinc/nets.boot der Name des zu startenden Netzwerkes eingetragen werden. In unserem Fall VPN.
## This file contains all names of the networks to be started on system startup.
vpn
Tags: Tinc