Устанавливаем нужные пакеты

apt-get install x2ltpd strongswan

Конфиг xl2tpd.conf

[global]
    listen-addr = 188.40.109.187		; Указываем адрес который будет слушать xl2tpd
    port = 1701					; Порт для принятия соединений
[lns default]
    exclusive = yes				; Разрешать только одно одновременное подключение для клиента
    ip range = 172.16.250.50-172.16.250.70	; Диапазон адресов для клиента
    local ip = 172.16.250.1			; Адрес VPN-сервера к которому будет обращаться клиент
    length bit = yes				; Будет проставляться бит указывающий длинну полезных данных в пакете
    refuse pap = yes				; Отклонять PAP авторизацию
    refuse chap = yes				; Отклонять CHAP авторизацию
    require authentication = yes		; Требовать аутентификацию
    hostname = l2tp-vpn-srv			; Как VPN сервер будет представляться клиенту
    pppoptfile = /etc/ppp/options.l2tpd		; Файл настроек ppp

options.l2tpd

require-mschap-v2
refuse-mschap
asyncmap 0
auth
mtu 1200
mru 1200
hide-password
#debug
name l2tpd
nodeflate
lcp-echo-interval 30
lcp-echo-failure 4

Для авторизации пользователей VPN /etc/ppp/chap-secrets, второе поле должно соответствовать полю name из файлика с опциями Если * заменить на IP-адрес, то последний будет всегда выдаваться указанному логину

#login   server    password   ip-address
login    l2tpd    supersecret *

Конфиг ipsec.conf, x.x.x.x нужно заменить на реальный IP-адрес или на FQDN.

#Раздел общих настроек ipsec'а
config setup
    #Разрешаем только одно единовременное подключение каждому ID
    uniqueids = yes

#Раздел настроек по умолчанию, все остальные наследуют от него
conn %default
    #Как часто проверять жив ли пир (сообщение R_U_THERE, в IKEv2 пустое INFORMATIONAL сообщение)
    dpddelay=30s
    #Сколько времени должно пройти без ответа, что бы считать пира мертвым
    dpdtimeout=120s

conn L2TP
    #Действие по отношению к мертвому пиру
    #clear - закрыть все соединения с данным пиром и ничего не предпринимать
    dpdaction=clear
    #IP|FQDN сервера
    left=188.40.109.187
    #Сеть за сервером VPN, в [] опциональная часть,
    #с помощью нее можно ограничить IPSEC для порта и протокола
    leftsubnet=188.40.109.187/32[udp/1701]
    #Сеть за клиентом VPN, %dynamic для подключения с любого IP
    rightsubnet=%dynamic[udp/%any]
    #Авторизация сервера и клиента через PSK
    leftauth=psk
    rightauth=psk
    #Сколько будет жить IKE соединение до обновления ключей
    ikelifetime=3h
    #Время жизни одного шифрованного соединения
    keylife=1h
    #Набор алгоритмов шифрования
    ike=aes128-sha1-modp1536,aes128-sha1-modp1024,aes128-md5-modp1536,aes128-md5-modp1024,3des-sha1-modp1536,3des-sha1-modp1024,3des-md5-modp1536,3des-md5-modp1024
    esp=aes128-sha1-modp1536,aes128-sha1-modp1024,aes128-md5-modp1536,aes128-md5-modp1024,3des-sha1-modp1536,3des-sha1-modp1024,3des-md5-modp1536,3des-md5-modp1024
    #Действие при запуске IPSEC'a
    #add - поднять соединения и ждать подключения клиента
    auto=add
    #Протокол обмена ключами (ike - попробовать ikev2, затем ikev1)
    keyexchange=ike
    #Шифруем только содержимое пакетов
    type=transport

Конфиг ipsec.secrets

x.x.x.x %any : PSK "psklongsharedsecurekey"

Автоматическое выполнение скриптов при подключении и отключении vpn клиентов тут /etc/ppp/if-{up,down}.d/