L2TP (Layer 2 Tunneling Protocol, протокол туннелирования второго уровня) - Поддержка встроена в Windows. Для создания защищённой VPN его используют совместно с IPSec.
Протокол туннелирования второго уровня создан на основе pptp и проприетарного протокола L2F, разработанного Cisco. В отличие от pptp, в L2TP не используется выделенный канал управления. Все управляющие сообщения посылаются через туннель. Проблема PPTP и иже с ними, связанная с переходом через NAT, ввиду отсутствия в GRE портов, решена в L2TP инкапсулированием туннелируемых данных в UDP (порт 1701). В результате пользовательские данные обернуты как в капусте целой кучей заголовков, да плюс еще PPP-прицепчик.
Реализация протокола мультисвязи MPD имеет унифицированную поддержку следующих типов связи: L2TP, PPTP и другие.
Данный метод подойдет даже новичкам в системном администрировании, для начала можно ознакомиться с информацией от разработчика скрипта IPsec VPN Server Auto Setup Scripts на ресурсе GitHub. В скрипте используются протоколы IPsec (Libreswan) и L2TP (xl2tpd). Данный скрипт проверен на работоспособность для Ubuntu 20.04 (Focal), Ubuntu 22.
apt update wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
Если вы хотите выполнить скрипт со своими учетными данными для доступа к VPN-серверу, то запустите команду и затем отредактируйте файл vpnsetup.sh в редакторе Nano. Вместо этих переменных впишите свои данные: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD.
wget https://get.vpnsetup.net -O vpn.sh nano -w vpn.sh
В автоматическом режиме скрипт создаст готовый L2TP VPN-server, а также сгенерирует учетные данные для доступа к серверу VPN, примерно так:
IPsec VPN server is now ready for use! Connect to your new VPN with these details: Server IP: xxx.xxx.xxx.xxx IPsec PSK: djsXsLpgShVENZY3WRS Username: vpnuser Password: 7Vjjuo5l6Wzke4x Write these down. Youll need them to connect! IKEv2 setup successful. Details for IKEv2 mode: VPN server address: xxx.xxx.xxx.xxx VPN client name: vpnclient Client configuration is available at: /root/vpnclient.p12 (for Windows & Linux) /root/vpnclient.sswan (for Android) /root/vpnclient.mobileconfig (for iOS & macOS)
Работы на сервере завершены, учетные данные для входа получены, осталось настроить VPN клиент на своем компьютере (или смартфоне) для получения доступа к нашему серверу ВПН.
Попытавшись подключиться скорей всего вы получите ошибку: "Не удалось установить связь по сети между компьютером и VPN-сервером, так как удаленный сервер не отвечает. Возможная причина: одно из сетевых устройств (таких как брандмауэры, NAT, маршрутизаторы и т.п.) между компьютером и удаленным сервером не настроено для разрешения VPN-подключений. Чтобы определить, какое устройство вызывает эту проблему, обратитесь к администратору или поставщику услуг."
Для ее решения, если VPN сервер L2TP/IPsec находится за NAT, то для корректного подключения внешних клиентов через NAT необходимо как на сервере, так и на клиенте Windows внести изменение в реестр, разрешающее UDP инкапсуляцию пакетов для L2TP и поддержку (NAT-T) для IPsec. И даже если сервер не находится за NAT все равно сделайте как указано ниже - это ж Windows:)
Возможные значения параметра AssumeUDPEncapsulationContextOnSendRule:
Осталось перезагрузить компьютер и убедиться, что VPN туннель успешно создается.