VPN unter NixOS
VPN unter NixOS
Diese Anleitung beschreibt die Einrichtung des FernUni Hagen VPN unter NixOS mit vpnc.
Voraussetzungen
- NixOS mit NetworkManager
- FernUni Hagen Zugangsdaten
- 2FA-Token (z.B. Authenticator-App)
Installation
Füge folgende Pakete zur environment.systemPackages in deiner configuration.nix hinzu:
environment.systemPackages = with pkgs; [
networkmanager-vpnc
vpnc
];
Grundkonfiguration
Erstelle die VPN-Konfigurationsdatei über NixOS:
environment.etc."vpnc/fernuni.conf".text = ''
IPSec gateway vpn.fernuni-hagen.de
IPSec ID IPsec
IPSec secret IPsec
IKE Authmode psk
Xauth username DEIN_BENUTZERNAME
'';
Verbindung herstellen
sudo vpnc fernuni
Wichtiger Hinweis zur Passwort-Eingabe
Die Eingabereihenfolge ist:
- Erste Aufforderung "Enter password": Dein Passwort
- Zweite Aufforderung "Enter password": Nur der 6-stellige 2FA-Token (nicht Passwort+Token!)
Der Server sendet zwar die korrekte Nachricht ("Bitte jetzt den Token-Code eingeben:"), aber vpnc ignoriert diese und zeigt stattdessen die generische Passwort-Aufforderung an.
Verbindung trennen
sudo vpnc-disconnect
Passwort speichern (optional)
Es ist möglich, das Passwort in der Konfiguration zu hinterlegen:
environment.etc."vpnc/fernuni.conf".text = ''
IPSec gateway vpn.fernuni-hagen.de
IPSec ID IPsec
IPSec secret IPsec
IKE Authmode psk
Xauth username DEIN_BENUTZERNAME
Xauth password DEIN_PASSWORT
'';
Split Tunneling
Standardmäßig wird der gesamte Netzwerkverkehr durch das VPN geleitet. Um nur FernUni-Traffic über das VPN zu routen:
Automatische Konfiguration
Erstelle ein Wrapper-Script für vpnc-script:
environment.etc."vpnc/fernuni.conf".text = ''
IPSec gateway vpn.fernuni-hagen.de
IPSec ID IPsec
IPSec secret IPsec
IKE Authmode psk
Xauth username DEIN_BENUTZERNAME
Script /etc/vpnc/vpnc-script-split
'';
environment.etc."vpnc/vpnc-script-split" = {
mode = "0755";
text = ''
#!/bin/sh
# Force split tunneling for FernUni network only
export CISCO_SPLIT_INC=1
export CISCO_SPLIT_INC_0_ADDR=132.176.0.0
export CISCO_SPLIT_INC_0_MASK=255.255.0.0
export CISCO_SPLIT_INC_0_MASKLEN=16
export CISCO_SPLIT_INC_0_PROTOCOL=0
export CISCO_SPLIT_INC_0_SPORT=0
export CISCO_SPLIT_INC_0_DPORT=0
exec ${pkgs.vpnc-scripts}/bin/vpnc-script "$@"
'';
};
Manuelle Konfiguration
Alternativ nach dem Verbinden manuell ausführen:
# VPN-Default-Route entfernen
sudo ip route del default dev tun0
# Nur FernUni-Netzwerk über VPN routen
sudo ip route add 132.176.0.0/16 dev tun0
Überprüfung
# Sollte normale Schnittstelle zeigen (z.B. enp0s31f6)
ip route get 1.1.1.1
# Sollte tun0 zeigen
ip route get 132.176.1.1
# Öffentliche IP prüfen (sollte NICHT 132.176.x.x sein)
curl ifconfig.me
Fehlerbehebung
PAYLOAD_MALFORMED Fehler
Dieser Fehler kann auftreten, wenn:
- Der 2FA-Token falsch eingegeben wurde
- Der Token abgelaufen ist (zu lange gewartet)
- Copy & Paste Probleme verursacht hat
Lösung: Erneut verbinden und Token manuell eintippen.
Debug-Ausgabe
Für detaillierte Fehleranalyse:
sudo vpnc --debug 99 fernuni