IPsec verschlüsselt auf Schicht 3 ganze IP-Pakete. In der Praxis konfiguriert man es unter Linux fast immer über eine Implementierung, die Schlüsselaustausch und Richtlinien verwaltet. Dieser Artikel ist die Befehlsreferenz dazu — für strongSwan, die verbreitetste Lösung unter Linux, und für den Kernel-Werkzeugkasten ip xfrm, der die fertigen Sicherheitsassoziationen direkt zeigt. Die Konzepte hinter den Begriffen erklärt der Artikel IPsec.

strongSwan: die klassische Steuerung über ipsec

Das Paket strongswan-starter bringt den Befehl ipsec mit, der den Hintergrunddienst steuert und die Konfiguration liest:

ipsec start            # Dienst starten
ipsec stop             # Dienst stoppen
ipsec restart          # Dienst neu starten
ipsec reload           # Konfiguration neu einlesen
ipsec up site-to-site  # Verbindung aufbauen
ipsec down site-to-site
ipsec status           # kurzer Zustand
ipsec statusall        # ausführlich: IKE-SA, Child-SA, Zeitgeber
ipsec listconfs        # alle definierten Verbindungen
ipsec listcerts        # geladene Zertifikate
ipsec listcacerts      # Zertifizierungsstellen
ipsec listalgs         # unterstützte Algorithmen

Die Konfiguration liegt in /etc/ipsec.conf, Geheimnisse in /etc/ipsec.secrets. Ein Standortverbund in der Schreibweise von ipsec.conf:

conn site-to-site
    keyexchange=ikev2
    left=192.0.2.1
    leftsubnet=10.10.1.0/24
    right=198.51.100.1
    rightsubnet=10.20.2.0/24
    authby=secret
    ike=aes256-sha2_256-modp2048!
    esp=aes256-sha2_256!
    auto=start

auto steuert das Verhalten beim Start: start baut sofort auf, route wartet auf interessanten Verkehr, add lädt nur die Richtlinie.

swanctl: der moderne Weg

Neuere Versionen laden die Konfiguration aus /etc/swanctl/swanctl.conf beziehungsweise aus /etc/swanctl/conf.d/. Der Aufbau ist blockorientiert:

swanctl --load-all          # alles laden (Verbindungen, Schlüssel, Zertifikate)
swanctl --load-conns        # nur Verbindungen
swanctl --load-creds        # nur Schlüssel und Zertifikate
swanctl --list-conns        # konfigurierte Verbindungen
swanctl --list-sas          # aktive Assoziationen
swanctl --list-pools        # Adresspools
swanctl --list-certs        # Zertifikate
swanctl --initiate --child net    # Tunnel aufbauen
swanctl --terminate --ike site-to-site
swanctl --log               # laufende Protokollausgabe
swanctl --reload-settings   # Grundeinstellungen neu laden

Wichtig: Nach jeder Änderung an der Konfiguration muss --load-all folgen — anders als bei ipsec reload arbeitet swanctl nicht automatisch auf Dateiänderungen. Der Dienst läuft als strongswan.service; Meldungen liest man mit journalctl -u strongswan -f.

ip xfrm: Sicherheitsassoziationen im Kernel

Unabhängig von der Implementierung verwaltet der Linux-Kernel alle IPsec-Zustände. Das Werkzeug ip aus dem Paket iproute2 macht sie sichtbar:

ip xfrm state                 # alle Sicherheitsassoziationen (SAs)
ip xfrm policy                # alle Richtlinien (SPD)
ip xfrm state get src 192.0.2.1 dst 198.51.100.1 proto esp spi 0x00000001
ip xfrm monitor               # Ereignisse live mitlesen
ip -s xfrm state              # Paket- und Bytezähler je SA

Die Ausgabe von ip xfrm state zeigt pro Richtung einen Eintrag mit Schlüsselmaterial, Algorithmen und Lebensdauer. Die Zähler aus ip -s xfrm state sind das schnellste Mittel, um zu sehen, ob ein Tunnel tatsächlich Verkehr führt: Ohne steigende Bytes stimmt die Richtlinie, aber die Gegenstelle antwortet nicht.

Diagnose und typische Fehler

  • Phase-1-Fehler: ipsec statusall zeigt, ob die IKE-Association steht. Kommt keine zustande, ist meist der Schlüsselaustausch das Problem — UDP 500 beziehungsweise UDP 4500 hinter NAT muss erreichbar sein.
  • Pakete beobachten: tcpdump -i any -n udp port 500 or udp port 4500 zeigt, ob überhaupt verhandelt wird.
  • Unvollständiger Aufbau: Steht die IKE-SA, aber kein Child, passen die Verkehrsselektoren (leftsubnet/rightsubnet) nicht zusammen.
  • Verkehr fließt nicht: ip xfrm policy prüfen — fehlt eine Richtlinie, wird das Paket unverschlüsselt verworfen oder ins Leere geroutet.
  • Fragmentierung: Weil IPsec-Pakete größer werden, hilft das Absenken der MTU (ip link set dev eth0 mtu 1400) oder eine MSS-Anpassung in der Firewall.

Verwandte Artikel

Die Passwort- und Zertifikatsseite eines IPsec-Aufbaus (X.509, Zertifizierungsstelle, Sperrlisten) behandeln die Artikel X.509, Zertifizierungsstelle, CRL und OCSP. Die Kapselungs- und NAT-Fragen klären IP-Tunnel und NAT. Routerbasierte Varianten beschreibt DMVPN-Befehle, die Einwahl über L2TP und SSTP zeigen L2TP-Befehle und SSTP-Befehle. Firewall-Regeln für Port 500 und 4500 schreibt man mit nftables-Befehle. Wer sich für die schlanke Alternative ohne IKE interessiert, findet sie in den WireGuard-Befehle, und den TLS-basierten Tunnel beschreiben die OpenVPN-Befehle.