= VPN Das Access VPN wird grade auf [[intern:wireguard]] 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 [[hardware:encoder]]'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 [[intern:server:ber.c3voc.de:mng]] ''/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 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 [[intern:server:ber.c3voc.de:mng]] 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 VPN Client konfigurieren === Auf dem VPN-Server ==== neuen Key erstellen Der VPN-Server ist aktuell [[intern:server:ber.c3voc.de:mng]]. Sämtliche Keys die für das OpenVPN mit easy-rsa2 verwaltet werden befinden sich in dem [[intern:git|git]]-Repository ''git@git.c3voc.de:openvpn-ca''. Dieses Repository //lokal// auschecken und neuen Key generieren: source vars ./build-key ./sign-csr # 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 [[intern:server:ber.c3voc.de:mng|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 /etc/init.d/openvpn restart # Achtung das kickt leider alle Clients :/ === Auf dem Client [[https://openvpn.net/|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/.key # TODO: change me ca /etc/openvpn/ca.crt cert /etc/openvpn/.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'' * ''.key'' * ''.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 Die Nutzung von Network Manager ist nicht empfohlen. Dieser übernimmt nicht alle Einstellungen aus der Client Config (mtu) ([[https://bugs.launchpad.net/ubuntu/+source/network-manager-openvpn/+bug/364101|vergl.]]). Das Problem macht sich dann spätestens beim Aufbau einer ssh Verbindung bemerkbar. == Client Zertifikat widerrufen Auf dem [[intern:server:ber.c3voc.de:mng|VPN-Server]] in den Ordner ''/etc/openvpn/easy-rsa2/'' wechseln und das ''revoke-full'' wie folgt aufrufen: source vars ./revoke-full 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.