El modo de transporte IPsec entre máquinas detrás de dispositivos Nat no funciona

El modo de transporte IPsec entre máquinas detrás de dispositivos Nat no funciona

Mi escenario no utiliza ningún tipo de VPN y no utiliza RRAS.

Estoy intentando establecer una conexión IPsec entre dos máquinas con Windows 10 (ambas con 1709 completamente parcheado) que están detrás de diferentes dispositivos Nat.

A través del firewall de Windows, creé dos reglas de transporte en ambas máquinas, las reglas están relacionadas con el protocolo Smb.

Ambas máquinas están detrás de un Nat, los dos dispositivos Nat están conectados a través de Internet.

Creé en ambas máquinas la clave de registro "AssumeUDPEncapsulationContextOnSendRule" y configuré su valor en ambas PC en "2".

En el dispositivo Nat frente al servidor al que estoy intentando llegar, reenvié los puertos Udp 500 y 4500 y todos los puertos relacionados con Smb al servidor mismo.

En ambas PC permití, a través del firewall de Windows, los puertos Udp entrantes y salientes 500, 4500 e incluso permití “Edge traversal” para Smb en conexión en la PC servidor.

Cuando intento acceder de forma remota al servidor, se crean asociaciones de seguridad en modo rápido pero la conexión no funciona. (El resultado del comando Get-NetIpsecQuickmodeSa parece correcto, es decir, la encapsulación Udp se ha creado correctamente)

La conexión si funciona cuando el cliente está detrás de un Nat y el servidor tiene una Ip pública pero no funciona cuando el cliente tiene una Ip pública y el servidor está detrás de un Nat o cuando tanto el cliente como el servidor están detrás de un Nat.

Debe haber alguna configuración que estoy ignorando.

Por favor, ayúdame a resolver este problema.

Muchas gracias

Respuesta1

Estaba seguro de que había alguna configuración que estaba ignorando y ahí está:

Establecer configuración de NetFirewall: permitir IPsec a través de NAT ambos

La configuración del registro "AssumeUDPEncapsulationContextOnSendRule" está relacionada con el antiguo servicio del agente de políticas IPsec de Windows.

El comando Powershell anterior permite el mismo comportamiento para el firewall de Windows, en particular establece el valor de registro "IPsecThroughNAT" en "2".

Ahora todo funciona como se esperaba y como debería haberlo hecho desde el principio, esta debería ser la configuración predeterminada.

Respuesta2

Es posible que Windows no admita que el servidor esté detrás de un dispositivo NAT. Requiere que el Servidor tenga una dirección IP pública. Existe una solución alternativa al agregar la siguiente clave de registro.

Ubicación de la subclave del registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent Nombre del valor DWORD: AssumeUDPEncapsulationContextOnSendRule Datos del valor DWORD: 2

Fuente:

https://support.microsoft.com/en-us/help/926179/how-to-configure-an-l2tp-ipsec-server-behind-a-nat-t-device-in-windows

http://www.itdroplets.com/l2tp-vpn-not-working-in-windows/

información relacionada