VPN
Important: Das Access VPN wird grade auf WireGuard VPN umgestellt, dementsprechend sind manche Abschnitte auf dieser Seite nicht mehr aktuell!
Allgemein
Das VPN ist primär dafür gedacht, um Remote-Hands eine direkte Verbindung auf die VOC-Infrastruktur auf einem Event zu ermöglichen. Darüber hinaus kann das VPN auch dazu genutzt werden, um Live-Streams direkt von den Encoder PCs's zu ziehen. Traffic der nicht direkt aus oder in folgende Netze geht, wird nicht durch das VPN geleitet: 10.73.0.0/16
und 10.8.0.0/16
.
Folgende VPN-Clients sind für spezielle Subnetze zuständig:
router.lan.c3voc.de
: 10.73.0.0/24, 10.73.111.0/24wrt1.lan.c3voc.de
: 10.73.1.0/24wrt2.lan.c3voc.de
: 10.73.2.0/24wrt3.lan.c3voc.de
: 10.73.3.0/24wrt4.lan.c3voc.de
: 10.73.4.0/24wrt5.lan.c3voc.de
: 10.73.5.0/24oscwrt1.lan.c3voc.de
: 10.73.41.0/24oscwrt2.lan.c3voc.de
: 10.73.42.0/24router-muc.lan.c3voc.de
: 10.73.80.0/24router-hacc.lan.c3voc.de
: 10.73.81.0/24
Konfiguriert werden die entsprechenden Subnetzzugehörigkeiten auf mng.ber.c3voc.de /etc/openvpn/clients/wrt${i}@mng.ber.c3voc.de
mit dem iroute
Befehl.
Tweaks
Router IP vergeben
Um den WRT auch zum default GW (10.73.0.254) des jeweiligen Subnetzes zu machen kann man entweder das Interface router
im LUCI-Webinterface aktivieren (Network - Interfaces - ROUTER - Connect) oder folgendes als root
auf den jeweiliegem WRT ausführen:
uci set network.router.enabled=1; uci commit; ifup router
Warning: Um Konflikte zu vermeiden, sollte darauf geachtet werden, dass die IP-Adresse 10.73.0.254
nicht automatisch konfiguriert wird, sondern nur bei Bedarf.
Weiteren Traffic durch das VPN routen
Auf mng.ber.c3voc.de ist ein NAT für das Subnet 10.8.0.0/16
eingerichtet. Damit kann nach Bedarf auch das VPN als Endpunkt für Internet-Traffic genutzt werden.
Szenario 1:
Auphonic IP ist im Event-Netz für ausgehende Verbindungen gesperrt. Um den Auphonic-Traffic mit durch das VPN zu routen, muss auf dem zuständigen WRT folgende Route per Konsole hinzugefügt werden:
ip route add $auphonic_ip via 10.8.0.1 dev tun0
oderroute add $auphonic_ip gw 10.8.0.1 dev tun0
Neuen VPN Client konfigurieren
Auf dem VPN-Server
neuen Key erstellen
Der VPN-Server ist aktuell mng.ber.c3voc.de. Sämtliche Keys die für das OpenVPN mit easy-rsa2 verwaltet werden befinden sich in dem git-Repository git@git.c3voc.de:openvpn-ca
. Dieses Repository lokal auschecken und neuen Key generieren:
source vars ./build-key <hostname> ./sign-csr <hostname> # alle Nachfragen müssen mit 'y' bestätigt werden
Beim lokalen auschecken koennte es passieren, dass der Pfad
dir = /etc/openvpn/easy-rsa2/keys # Where everything is kept
in der openssl.cnf nicht passt. Diesen durch den Pfad ersetzen den pwd anzeigt hilft:
dir = /home/eimann/src/openvpn-ca/keys # Where everything is kept
Danach funktioniert das build-key command.
Anschließend Änderungen commiten (ohne erstellten private key), pushen und das ausgecheckte Repository wieder lokal löschen. Alternativ Permissions anpassen chmod 600 keys/*key
.
Änderungen auf dem VPN-Server anwenden:
sudo -E su cd /etc/openvpn/easy-rsa2 git pull origin master chmod 600 keys/*key
Spezielle Server-Konfiguration für den Client anpassen
Jeder Client bekommt bestimmte routen per default gepushed. Um einzustellen, welcher Client welche Routen bekommt, werden unter /etc/openvpn/clients
entsprechende Dateien gepflegt. Der Name der Dateien ist identisch mit dem Common-Name des Client-Zertifikats:
cd /etc/openvpn/clients ln -s default_clients <client> /etc/init.d/openvpn restart # Achtung das kickt leider alle Clients :/
Auf dem Client
OpenVPN client installieren z.B.:
aptitude install openvpn vim /etc/openvpn/voc.conf
/etc/openvpn/voc.conf
anpassen:
; general client dev tun topology subnet ; connection remote 185.106.84.49 port 1194 proto udp keepalive 10 30 resolv-retry infinite link-mtu 1400 mssfix 0 ; crypto cipher AES-128-CBC ; certificates key /etc/openvpn/<client>.key # TODO: change me ca /etc/openvpn/ca.crt cert /etc/openvpn/<client>.crt # TODO: change me tls-auth /etc/openvpn/ta.key 1 ; auth tls-cipher "DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA" tls-client auth SHA512 remote-cert-tls server ; logging verb 0
Folgende Daten müssen lokal in das /etc/openvpn/
-Verzeichnis kopiert werden:
ta.key
ca.crt
<hostname>.key
<hostname>.crt
Anschließend Permissions anpassen und OpenVPN-Client starten:
wheezy (init v)
chmod 600 /etc/openvpn/*.key service openvpn start tail -f /var/log/daemon.log
Ab jessie (systemd):
chmod 600 /etc/openvpn/*.key systemctl enable openvpn@voc systemctl start openvpn@voc tail -f /var/log/daemon.log
Warning: Die Nutzung von Network Manager ist nicht empfohlen. Dieser übernimmt nicht alle Einstellungen aus der Client Config (mtu) (vergl.). Das Problem macht sich dann spätestens beim Aufbau einer ssh Verbindung bemerkbar.
Client Zertifikat widerrufen
Auf dem VPN-Server in den Ordner /etc/openvpn/easy-rsa2/
wechseln und das revoke-full
wie folgt aufrufen:
source vars ./revoke-full <client CN>
Die letzte Zeile der anschließenden Ausgabe sollte lauten: error 23 at 0 depth lookup:certificate revoked
. Änderungen zum Git-Server commiten sowie crl.pem
kopieren:
cp /etc/openvpn/easy-rsa2/keys/crl.pem /etc/openvpn/crl.pem
OpenVPN-Server neustarten.