Skip to content

VPN

VPN, kurz Virtual Private Network, beschreibt eine Netzwerktechnologie, die eine sichere und verschlüsselte Verbindung über das Internet in ein Zielnetzwerk, in diesem Fall den LD-Server, herstellt. LogoDIDACT bedient sich hierbei der bekannten OpenSource-Lösung OpenVPN.

Einrichtung

In LogoDIDACT 4.0 Umgebungen ist OpenVPN nicht standardmäßig auf dem LD-Server vorinstalliert und erfordert nach der Installation des Paketes zunächst einige grundlegende Konfigurationsanpassungen. Dies hat den Hintergrund, dass nicht jeder LD-Server dem Standard entspricht hinsichtlich genutzter Netzwerke, Internet-Domain und weiterem.

Zunächst das entsprechende Paket im Container logosrv herunterladen und bereitstellen.

logosrv
1
2
3
4
5
6
7
root@ldhost:~ # ssh logosrv

# Paketlisten aktualisieren
root@logosrv:~ # apt-get update

# Installation ld-openvpn
root@logosrv:~ # apt-get install ld-openvpn=2.8

Info

Pakete werden in LogoDIDACT kontinuierlich weiterentwickelt und verbessert. Es kann daher möglich sein, dass Sie eine höhere Version des Paketes ld-openvpn zur Installation erhalten.

Im logosrv nun die Datei service.conf öffnen. Dort wird der Pfad der openvpn-Konfigurationsvorlage für Clients definiert. Es werden nun 2 Pfade erstellt, einmal die normale logodidact-VPN.ovpn für PCs und logodidact-VPN-Mobile.ovpn für Mobilgeräte wie z.B. iPads. Idealerweise sind diese beiden Einträge durch das Update automatisch vorhanden, ansonsten einfach anpassen wie dargestellt.

logosrv
root@ldhost:~ # ssh logosrv
root@logosrv:~ # vi /etc/logodidact/service.conf

service.conf

1
2
3
4
[VPN]
...
TemplateClientConf /etc/logodidact/vpn/logoDIDACT-VPN.ovpn
TemplateClientConf /etc/logodidact/vpn/logoDIDACT-VPN-Mobile.ovpn
1
2
3
4
[VPN]
...
TemplateClientConf /etc/logodidact/vpn/Vom_Internet.ovpn
TemplateClientConf /var/lib/logodidact/vpn/keys/Vom_WLAN.ovpn

Im Anschluss den Befehl do_netconf vpn-server ausführen. Dadurch wird die Konfiguration des OpenVPN-Servers hinsichtlich der zu bedienenden Netzwerkbereiche und DNS-Server angepasst. Die Anpassungen werden in die OpenVPN-Server Konfigurationsdateien server.conf und server-tun.conf geschrieben. Dazu müssen noch einige Ergänzungen getätigt werden.

logosrv
root@logosrv:~ # vi /etc/openvpn/server.conf
  1. Dateiinhalte updatesicher setzen mittels $preserve=yes

    server.conf
    1
    2
    3
    4
    # Diese Datei wird normalerweise bei do_netconf überschrieben. Wenn
    # Sie hier Änderungen vornehmen möchten, setzen Sie den folgenden Wert bitte auf yes: $preserve=yes
    daemon openvpn
    dev tap0
    
  2. Kontrolle, ob die internen Netzwerke korrekt gesetzt sind. Es muss das interne Servernetzwerk servernet, sowie das Schulnetz intern mit den richtigen Netzwerkbereichen vorhanden sein.

    server.conf
    1
    2
    3
    4
    5
    [...]
    server 172.18.18.0 255.255.255.0
    push "route 10.16.0.0 255.240.0.0" #Netzwerk "intern"
    push "route 172.28.28.0 255.255.255.0" #Netzwerk "servernet"
    [...]
    

    Warnung

    Die Netze können an diversen Schulen vom Standard abweichen! Die Daten bekommt man aus der network.conf im logosrv (/etc/logodidact/).

  3. Prüfen, dass nur eine gültige DOMAIN vorhanden ist. Multiple definierte DOMAINs führen zu Disfunktionalität.

    server.conf

    push "dhcp-option DOMAIN schule.local"
    
    1
    2
    3
    push "dhcp-option DOMAIN schule.local"
    push "dhcp-option DOMAIN musterstadt-gym.logoip.de"
    push "dhcp-option DOMAIN vahzahfaedahh4tb.logodidact-system"
    
  4. DOMAIN-SEARCH Zonen setzen. Diese sind notwendig, damit alle Dienste von LD über die VPN korrekt über den DNS-Namen aufgelöst und aufgerufen werden können, darunter LD Console, CTRL, Netzlaufwerke, etc..

    1
    2
    3
    4
    5
    [...]
    push "dhcp-option DOMAIN-SEARCH schule.local" #Anpassen
    push "dhcp-option DOMAIN-SEARCH [SHORTNAME].logoip.de" #Anpassen
    push "dhcp-option DOMAIN-SEARCH [interne-DNS-ZONE].logodidact-system" #Anpassen
    [...]
    

    Tipp

    Die System-Zone kann man hierüber auslesen:

    ssh puppeteer-g3
    cat /etc/logodidact/domain/system.domain
    
  5. Alle Änderungen an der Datei speichern.

  6. Wechseln Sie nun in die zweite Datei server-tun.conf. Alle Anpassungen aus den Schritten 1-4 auch hier durchführen und die Änderungen speichern.

    root@logosrv:/etc/openvpn # vi server-tun.conf
    

