0. Устанавливаем пакеты для работы ipsec:
apt install strongswan
1. Проверяем:
/etc/ipsec.conf
---------------
conn rw-base
fragmentation=yes
dpdaction=clear
dpdtimeout=90s
dpddelay=30s
conn l2tp-vpn
also=rw-base
ike=aes128-sha256-modp3072
esp=aes128-sha256-modp3072
leftsubnet=%dynamic[/1701]
rightsubnet=%dynamic
mark=%unique
leftauth=psk
rightauth=psk
type=transport
auto=add
---------------
2. Генерируем общий ключ:
openssl rand -base64 18
3. Общий ключ следует указать в файле /etc/ipsec.secrets, добавив в него следующую строку:
%any %any : PSK "mySharedKey"
Где mySharedKey - общий ключ, так как от него зависит безопасность вашей VPN-сети мы рекомендуем использовать
в качестве ключа случайно сгенерированную строку из букв, цифр и спецсимволов.
4. После внесения указанных настроек перезапустим службу:
!!! Имя демона Ubuntu называется strongswan-starter
systemctl restart strongswan
5. Устанавливаем пакеты для работы l2tp
apt install xl2tpd
6. Редактируем /etc/xl2tpd/xl2tpd.conf
# auth file указывает на файл с данными для аутентификации
# pppoptfile - набор опций для PPP-соединения, которое используется внутри L2TP-туннеля
# name - имя сервера, которое будет использоваться для поиска данных аутентификации в файле chap-secrets
# local ip и ip range отвечают за локальный адрес сервера в VPN-сети и диапазон адресов для выдачи удаленным клиентам.
# Здесь можно использовать два подхода: выдавать клиентам адреса из диапазона локальной сети офиса и включить ProxyARP
# в этом случае настраивать маршрутизацию на клиентах не требуется, они будут как-бы включены в общую сеть офиса на канальном уровне (L2)
# либо выдавать адреса из непересекающегося диапазона и использовать маршрутизацию.
---------------------------------------
[global]
port = 1701
auth file = /etc/ppp/chap-secrets
access control = no
ipsec saref = yes
force userspace = yes
[lns default]
exclusive = no
ip range = 10.2.2.100-10.2.2.199
hidden bit = no
local ip = 10.2.2.1
length bit = yes
require authentication = yes
name = l2tp-vpn
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
-----------------------------------------
7. Настройка PPP
cd /etc/ppp - переходим в каталог
cp options options.xl2tpd - копируем файл опций
8. Редактируем /etc/ppp/options.xl2tpd
# Если вы будете использовать ProxyARP то дополнительно раскомментируйте опцию: proxyarp
# Опции перечислены в порядке их следования, нужно раскомментировать их и указать нужное значение, если опция отсутствует, то ее следует добавить в конце файла.
# Также для Windows-клиентов можно передать настройку DNS-серверов, для этого добавьте опции: ms-dns 192.168.1.1
--------------------------------------
asyncmap 0
auth
crtscts
lock
hide-password
modem
mtu 1460
lcp-echo-interval 30
lcp-echo-failure 4
noipx
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
multilink
mppe-stateful
--------------------------------------
8. Для применения настроек перезапускаем xl2tp
systemctl restart xl2tpd
9. Добавляем пользователей
# указываем логин
# имя службы, оно должно совпадать с тем, которое мы указали в опции name в xl2tpd.conf
# пароль
# IP-адрес клиента, символ * обозначает что можно присвоить любой адрес из выбранного диапазона
vim /etc/ppp/chap-secrets
-------------------------
ivanov l2tp-vpn Pa$$word_1 *
petrov l2tp-vpn Pa$$word_1 10.2.2.99
-------------------------
10. настраиваем firewall
Для доступа к L2TP-серверу следует разрешить в брандмауэре входящие подключения к портам
500 UDP
4500 UDP
!!! подключение к 1701 UDP, вопреки распространенному заблуждению, разрешать не следует
Диагностика:
ipsec statusall
ip xfrm state
ip xfrm policy