L2TP/IPsec PSK на CentOS 7

Для начала работы устанавливаем epel репозиторий

yum install epel-release

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

yum install xl2tpd libreswan lsof

Сохраняем стандартный конфиг xl2tpd (на всякий случай)

cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.backupТ

Теперь настроим адреса которые будут раздаваться клиентам сети.
Редактируем /etc/xl2tpd/xl2tpd.conf и меняем строчки

ip range = 10.0.0.50-200
local ip = 10.0.0.1

ip range — это адреса которые будут раздаваться клиентам сети;
local ip — адрес текущего сервера в приватной сети

Теперь перемещаем стандартный конфиг и на место его создаём новый

mv /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.backup

Новый создаём с такими параметрами

ipcp-accept-local
ipcp-accept-remote
ms-dns 1.1.1.1
ms-dns 1.0.0.1
auth
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
proxyarp
connect-delay 5000
name xl2tpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
persist
logfile /var/log/xl2tpd.log

Настроим логи xl2tpd. Создаём: /etc/logrotate.d/xl2tpd

/var/log/xl2tpd.log {
missingok
compress
notifempty
weekly
rotate 2
create 0600 root root
}

Теперь настроим IPSec.

Создаём файл /etc/ipsec.d/l2tp-ipsec.conf со следующим содержимым

conn L2TP-PSK-NAT
    rightsubnet=0.0.0.0/0
    dpddelay=10
    dpdtimeout=20
    dpdaction=clear
    forceencaps=yes
    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=1.1.1.1
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

1.1.1.1 замените на свой внешний IP адрес сервера

Добавляем логины и пароли в /etc/ppp/chap-secrets

"user1" "xl2tpd" "pass1" *
"user2" "xl2tpd" "pass2" *

Ставим ключ PSK в /etc/ipsec.d/default.secrets

: PSK "SecretKey"

Где SecretKey ваш общий секретный ключ PSK

Добавляем правила фаервола

firewall-cmd --permanent --add-service=ipsec
firewall-cmd --permanent --add-port=1701/udp
firewall-cmd --permanent --add-port=4500/udp
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

И последнее, настроим sysctl. Создаём файл /etc/sysctl.d/60-sysctl_ipsec.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.eth1.send_redirects = 0
net.ipv4.conf.eth2.accept_redirects = 0
net.ipv4.conf.eth2.rp_filter = 0
net.ipv4.conf.eth2.send_redirects = 0
net.ipv4.conf.ip_vti0.accept_redirects = 0
net.ipv4.conf.ip_vti0.rp_filter = 0
net.ipv4.conf.ip_vti0.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.ppp0.accept_redirects = 0
net.ipv4.conf.ppp0.rp_filter = 0
net.ipv4.conf.ppp0.send_redirects = 0

Всё готово, осталось только перезапустить сеть, добавить в автозагрузку ipsec и xl2tpd и запустить их

systemctl restart network
systemctl enable ipsec
systemctl enable xl2tpd
systemctl start ipsec
systemctl start xl2tpd