IPSec auf einem Windows Server 2003 Cluster?

IPSec war von Microsoft mit Erscheinen von Windows Server 2003 ursprünglich als not recomended für den Clusterbetrieb eingestuft:

» TechNet: IPSec in Cluster Networking
(Stand: January 01, 2003)

IPSec was not designed for failover situations and we recommend that you do NOT use IPSec for applications in a Server cluster.

Grund für diese Empfehlung ist die Art und Weise, wie die Sicherheitszuordnungen (SAs) des IPSec Internet Key Exchange (IKE) gespeichert werden – nämlich in einer lokalen und damit Nodes-pezifischen Datenbank.

Bei einem Failover müssen daher alle IPSec Verbindungen neu initiiert werden, um eine neue IKE SA auszuhandeln. Dieser Prozess dauert bei einem Windows 2000 Server Cluster per default 6 Minuten: 5 Minuten für den IPSec Idle Timeout, 1 Minute für das Re-initiieren durch den IKE (siehe » KB306677).
Das erhöht die Failoverzeit beträchtlich und senkt die potentielle Uptime…

Auf einem Windows Server 2003 Cluster kann diese Zeit per Registry immerhin auf 2 Minuten gedrückt werden, daher hat sich die ursprüngliche Empfehlung von Microsoft inzwischen wieder etwas relativiert.
Im Falle von Exchange 2003 ist ein Cluster Setup im Zusammenhang mit IPSec auch supported:

» How to Configure IPSec on an Exchange … Cluster

Mit der Hilfe des Registry-Keys NLBSFlags=1 kann in einer Multi-Tier Umgebung mit zB. NLB Frontendserver die IPSec idle time von 5 auf eine Minute gesenkt werden. Zusammen mit der IKE Re-initiierung (+1 Minute) kommt man dann auf die erwähnten 2 Minuten. Der Key ist in folgendem Zweig zu finden:
HKLM\SYSTEM\CurrentControlSet\Services
    \PolicyAgentOakley

Alles in allem muss abgewägt werden, ob man mit der zusätzlichen Verzögerung bei einem Failover leben kann bzw. ob dies die jeweiligen SLAs erlauben.

Für Windows Server 2008 Cluster hat sich das geändert, in Verbindung mit Windows Vista ist IPSec nicht mehr abhängig von Timeouts und kann bei einem Failover sofort eine neue SA aushandeln.

Stay tuned,
N.Own