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 statusallzeigt, 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 4500zeigt, 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 policyprü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.