hardware:event-vpngw

VPN

Important: Das Access VPN wird grade auf WireGuard VPN umgestellt, dementsprechend sind manche Abschnitte auf dieser Seite nicht mehr aktuell!

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/24
  • wrt1.lan.c3voc.de: 10.73.1.0/24
  • wrt2.lan.c3voc.de: 10.73.2.0/24
  • wrt3.lan.c3voc.de: 10.73.3.0/24
  • wrt4.lan.c3voc.de: 10.73.4.0/24
  • wrt5.lan.c3voc.de: 10.73.5.0/24
  • oscwrt1.lan.c3voc.de: 10.73.41.0/24
  • oscwrt2.lan.c3voc.de: 10.73.42.0/24
  • router-muc.lan.c3voc.de: 10.73.80.0/24
  • router-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.

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 oder
  • route add $auphonic_ip gw 10.8.0.1 dev tun0

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 :/

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.

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.

  • hardware/event-vpngw.txt
  • Last modified: 2024/03/31 14:55
  • by andi