L2TP VPN между сетями на базе Windows Server 2016 и PSK.

 Имеется сеть из семи узлов. По три узла в каждой сети и маршрутизатора между ними. Примерная схема изображена ниже. На всех хостах установлен Windows Server 2016. Для VPN будет использоваться по одному хосту с одним сетевым интерфейсом. Данная схема имитирует ситуацию, когда нет возможности настроить VPN на шлюзе.

 

 Для работы L2TP VPN необходимо пробросить три UDP порта: 1701, 500, 4500. Так это делается в RRAS, который подключён к вашему Интернет Провайдеру.

Если у вас используется Cisco в роли маршрутизатора, то там порты пробрасываются так, где Dialer0 - внешний интерфейс, 10.254.1.8 - IP адрес VPN сервера:

ip nat inside source static udp 10.254.1.81701interfaceDialer01701
ip nat inside source static udp 10.254.1.84500interfaceDialer04500
ip nat inside source static udp 10.254.1.8500interfaceDialer0500

 Для каждого порта так же должно быть разрешающее правило на фаейрволе VPN севрвера. Для IKE (500, 4500) правила создаются вручную.

PS C:\> Get-NetFirewallRule -DisplayName "IKE NAT","*L2TP*" | Get-NetFirewallPortFilter | ft

Protocol LocalPort RemotePort IcmpType DynamicTarget
-------- --------- ---------- -------- -------------
UDP 1701 Any Any Any
UDP {500, 4500} Any Any Any
UDP Any 1701 Any Any

 Также не забываем правку реестра (на VPN сервере). Без этго L2TP не будет работать за NAT:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent]
"AssumeUDPEncapsulationContextOnSendRule"=dword:00000002

 Настраиваем RAS на работу с соединениями по вызову.

 Даная сеть будет использовать общий ключ PSK (может позже напишу про сетификаты, но в принципе, оно не отличается от уже имеющейся статьи).

 Создаём соединение по требованию (на каждом VPN сервере). Я даю название на основании того, куда сервер будет подключаться. В данном случае сервер RAS1 будет подключаться к серверу RAS2 (192.168.100.254):

 Далее задаётся удалённая локальная сеть, а также сеть, которая будет использоваться для создания туннеля. При отсутствии DHCP это - 169.254.0.0/16.

 Задаём учётные данные для входящего (будет создана локальная учётная запись) и исходящего подключения:

 Вот тут я добавил сеть, использующуюся для постороения туннеля. Если в филиалах есть и другие сети, к которым необходим доступ, то все эти сети должны быть перечислены в "статические маршруты":

 В свойствах подключения вводим PSK:

 Готово. Данное подключение будет включаться при обращении в удалённую сеть. Можно настроить, чтобы подколючение было постоянным.

 Чтобы клиенты находили удалённые сети, они должны знать маршрут в эти сети. Для этого необходимо добавить статический маршрут на шлюзе:

route ADD -p 10.10.10.0 MASK 255.255.255.0 10.20.20.22
route ADD -p 10.20.20.0 MASK 255.255.255.0 10.10.10.11

Или в 121 опции в DHCP (внимание, 121 опция не рекомендована при наличии в сети современных Linux (наример, после Debian 7) машин с динамическими адресами. При наличии 121 опции Linux машины потеряют шлюз по умолчанию. Это лечится добавлением ещё одного шлюза по умолчанию в 121 опцию).

19.10.2017
09.04.2018 (дополнение)