L2TP / IPSec, NAT-T i wpisy rejestru na kliencie Windows

Przy konfigurowaniu VPNa opartego na L2TP/IPSec spotkałem się z dwoma ciekawymi problemami dotyczącymi konfiguracji wbudowanego klienta w Windows 7 (na Windows Vista jest identycznie)
1. Niedziałający IPSec. – VPN niby działał ale szyfrowanie oparte o IPSec już nie. Klucz wstępnego uwierzytelniania był pomijany a połączenie zestawiane w oparciu o protokół MPPE (Microsoft Point-to-Point Encryption). Po analizie okazało się, że zmieniona (notabene przez dedykowanego klienta VPN 🙂 )została wartość klucza odpowiadająca za wymuszanie IPSec po stronie klienta (Windows 7).
Wpis rejestru odpowiadający za działanie IPSec znajduje się w HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\RasMan\Parameters\ProhibitIpSec i może przybierać dwie wartości:

  • 0 – IPsec działa
  • 1 – IPSec nie dziala / jest pomijany

2. L2TP i NAT. W przypadku kiedy serwer i klient L2TP znajdują się za NATem wykorzystywany jest mechanizm NAT-Traversal. Aby L2TP w takim przypadku zadziałał musimy przyjrzeć się i poprawnie ustawić wartości w następującym kluczu rejestru na kliencie (Windows 7): HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PolicyAgent\AssumeUDPEncapsulationContextOnSendRule
Wartości jakie może przybierać to:

  • 0 – wartość domyślna – serwer wystawiony do Internetu bez NAT
  • 1 – serwer za NAT
  • 2 – serwer i klient za NAT