L2tp + ipsec server Ubuntu 24

Установка StrongSwan

apt-get install strongswan

наш тип VPN будет использовать протокол L2TP/IPsec с общим ключом длинной не менее 30 символов

Генерируем общий ключ

openssl rand -base64 30

Где 30 - это длина сгенерированной строки, запомните её и храните в надежном месте.

nano /etc/ipsec.conf

Удаляем все в текущем файле, и после вставляем следующие строки конфигурации:

config setup

 nat_traversal=yes

 virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16

 oe=off

 protostack=netkey

# config setup – в этом разделе прописана глобальная конфигурации для IPSec,

#-которая применяется ко всем соединениям

# nat_traversal – активируем NAT

# virtual_private  - это диапазон IP-адресов которые допускаются в качестве

#-подсетей для удалённых VPN-клиентов.

# oe – выключаем шифрование

# protostack – выбираем стек работы протокола, варианты auto, klips, netkey ,mast

conn L2TP-PSK-NAT

 rightsubnet=vhost:%priv

 also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT

 authby=secret

 pfs=no

 auto=add

 keyingtries=3

 rekey=no

 ikelifetime=8h

 keylife=1h

 type=transport

 left= VASH_IP_SERVERA

 leftprotoport=17/1701

 right=%any

 rightprotoport=17/%any

Не забудьте сменить «VASH_IP_SERVERA» – на реальный IP вашего сервера.

nano /etc/ipsec.secrets

Добавляем, где «VASH_KLUCH» - это сгенерированный ключ на предыдущем этапе, где «VASH_IP_SERVERA» – это реальный IP сервера, в следующую строку:

VASH_IP_SERVERA %any : PSK "VASH_KLUCH"

Настраиваем фаервол сервера на передачу IP-пакетов

nano /usr/local/bin/ipsec

iptables --table nat --append POSTROUTING --jump MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

for each in /proc/sys/net/ipv4/conf/*

do

echo 0 > $each/accept_redirects

echo 0 > $each/send_redirects

done

/etc/init.d/ipsec restart

Включаем rc.local для исполнения скриптов

nano  /etc/systemd/system/rc-local.service

[Unit]

 Description=/etc/rc.local Compatibility

 ConditionPathExists=/etc/rc.local

[Service]

 Type=forking

 ExecStart=/etc/rc.local start

 TimeoutSec=0

 StandardOutput=tty

 RemainAfterExit=yes

 SysVStartPriority=99

[Install]

 WantedBy=multi-user.target

nano /etc/rc.local

#!/bin/sh -ee

/usr/local/bin/ipsec

exit 0

chmod +x /etc/rc.local
chmod +x /usr/local/bin/ipsec
systemctl enable rc-local

Установка xl2tpd

Пакет xl2tpd необходим для настройки функций L2TP-сервера

apt-get install xl2tpd

nano /etc/ppp/options.xl2tpd

require-mschap-v2

ms-dns 8.8.8.8

ms-dns 8.8.4.4

asyncmap 0

auth

crtscts

lock

hide-password

modem

debug

name MOYVPNLOCAL

proxyarp

lcp-echo-interval 30

lcp-echo-failure 4

Обратите внимание на параметр name, это название вашего VPN сервера, в нашем случае это MOYVPNLOCAL

Создаем пароли и логины для пользователей VPN

nano /etc/ppp/chap-secrets

Vpnuser1 MOYVPNLOCAL password *

Настраиваем L2TP

nano /etc/xl2tpd/xl2tpd.conf

[global]

 ipsec saref = yes

[lns default]

 ip range = 10.1.2.2-10.1.2.255

 local ip = 10.1.2.1

 refuse chap = yes

 refuse pap = yes

 require authentication = yes

 ppp debug = yes

 pppoptfile = /etc/ppp/options.xl2tpd

 length bit = yes

systemctl enable ipsec

systemctl restart ipsec

systemctl enable xl2tpd

systemctl restart xl2tpd

systemctl enable strongswan-starter

systemctl restart strongswan-starter

 

Исходник инвормации тут