Windows server 2012 r2 vpn and nat

Записки IT специалиста

Разговоры про IT и не только

среда, 9 апреля 2014 г.

VPN Сервер на Windows Server 2012 R2.

В данной статье представлена инструкция по развертыванию простейшего VPN-сервера на базе Windows Server 2012 R2. По моему личному мнению поднимать VPN на базе Windows можно в случае использования небольшой офисной сети с потребностью удаленного подключения для нескольких сотрудников. В случае же организации VPN между филиалами компании с достаточно обширной инфраструктурой, следует использовать технологию DirectAccess либо VPN на базе аппаратных решений (например Cisco).

Перейдем к установке и настройке:

  1. Открываем Server Manager — Dashboard, нажимаем «Add roles and features» (Рис.1):

2. Выбираем «Role-based or feature-based installation» и нажимаем Next (Рис.2):

3. Далее попадаем на страницу выбора сервера (в моем случае он один), выбираем сервер и нажимаем Next (Рис.3):

4. Далее выбираем роль «Remote Access» и нажимаем Next (Рис.4):

5. На последующий страницах мастера нажимаем два раза Next. В окне выбора служб ролей (Select role services) выбираем «DirectAcces and VPN (RAS)». Откроется окно «Add features», нажимаем кнопку «Add Features» (Рис.5 и 6):

6. Затем откроется окно «Web Server Role», нажимаем Next (Рис.7):

7. В окне «Select role services» нажимаем Next (Рис.8):

8. В окне подтверждения нажимаем Install (Рис.9):

9. После окончания установки нажимаем «Open the Getting Started Wizzard» (Рис.10):

10. Откроется окно «Configure Remote Access», нажимаем «Deploy VPN only» (Рис.11):

11. Откроется консоль «Routing and Remote Access». Нажимаем правой кнопкой мыши на нашем сервер и выбираем «Configure and Enable Routing and Remote Access» (Рис.12):

12. Откроется мастер настройки, нажимаем Next (Рис.13):

Читайте также:  Установка wifi kali linux драйвер

13. В окне Configuration выбираем «Remote Access (dial-up orVPN)» и нажимаем Next (Рис.14):

14. На следующей странице выбираем VPN и нажимаем Next (Рис.15):

15. Далее выбираем сетевой адаптер, имеющий доступ в Интернет и нажимаем Next (Рис.16):

16. В следующем окне можно выбрать, каким образом будут выдаваться IP-адреса vpn-клиентам: с помощью DHCP или из специального пула, выбираем второй вариант и нажимаем Next (Рис.17):

18. В окне «Address Range Assignment» нажимаем кнопку New (Рис.18):

