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

Main

Оценка: 96.91% - 10 Голосов

Общая

В статье рассказывается как поднять L2TP+IPSec PSK сервер на Debian 10 для доступа работников к сети организации.

Содержание:

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

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

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

Модули ядра, необходимые для работы: ppp_async, pppol2tp, xfrm4_mode_transport, xfrm4_mode_tunnel, xfrm_ipcomp, esp4.

 

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

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


apt install iptables-persistent xl2tpd libgmp3-dev gawk flex bison make libc6-dev devscripts libssl-dev

Установка 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:
https://itcrowd.top/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.

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

Ошибка 789 в Windows 7

Добавить в реестр следующие строки и перезагрузиться:


REGEDIT4
[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesRasmanParameters]
"ProhibitIpSec"=dword:00000001
"AllowL2TPWeakCrypto"=dword:00000001

 

Ошибка 689 во всех версиях

Так-же могут наблюдаться ошибка 689, в Windows 10 может выскакивать ошибка, что сервер не отвечает. Если с файрволом все хорошо то попробуйте следующее

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v ProhibitIpSec /t REG_DWORD /d 0 /f

 

  • Просмотров: 29107
Комментарии   
0 #1 Anton 26.02.2019 22:57
root# /etc/init.d/ipsec restart
failed to start openswan IKE daemon - the following error occured:
can not load config '/etc/ipsec.conf': /etc/ipsec.conf:2: syntax error, unexpected BOOLWORD, expecting $end [nat_traversal]

Debian 9
Цитировать
0 #2 admin 26.02.2019 23:25
Цитирую Anton:
root# /etc/init.d/ipsec restart
failed to start openswan IKE daemon - the following error occured:
can not load config '/etc/ipsec.conf': /etc/ipsec.conf:2: syntax error, unexpected BOOLWORD, expecting $end [nat_traversal]

Debian 9

У вас синтаксическая ошибка во 2 строке ipsec.conf
Цитировать
0 #3 Alex_Prince 11.03.2019 14:40
В параметрах присутствует "ВНЕШНИЙ IP+/-АДРЕС СЕРВЕРА". У меня сервер за NAT, DMZ, серый IP который меняется едва ли не пару раз за день, есть адрес DDNS. Можно-ли использовать в этих параметрах не IP, а ДДНС адрес?
Цитировать
0 #4 admin 11.03.2019 15:32
Цитирую Alex_Prince:
В параметрах присутствует "ВНЕШНИЙ IP+/-АДРЕС СЕРВЕРА". У меня сервер за NAT, DMZ, серый IP который меняется едва ли не пару раз за день, есть адрес DDNS. Можно-ли использовать в этих параметрах не IP, а ДДНС адрес?

Согласно документации https://wiki.strongswan.org/projects/strongswan/wiki/Connsection можете. Так же для правильной работы с DDNS может понадобится добавить параметр left|rightallowany = yes
Цитировать
0 #5 dmimen 29.02.2020 01:47
Цитирую Anton:
root# /etc/init.d/ipsec restart
failed to start openswan IKE daemon - the following error occured:
can not load config '/etc/ipsec.conf': /etc/ipsec.conf:2: syntax error, unexpected BOOLWORD, expecting $end [nat_traversal]

Debian 9


там всё правильно. Просто для ipsec очень важен синтаксис. Перед второй строчкой и последующими(не всеми) нужен пробел.
Цитировать
0 #6 Дмитрий 12.03.2020 01:14
Цитирую dmimen:
Цитирую Anton:
root# /etc/init.d/ipsec restart
failed to start openswan IKE daemon - the following error occured:
can not load config '/etc/ipsec.conf': /etc/ipsec.conf:2: syntax error, unexpected BOOLWORD, expecting $end [nat_traversal]

Debian 9


там всё правильно. Просто для ipsec очень важен синтаксис. Перед второй строчкой и последующими(не всеми) нужен пробел.

просто тот кто перепечатывал эту статью на этот сайт из кучи других мест, даже не заморочился на эту тему
Цитировать
0 #7 Лана 28.02.2023 08:37
А не знаете ли вы, как наладить ядерную поддержку xl2tpd/ppp на очень старом ядре (2.6.31)? Спасибо!
Цитировать
0 #8 admin 16.06.2023 08:42
Цитирую Лана:
А не знаете ли вы, как наладить ядерную поддержку xl2tpd/ppp на очень старом ядре (2.6.31)? Спасибо!

Не задавался таким вопросом
Цитировать
Добавить комментарий