Настраиваем L2TP+IPSEC PSK VPN Server в Debian 9

Main

Оценка: 97.12% - 9 Голосов

Общая

В статье рассказывается как поднять L2TP+IPSec PSK сервер на Debian 9 как в обычной среде, так и на VPS в среде визуализации OpenVZ. Позволяет подключаться с любого устройства при помощи стандартного клиента. Актуально в свете нынешних событий.

Содержание:

Установка необходимых пакетов

Настройка сервера

Возможные ошибки

Для настройки в сред OpenVZ важно учесть, что для работы необходимо, чтобы версия OpenVZ была не ниже Kernel 042stab084.8, а так же были активированы следующие kernel-модули: ppp_async, pppol2tp, xfrm4_mode_transport, xfrm4_mode_tunnel, xfrm_ipcomp, esp4. Вам изначально надо уточнить у VPS хостинга включены ли эти модули, и если нет, то узнать о возможности их включения. Так же необходима активация PPP для контейнера OpenVZ. Если все это соблюдено, то можно приступать к настройке.

 

Установка необходимых пакетов.

Установим следующие необходимые для работы пакеты:


apt install iptables-persistent xl2tpd 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.6.50
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
nhelpers=0
;
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
dpddelay=30
dpdtimeout=120
dpdaction=clear
ikelifetime=8h
keylife=1h
type=transport
left=ВНЕШНИЙ IP+АДРЕС СЕРВЕРА
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
forceencaps=yes

Укажем PSK ключ для IPSec:


nano /etc/ipsec.secrets


ВНЕШНИЙ IP+АДРЕС СЕРВЕРА %any: PSK "PSK-КЛЮЧ"

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


nano /etc/xl2tpd/xl2tpd.conf


[global]
listen-addr = ВНЕШНИЙ IP+АДРЕС СЕРВЕРА
port = 1701
ipsec saref = no
debug tunnel = yes
debug avp = yes
debug packet = yes
debug network = yes
debug state = yes
auth file = /etc/ppp/chap-secrets
;
[lns default]
ip range = 172.16.254.1-172.16.254.253 ; Диапазон IP-адресов, которые выдаются подключающимся клиентам
local ip = 172.16.254.254 ; Локальный IP-адрес сервера для VPN-клиентов
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
name = VPN
assign ip = yes

Настраиваем PPP:


nano /etc/ppp/options.xl2tpd


require-mschap-v2
refuse-mschap
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
idle 1800
mtu 1200
mru 1200
lock
hide-password
local
debug
name VPN
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

Создаем пользователя для авторизации:


nano /etc/ppp/chap-secrets


# Secrets for authentication using CHAP
# client server secret IP addresses
ИМЯ-ПОЛЬЗОВАТЕЛЯ VPN ПАРОЛЬ *

Настраиваем файервол:


iptables -t nat -A POSTROUTING -o venet0:0 -s 172.16.254.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o venet0 -s 172.16.254.0/24 -j MASQUERADE
iptables -A FORWARD -s 172.16.254.0/24 -j ACCEPT
iptables -A FORWARD -d 172.16.254.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -s 172.16.254.0/24 -j SNAT --to-source ВНЕШНИЙ IP-АДРЕС СЕРВЕРА
iptables-save

Отключаем ICMP send_redirects и ICMP accept_redirects:

Узнать имена имеющихся интерфейсов поможет команда ifconfig


nano /etc/sysctl.conf


net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.ИМЯ_СЕТЕВОГО_ИНТЕРФЕЙСА.send_redirects = 0
net.ipv4.conf.ИМЯ_СЕТЕВОГО_ИНТЕРФЕЙСА.accept_redirects = 0

 

Перезапускаем службы:


/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart

Проверяем правильность настройки IPSec командой:


ipsec verify

View the embedded image gallery online at:
http://firestudio.org/l2tpipsec#sigProIdc8f794fdf5

Пробуем установить соединение.

 

Возможные ошибки.

Выявить ошибки в работе сервера поможет команда:


grep pluto /var/log/auth.log

Ошибка 809 Windows клиента:

При попытке подключения стандартным клиентом Windows, не важно какой версии, может появляться ошибка 809. Связано это с тем, что по умолчанию клиент не умеет работать с сервером за NAT. Для исправления ошибки откройте на Windows машине regedit и найдите ветку:

Для Windows XP


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec

Для Windows 7, 8.1, 10


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent

Создайте параметр DWORD (32 бита) и укажите ему имя:


AssumeUDPEncapsulationContextOnSendRule

В качестве значения поставьте 2.

Возможные значение параметра AssumeUDPEncapsulationContextOnSendRule:
0 – (значение по-умолчанию), предполагается, что сервер подключен к интернету без NAT;
1 – сервер находится за NAT;
2 — и сервер и клиент находятся за NAT.

Перезагрузите ПК.

Добавить комментарий


Logo