Транспортный режим IPsec между машинами за устройствами NAT не работает

Транспортный режим IPsec между машинами за устройствами NAT не работает

В моем сценарии не используются никакие VPN и RRAS.

Я пытаюсь установить IPsec-соединение между двумя машинами под управлением Windows 10 (обе с полностью обновленной версией 1709), которые находятся за разными устройствами NAT.

Через брандмауэр Windows я создал два транспортных правила на обеих машинах, правила связаны с протоколом Smb.

Оба компьютера находятся за NAT, два NAT-устройства подключены через Интернет.

Я создал на обеих машинах раздел реестра «AssumeUDPEncapsulationContextOnSendRule» и установил его значение на обоих компьютерах на «2».

На устройстве NAT перед сервером, к которому я пытаюсь подключиться, я перенаправил порты Udp 500 и 4500, а также все порты, связанные с Smb, на сам сервер.

На обоих компьютерах я разрешил через брандмауэр Windows входящие и исходящие порты UDP 500, 4500 и даже разрешил «Edge traversal» для Smb-соединения на серверном компьютере.

Когда я пытаюсь получить удаленный доступ к серверу, создаются ассоциации безопасности быстрого режима, но соединение не работает. (Вывод команды Get-NetIpsecQuickmodeSa выглядит нормально, то есть инкапсуляция UDP была создана правильно)

Соединение работает, когда клиент находится за NAT, а сервер имеет публичный IP-адрес, но оно не работает, когда у клиента есть публичный IP-адрес, а сервер находится за NAT, или когда и клиент, и сервер находятся за NAT.

Видимо, я какую-то настройку игнорирую.

Пожалуйста, помогите мне решить эту проблему.

Большое спасибо

решение1

Я был уверен, что проигнорировал какую-то настройку, и вот она:

Set-NetFirewallSetting -AllowIPsecThroughNAT Оба

Параметр реестра «AssumeUDPEncapsulationContextOnSendRule» связан со старой службой агента политики Windows IPsec.

Приведенная выше команда Powershell обеспечивает такое же поведение для брандмауэра Windows, в частности, она устанавливает значение реестра «IPsecThroughNAT» равным «2».

Теперь все работает так, как и ожидалось, и как и должно было быть с самого начала, это должно быть настройкой по умолчанию.

решение2

Windows может не поддерживать сервер, находящийся за устройством NAT. Для этого требуется, чтобы сервер имел публичный IP-адрес. Существует обходной путь путем добавления следующего ключа реестра.

Расположение подраздела реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent Имя значения DWORD: AssumeUDPEncapsulationContextOnSendRule Данные значения DWORD: 2

Источник:

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/

Связанный контент