L2TP+IPSec VPN на Linux Debian

 В продолжение темы VPN серверов на Debian, попробуем поднять L2TP+IPSec VPN сервер.
Устанавливать будем на том же сервере, где сейчас установлен VPN PPTP.

1. Настройка Debian, обновим пакеты и настроим сеть 

Обновим систему и пакеты:
apt-get update && apt-get upgrade && apt-get dist-upgrade

Настроим сеть:
nano /etc/network/interfaces
nano /etc/resolv.conf

Применим настройки:
/etc/init.d/networking restart

2. Установим VPN сервер l2tp + ipsec

В качестве ipsec демона будем использовать openswan, а в качестве l2tp сервера стандартный xl2tpd:
apt-get install xl2tpd

Openswan ставим из исходников, поскольку нет кандидатов на установки из репозиториев.

Ставим необходимые зависимости:
apt-get install libgmp3-dev gawk flex bison make

Собираем openswan:
wget https://download.openswan.org/openswan/openswan-latest.tar.gz
tar -xvzf openswan-latest.tar.gz

cd openswan-2*
make programs
make install

Конфигурируем IPSec:
nano /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
 
Пробелы перед строками обязательны. SERVER.IP - это внешний IP нашего сервера.

Настроим авторизацию через PreShared Key:
nano /etc/ipsec.secrets  

Содержимое:
SERVER.IP %any: PSK "PreSharedKey"

---
SERVER.IP - это внешний IP нашего сервера
%any: - подключение с любого IP 
PSK - метод авторизации для L2TP. PSK - PreSharedKey, т.е вместо сертификата будем использовать секретное слово. 
"PreSharedKey" - само секретное слово
///

Скрипт для настройки сети:
nano /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
/etc/init.d/ipsec restart

Делаем скрипт исполняемым:
chmod +x /root/ipsec

Теперь необходимо добавить скрипт в автозагрузку. Однако В Debian 9 по-умолчанию не работает файл-автозапуска скриптов rc.local. Запустим его.

Создаем файл:
nano /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.

exit 0

Делаем его исполняемым:
chmod +x /etc/rc.local

Включаем автозапуск rc-local:
systemctl start rc-local
systemctl status rc-local

Добавляем содержимое нашего скрипта /root/ipsec в файл rc.local перед exit 0 и запускаем скрипт:
sh /root/ipsec

Настройка l2tp:
nano /etc/xl2tpd/xl2tpd.conf

Содержимое:
[global]
ipsec saref = yes

[lns default]
ip range = 192.168.1.202-192.168.1.220
local ip = 192.168.1.201
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

---
ip range = 192.168.1.202-192.168.1.220 - диапазон IP адресов выделяемых для VPN Подключений
local ip = 192.168.1.201 - адрес самого сервера VPN внутри локальной сети
refuse chap = yes - запретить Chap авторизацию
refuse pap = yes - запретить Pap авторизацию
///

Дополнительные настройки:
nano /etc/ppp/options.xl2tpd

Содержимое:
require-mschap-v2
ms-dns 192.168.1.1
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name VPN
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

---
require-mschap-v2 - требуем авторизацию через MSChap2
ms-dns 192.168.1.1 - это DNS сервер внутри локальной сети. Можно указать и глобальные DNS сервера (типа 8.8.8.8 или 77.88.8.8), но тогда внутренние ресурсы завязанные на DNS не будут видны клиентам подключенным через VPN.
name VPN - этот параметр будет присутствовать в настройках пользователеьских аккаунтов. 
///

Настройка пользователей:
nano /etc/ppp/chap-secrets

Формат содержимого:
vpnuser VPN password *

---
VPN - это и есть тот параметр из /etc/ppp/options.xl2tpd
///

Перезапускаем сервисы:
/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart

Проверяем работу
ipsec verify



В итоге мы имеем сервер, который может обслуживать VPN подключения, и по PPTP, и по  L2TP+IPSec. 

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

Разные версии PHP на разных сайтах на одном сервере

Microsoft Office. Окно "Давайте начнем"

Импорт - Экспорт пользователей Active Directory