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