Zum Inhalt springen

VPN unter NixOS

Aus Helpdesk

VPN unter NixOS

Diese Anleitung beschreibt die Einrichtung des FernUni Hagen VPN unter NixOS mit vpnc. Diese Anleitung wurde von Kore Nordmann erstellt. Der Helpdesk kann zu Linux leider keinen weitergehenden Support anbieten.

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

Vorlage:Warnung

Die Eingabereihenfolge ist:

  1. Erste Aufforderung "Enter password": Dein Passwort
  2. 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.

Vorlage:Hinweis

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
'';

Vorlage:Warnung

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

Siehe auch