Установка L2TP+IpSec VPN-сервера на Debian10 для подключения с IOS-устройств

Для работы использовался хостинг WebHost1.ru. Поделимся с вами промокодом для webhost1.ru на скидку 5%: fb7687-5.

У вас уже имеется сервер с установленной и обновленной ОС Debian 10, c набором нужных утилит (sudo, ssh, mc, net-tools и пр.)  

Установите следующие пакеты:

  • xl2tpd
  • libreswan (реализация IpSec для Debian)

apt install xl2tpd libreswan

1.jpg

После успешной установки пакетом приступим к редактированию файла  /etc/ipsec.conf

config setup
   nat_traversal=yes
   virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
   oe=off
   protostack=netkey
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=SERVER.IP
   leftprotoport=17/1701
   right=%any
   rightprotoport=17/%any

Отступы ВАЖНЫ! Ключевые слова "config" и "conn" начинаются с начала строки. Остальные строки - после восьми пробелов!

2064f84315e913b899f56656fee2cb99.jpg

Устанавливаем ключ шифрования для IpSec, для этого создаем файл /etc/ipsec.d/my.secrets с помощью команды

touch /etc/ipsec.d/my.secrets

и вставляем в него следующее содержимое:

SERVER.IP %any: PSK "YourSharedSecret

4bda5f94d72fb55a252d8c09993a9587.jpg

Далее нам необходимо создать скрипт для настройки сети. Создаем файл скрипта следующей командой

touch /root/ipsec


Делаем его исполняемым с помощью команды


chmod +x /root/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
systemctl restart ipsec

4.jpg

Теперь необходимо поместить наш скрипт в автозагрузку. Один из способов - это поместить его в rc.local
В новых версиях Debian по умолчанию файла rc.local нет. Чтобы активировать его необходимо сделать следующее:

Создадим файл сервиса 
/etc/systemd/system/rc-local.service
Наполним его следующим содержимым

[Unit]
Description=/etc/rc.local
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

Создадим файл /etc/rc.local , добавим в него следующее содержимое 

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/root/ipsec
exit 0

Сделаем файл /etc/rc.local исполняемым

chmod +x /etc/rc.local


Добавим вновь созданный сервис в автозапуск

systemctl enable rc-local


Запустим сервис

systemctl start rc-local


И проверим его статус

systemctl status rc-local

Возвращаемся к настройке VPN. Запускаем наш скрипт для автонастройки сети.


sh /root/ipsec

Также рекомендуем выполнить команду

ipsec verify

Она не должна содержать ошибок. Выглядеть вывод данной команды должен примерно так

5.jpg

Теперь переходим к настройке L2TP. Редактируем конфигурационный файл пакета xl2tpd - /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

6.jpg

Теперь переходим к настройке PPP-авторизации
Создадим файл /etc/ppp/options.xl2tpd с помощью команды
touch /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 VPN
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4


7.jpg

Тепель добавим пользователей, для этого вставим в файл /etc/ppp/chap-secrets следующее содержимое


test    VPN    password    *

8.jpg


Перегагрузим наши сервисы с помощью команд

systemctl restart xl2tpd
systemctl restart ipsec

Теперь настроим наше IOS-устройство, для этого перейдем в

Настройки-VPN-Добавить конфигурацию VPN

  • Тип – L2TP

  • Описание – на ваше усмотрение

  • Сервер – имя или адрес VPN-сервера

  • Учетная запись – имя пользователя VPN

  • Пароль – пароль пользователя VPN

  • Общий ключ – ключ, сгенерированный вами при настройках (файл /etc/ipsec.d/my.secrets)