19. Задаем начальный и конечный адреса диапазона и нажимаем Ок (возвращаемся на предыдущую страницу и нажимаем Next (Рис.19):

20. Далее выбираем метод аутентификации клиентов: с помощью RRAS или RADIUS. Выбираем первый вариант и нажимаем Next (Рис.20):

21. После успешной настройки нажимаем Finish (Рис.21):

22. Если нам нужен VPN PPTP, то настройки на этом завершены. Если нам нужен VPN L2TP, в консоли «Routing and Remote Access» открываем свойства нашего сервера (Рис.22):

23. На вкладке Securuty задаем «Preshared Key» (ставим галку «Allow custom IPsec policy for L2TP/IKEv2 connection») (Рис.23):

24. Далее в консоли RRAS открываем свойства портов, выбираем «WAN miniport (L2TP)» и ограничиваем количество портов (Рис.24):

25. Чтобы дать пользователю доступ к VPN, открываем свойства нужного нам пользователя и переходим на вкладку Dial-in, в разделе Network Access Permission выбираем «Allow Access» и нажимаем Apply (Рис.25):

26. Также необходимо открыть следующие порты на фаерволе:

  • PPTP TCP — 1723
  • L2TP — UDP порт 1701
  • IKE — UDP порт 500
  • IPSec ESP — UDP порт 50
  • IPSec NAT-T — UDP порт 4500
  • SSTP — TCP 443

Исправляем проблему подключения к L2TP/IPSec VPN серверу за NAT

Столкнулись с интересной проблемой у одного из заказчиков после перенастройки VPN сервера Windows Server 2012 с PPTP на L2TP/ IPSec (из за отключения поддержки PPTP VPN в iOS). Изнутри корпоративной сети VPN клиенты без каких-либо проблем подключаются к VPN серверу, а вот внешние Windows клиенты при попытке установить соединение с L2TP VPN сервером, выдают такую ошибку:

Читайте также:  File save mac os

The network connection between your computer and the VPN server could not be established because the remote server is not responding. This could be because one of the network devices (e.g. firewalls, NAT, routers, etc) between your computer and the remote server is not configured to allow VPN connections. Please contact your Administrator or your service provider to determine which device may be causing the problem.

В других версиях Windows о наличии аналогичной проблемы могут свидетельствовать ошибки VPN подключения 800, 794 или 809.

Стоит отметить, что данный VPN сервер находится за NAT, а на маршрутизаторе настроен проброс портов, необходимых для работы L2TP:

  • UDP 1701 — Layer 2 Forwarding Protocol (L2F) & Layer 2 Tunneling Protocol(L2TP)
  • UDP 500
  • UDP 4500 NAT-T – IPSec Network Address Translator Traversal
  • Protocol 50 ESP

В правилах Windows Firewall VPN сервера эти порты также открыты. Т.е. используется классическая конфигурация. Для подключения используется встроенный VPN клиент Windows.

VPN ошибка 809 для L2TP/IPSec в Windows за NAT

Как оказалось, проблема эта уже известна и описана в статье https://support.microsoft.com/en-us/kb/926179. По умолчанию встроенный VPN клиент Windows не поддерживает подключение к L2TP/IPsec через NAT. Дело в том, что IPsec использует протокол ESP (Encapsulating Security Payload) для шифрования пакетов, а протокол ESP не поддерживает PAT (Port Address Translation). Если вы хотите использовать IPSec для коммуникации, Microsoft рекомендует использовать белые IP адреса на VPN сервере.

Но есть и обходное решение. Можно исправить этот недостаток, включив поддержку протокола NATT, который позволяет инкапсулировать пакеты протокола ESP 50 в UDP пакеты по порту 4500. NAT-T включен по-умолчанию почти во всех операционных системах (iOS, Android, Linux), кроме Windows.

Если VPN сервер L2TP/IPsec находится за NAT, то для корректного подключения внешних клиентов через NAT необходимо на стороне Windows сервера и клиента внести изменение в реестр, разрешающее UDP инкапсуляцию пакетов для L2TP и поддержку (NAT-T) для IPsec.

Читайте также:  Windows media centre streaming

  1. Откройте редактор реестра regedit.exe и перейдите в ветку:
    • Для Windows 10,8.1,7 и Windows Server 2016,2012R2,2008R2 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
    • Для Windows XP/Windows Server 2003 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
  2. Создайте DWORD параметр с именем AssumeUDPEncapsulationContextOnSendRule и значением 2;

  • 0 – (значение по-умолчанию), предполагается, что VPN сервер подключен к интернету без NAT;
  • 1 – VPN сервер находится за NAT;
  • 2 — и VPN сервер и клиент находятся за NAT.

Set-ItemProperty -Path «HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent» -Name «AssumeUDPEncapsulationContextOnSendRule» -Type DWORD -Value 2 –Force;

После включения поддержки NAT-T, вы сможете успешно подключаться к VPN серверу с клиента через NAT (в том числе двойной NAT).

L2TP VPN не работает на некоторых Windows компьютерах в локальной сети

Есть еще один интересный баг. Если в вашей локальной сети несколько Windows компьютеров, вы не сможете установить более одного одновременного подключения к внешнему L2TP/IPSec VPN серверу. Если при наличии активного VPN туннеля с одного клиента, вы попытаетесь подключиться к тому же самому VPN серверу с другого компьютера, появится ошибка с кодом 809 или 789:

По информации на TechNet проблема связана с некорректной реализацией клиента L2TP/IPSec клиента в Windows (не исправляется уже много лет).

Для исправления этого бага нужно изменить два параметра реестра в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters и перезагрузите компьютре:

  • AllowL2TPWeakCrypto – изменить на 00000001 (ослабляет уровень шифрования, для L2TP/IPSec используются алгоритмы MD5 и DES)
  • ProhibitIPSec – изменить на 00000000 (включает шифрование IPsec, которое часто отключается некоторыми VPN клиентами или утилитами)


Для изменения этих параметров реестра достаточно выполнить команды:
reg add «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters» /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f
reg add «HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters» /v ProhibitIpSec /t REG_DWORD /d 0 /f

Это включает поддержку нескольких одновременных L2TP/IPSec-подключений в Windows через общий внешний IP адрес (работает на всех версиях, начиная с Windows XP и заканчивая Windows 10).

Оцените статью