Zur Übernahme der neuen Konfiguration den openVPN-Dienst neu starten.

root@logosrv:/etc/openvpn # invoke-rc.d openvpn stop
root@logosrv:/etc/openvpn # invoke-rc.d openvpn start

Damit sich VPN-User mit dem openVPN-Server verbinden können ist im Zuge dessen auch eine Client- Konfiguration erforderlich, heißt für jeden Benutzer muss eine ovpn-Datei erzeugt werden. Diese wird im H:\-Laufwerk des jeweiligen Benutzers im Ordner openVPN abgelegt.

root@logosrv:/etc/openvpn # ldvpn --check --verbose

Ports freischalten

Damit OpenVPN Verbindungen aus dem Internet zum LD-Server herstellen kann, werden Portweiterleitungen benötigt. Schalten Sie in der Shorewall des ldhost die OpenVPN-Ports 1194 und 1195 frei.

ldhost
cd /etc/shorewall/
vi rules
rules
OpenVPN(DNAT)      ext        dmz:$IP_LOGOSRV
DNAT               ext        dmz:$IP_LOGOSRV   udp 1195

Tipp

Die Variable $IP_LOGOSRV ist ein Verweis auf die IP-Adresse des logosrv im servernet. Ergänzen Sie diesen Wert, falls noch nicht vorhanden, in der Datei params.

rules
cd /etc/shorewall/
vi params
params
[...]
IP_LOGOSRV=172.28.29.2

Zu guter Letzt die Shorewall-Konfiguration prüfen und neu starten.

ldhost
shorewall check
shorewall restart

(Optional) Zielserver-Adresse anpassen

Falls der LD-Server keine logoip.de-Adresse verwendet, beispielsweise in Konstellationen wo eine eigene Internet-Domain für LD-Dienste besteht, können bei Bedarf die OpenVPN-Templates angepasst werden. Standardmäßig wird hier die vordefinierte shortname.logoip.de-Adresse verwendet.

logosrv
cd /var/lib/ld-openvpn/
vi logodidact-VPN.ovpn

logodidact-VPN.ovpn

1
2
3
4
5
6
7
tls-client
client
dev tap
proto udp
remote meine-schule.logoip.de 1194 
verb 3
remote-cert-tls server
1
2
3
4
5
6
7
tls-client
client
dev tap
proto udp
remote meine-schule.de 1194 
verb 3
remote-cert-tls server        

Warnung

Die hier durchgeführten Änderungen haben zur Folge, dass die OpenVPN-Client-Konfigurationen neu erzeugt werden müssen.

VPN-Konfigurationsdateien erzeugen

Um Benutzern eine OpenVPN-Client-Konfiguration zu erzeugen, geben Sie diesem im LD Control Center die entsprechende Berechtigung. Siehe LD Control Center: Berechtigungen. Nach der Rechtevergabe werden serverseitig automatisch die Client-Konfigurationsdateien erzeugt und im H:\ des jeweiligen Benutzers im Ordner OpenVPN abgelegt.

Import am Client

Die erzeugte OpenVPN-Client-Konfiguration kann nun auf einem beliebigen Gerät mit installiertem OpenVPN-Client importiert und verwendet werden.

Den OpenVPN-Client finden Sie hier: OpenVPN Community Edition

Warnung

Die Kompatibiltät ist sichergestellt bis OpenVPN-Client Version 2.6.13. Neuere Versionen können dazu führen, dass ein erfolgreicher Verbindungsaufbau nicht möglich ist.

(Optional) server.conf Beispiel

Beispielkonfiguration einer server.conf.

# ACHTUNG!
# --------
#
# Diese Datei wird normalerweise bei do_netconf überschrieben. Wenn
# Sie hier Änderungen vornehmen möchten, setzen Sie den folgenden Wert
# bitte auf yes: $preserve=yes
daemon openvpn
dev tap0
proto udp
port 1194
tls-server
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 172.18.18.0 255.255.255.0
push "route 10.16.0.0 255.240.0.0"
push "route 172.28.28.0 255.255.255.0"
push "topology subnet"
push "dhcp-option DOMAIN schule.local"
push "dhcp-option DOMAIN-SEARCH schule.local"
push "dhcp-option DOMAIN-SEARCH musterstadt-gym.logoip.de"
push "dhcp-option DOMAIN-SEARCH vahzahfaedahh4tb.logodidact-system"
push "dhcp-option DNS 172.28.28.3"
push "dhcp-option DNS 172.28.28.3"
push "dhcp-option WINS 172.28.28.3"
push "dhcp-option WINS 172.28.28.3"
keepalive 10 60
log-append /var/log/openvpn/server.log
status-version 2
status /var/run/openvpn.status 10
cipher AES-256-CBC
auth SHA256
duplicate-cn
script-security 2
max-clients 100
tls-verify /usr/lib/logodidact/bin/verify_openvpn_cert
user nobody
group nogroup
persist-key
persist-tun
verb 3