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

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

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

sts1.png

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

ip nat inside source static udp 10.254.1.8 1701 interface Dialer0 1701
ip nat inside source static udp 10.254.1.8 4500 interface Dialer0 4500
ip nat inside source static udp 10.254.1.8 500 interface Dialer0 500

 Для каждого порта так же должно быть разрешающее правило на фаерволе 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 на работу с соединениями по вызову.

sts2.png

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

sts3.png

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

sts4.png

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

sts5.png

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

sts6.png

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

sts8.png

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

sts7.png

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

sts10.png

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

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 (наgример, после Debian 7) машин с динамическими адресами. При наличии 121 опции Linux машины потеряют шлюз по умолчанию. Это лечится добавлением ещё одного шлюза по умолчанию в 121 опцию).

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