Развёртывание L2TP-сервера с IPSec / PSK

()

Некоторое время назад был рассмотрен простой OpenVPN-сервер, который позволял обеспечить защиту трафика при использовании небезопасных соединений с интернет. При всей простоте у OpenVPN есть один недостаток: необходимость установки дополнительного ПО на клиентские машины.

Для большинства популярных устройств (на Windows, Android и iOS) от этого недостатка свободен протокол L2TP. По умолчанию L2TP не использует шифрование, однако его можно использовать в связке с IPSec, инициализируемым с помощью PSK (Pre-shared Key - дополнительный ключ). Далее будет показано как можно быстро настроить IPSec L2TP-сервер с PSK на Ubuntu.

Для начала берём недорогую VPS с Ubuntu 16.04 и сразу устанавливаем на неё неободимые пакеты. Нам понадобятся:

  • strongswan: для управления IPSec;
  • xl2tpd: демон, который будет обслуживать L2TP-соединения;
  • iptables-persistent: для управления правилами пакетного фильтра (файрволла);
  • denyhosts: для защиты SSH от перебора пароля;

Устанавливаем:

apt-get install strongswan xl2tpd iptables-persistent denyhosts

Следующим шагом придумываем ключ для шифрования IPSec, например "Sup3rP4ss", и приведём файл "/etc/ipsec.secrets" к виду:

%any %any : PSK "Sup3rP4ss"

Далее открываем файл "/etc/ipsec.conf", удаляем всё его содержимое и заносим в него следующее:

config setup
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
        nat_traversal=yes
        protostack=netkey

conn l2tpvpn
        type=transport
        authby=secret
        pfs=no
        rekey=no
        keyingtries=1
        left=%any
        leftprotoport=udp/l2tp
        leftid=@l2tpvpnserver
        right=%any
        rightprotoport=udp/%any
        auto=add

На этом настройка IPSec закончена. Остаётся перезапустить обслуживающий IPSec демон strongswan:

service strongswan restart

Приступаем к настройке xl2tpd. Основная часть его настроек находится в файле "/etc/xl2tpd/xl2tpd.conf", который нужно привести к виду:

[global]
port = 1701
access control = no
ipsec saref = yes
force userspace = yes

; Файл с логинами и паролями
auth file = /etc/ppp/chap-secrets

[lns default]
; Диапазон адресов, динамически выдаваемых клиентам
; Мы ограничимся подсетью 172.28.253.64/26
; Первую её часть оставим под статически привязанные к логинам адреса
; А вторая - динамический пул
ip range = 172.28.253.96-172.28.253.126

; IP-адрес на стороне сервера
local ip = 172.28.253.65

; Это имя используется в качестве ipparam при поиске логинов и паролей в auth file
name = l2tpserver

; Файл с дополнительными опциями для ppp
pppoptfile = /etc/ppp/options.xl2tpd

flow bit = yes
exclusive = no
hidden bit = no
length bit = yes
require authentication = yes
require chap = yes
refuse pap = yes

Следующим на очереди у нас идёт файл "/etc/ppp/options.xl2tpd" В нём описываются дополнительные опции ppp. В нашем случае он будет иметь вид:

noccp
auth
crtscts
mtu 1410
mru 1410
nodefaultroute
lock
noproxyarp
silent
modem
asyncmap 0
hide-password
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4

На этом настройка xl2tpd заканчивается. Перезапускаем процесс:

service xl2tpd restart

Приступаем к настройке пакетного фильтра (файрволла). Для удобства создадим скрипт "firewall.sh", в котором опишем все необходимые нам правила:

#!/bin/bash

# Внешний интерфейс сервера
IF_EXT="ens3"

# Внутренние интерфейсы (обслуживающие ВПН-клиентов)
IF_INT="ppp+"

# Сеть, адреса из которой будут получать ВПН-клиенты
NET_INT="172.28.253.64/26"

# Сбрасываем все правила
iptables -F
iptables -F -t nat

# Устанавливаем политики по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Разрешаем весь трафик на петлевом интерфейсе
iptables -A INPUT -i lo -j ACCEPT

# Разрешаем всё для ВПН-клиентов
iptables -A INPUT -i ${IF_INT} -s ${NET_INT} -j ACCEPT


# Разрешаем входящие соединения к L2TP
# Но только с шифрованием!
iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT

# Разрешаем IPSec
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -p ah -j ACCEPT
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

# Разрешаем доступ к серверу по SSH
iptables -A INPUT -m tcp -p tcp --dport 22 -j ACCEPT


# Разрешаем входящие ответы на исходящие соединения
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# NAT для локальной сети (ВПН-клиентов)
iptables -t nat -A POSTROUTING -s ${NET_INT} -j MASQUERADE -o ${IF_EXT}
iptables -A FORWARD -i ${IF_INT} -o ${IF_EXT} -s ${NET_INT} -j ACCEPT
iptables -A FORWARD -i ${IF_EXT} -o ${IF_INT} -d ${NET_INT} -m state --state RELATED,ESTABLISHED -j ACCEPT

Применяем правила и сохраняем их для автоматической загрузки при старте системы:

bash firewall.sh
netfilter-persistent save

Ещё надо включить саму возможность пересылки пакетов между интерфейсами. Делается это в файле "/etc/sysctl.conf" добавлением (или раскомментированием) строки:

net.ipv4.ip_forward=1

Чтобы эти изменения вступили в силу до перезагрузки нужно выполнить:

sysctl -p /etc/sysctl.conf

Остаётся обезопасить SSH от попыток перебора пароля и можно заводить пользователей. За это отвечает сервис "denyhosts", который блокирует IP-адреса, с которых идёт перебор паролей. В целом конфигурация по умолчанию (находится в файле "/etc/denyhosts.conf") нас вполне устроит. Единственный момент который стоит поправить: по умолчанию адреса блокируются навсегда. Лучше всё-таки их удалять из чёрного списка через несколько дней после блокировки:

PURGE_DENY = 3d

И перезапускаем сервис:

service denyhosts restart

Теперь можно заводить пользователей нашего VPN-сервера. Для этого нужно открыть в текстовом редакторе файл "/etc/ppp/chap-secrets" и добавлять примерно такие строки:

# "логин" имя_сервиса(ipparam) "пароль" "IP-клиента(опционально)"
# Пользователь с постоянным IP-адресом:
"user1"    l2tpserver    "D4dLMy44gc"    "172.28.253.67"
# Пользователь, получающий динамический адрес
"user2"    l2tpserver    "HPg0dBZRxv"

На этом настройка сервера заканчивается и можно переходить к настройке клиентских устройств. На Android 7.0 нужно зайти в настройки VPN, выбрать пункт "добавить" и добавить соединение, указав тип соединения "L2TP/IPSec PSK", в качестве сервера указать IP-адрес нашей VPS, в качестве общего ключа IPsec - выбранную ранее ключевую фразу. Имя соединения - произвольное. Создав соединение сразу можно подключаться (потребуется ввести логин и пароль).

L2TP IPSec / PSK соединение на Android

Следует помнить что на Android для использования штатного (встроенного в систему) VPN-клиента необходимо предварительно настроить блокировку экрана с помощью пароля, пин-кода, графического ключ, отпечатка пальца или какого-ещё доступного на вашем устройстве способа.

На Windows 10 настройки находятся в панели параметров: "Настройки сети", "VPN". Поля заполняются полностью аналогично Android. После чего так же можно сразу выполнять подключение.

L2TP IPSec / PSK соединение на Windows 10

На этом всё. Приятной работы!

Ключевые слова: vpn, l2tp, ipsec, psk, xl2tpd, strongswan, iptables-persistent, android, windows.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

Ladm 2018-05-18 12:30:05 (#)

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

MooSE 2018-05-18 15:50:13 (#)

Осталось найти время проверить правильность написанного выше.
Какая часть написанного тебя смущает?:)

Anonymous 2018-06-18 22:22:48 (#)

Сделал все по инструкции, к сожелению не работает(

Anonymous 2018-06-18 22:25:43 (#)

Попробовал вместо скрипта взять часть другой инструкции с iptables - заработало, но совершенно не обращает внимание на общий пароль, т.е. можно любой писать((

MooSE 2018-06-18 23:32:29 (#)

Попробовал вместо скрипта взять часть другой инструкции с iptables - заработало, но совершенно не обращает внимание на общий пароль, т.е. можно любой писать((
Это означает что у вас не работает IPSec. Т.е. L2TP работает, но без шифрования. Видно что-то у вас всё-таки настроено не так.

Собственно скорее всего у вас не "взлетел" strongswan. Потому и пришлось в iptables разрешать весь udp-трафик по порту 1701, а не только тот что с шифрованием. Так дело было?:)

Смотрите логи strongswan для начала.

Anonymous 2018-06-18 23:57:44 (#)

service strongswan restart корректно перезапустился, я так понимаю значит он работает. А где логи strongswan смотреть, в /var/log/ нет ничего похожего? и я не могу у вас на сайте авторизоваться "Notice: Undefined index: result in /home/moose/www/ylsoftware.com/enter.inc on line 25"

MooSE 2018-06-19 13:26:15 (#)

service strongswan restart корректно перезапустился, я так понимаю значит он работает. А где логи strongswan смотреть
Попробуйте:
journalctl -xe -u strongswan.service


не могу у вас на сайте авторизоваться "Notice: Undefined index: result in /home/moose/www/ylsoftware.com/enter.inc on line 25"
Каюсь. Косяк в коде. Исправил. Если сейчас не получится авторизоваться то напишите на moose@ylsoftware.com. Будем разбираться детальнее.

Anonymous 2018-06-26 08:37:46 (#)

root@vps46396:~# journalctl -xe -u strongswan.service
Jun 22 03:45:26 vps46396 ipsec_starter[3295]: ### 4 parsing errors (0 fatal) ###
Jun 22 03:45:26 vps46396 systemd[1]: Started strongSwan IPsec services.
-- Subject: Unit strongswan.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit strongswan.service has finished starting up.
--
-- The start-up result is done.
Jun 22 03:45:26 vps46396 charon[3310]: 00[DMN] Starting IKE charon daemon (stron
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading ca certificates from '/et
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading aa certificates from '/et
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading ocsp signer certificates
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading attribute certificates fr
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading crls from '/etc/ipsec.d/c
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading secrets from '/etc/ipsec.
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loaded IKE secret for %any %any
Jun 22 03:45:26 vps46396 charon[3310]: 00[LIB] loaded plugins: charon test-vecto
Jun 22 03:45:26 vps46396 charon[3310]: 00[LIB] dropped capabilities, running as
Jun 22 03:45:26 vps46396 charon[3310]: 00[JOB] spawning 16 worker threads
Jun 22 03:45:26 vps46396 ipsec_starter[3309]: charon (3310) started after 20 ms
Jun 22 03:45:26 vps46396 charon[3310]: 07[CFG] received stroke: add connection '
Jun 22 03:45:26 vps46396 charon[3310]: 07[CFG] added configuration 'l2tpvpn'
lines 80-102/102 (END)
Jun 22 03:45:26 vps46396 ipsec_starter[3295]: ### 4 parsing errors (0 fatal) ###
Jun 22 03:45:26 vps46396 systemd[1]: Started strongSwan IPsec services.
-- Subject: Unit strongswan.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit strongswan.service has finished starting up.
--
-- The start-up result is done.
Jun 22 03:45:26 vps46396 charon[3310]: 00[DMN] Starting IKE charon daemon (strongSwan 5.3.5, Linux 2.6.32-042stab127.2, x86_64)
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading ca certificates from '/etc/ipsec.d/cacerts'
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading aa certificates from '/etc/ipsec.d/aacerts'
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading ocsp signer certificates from '/etc/ipsec.d/ocspcerts'
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading attribute certificates from '/etc/ipsec.d/acerts'
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading crls from '/etc/ipsec.d/crls'
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loading secrets from '/etc/ipsec.secrets'
Jun 22 03:45:26 vps46396 charon[3310]: 00[CFG] loaded IKE secret for %any %any
Jun 22 03:45:26 vps46396 charon[3310]: 00[LIB] loaded plugins: charon test-vectors aes rc2 sha1 sha2 md4 md5 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc h
Jun 22 03:45:26 vps46396 charon[3310]: 00[LIB] dropped capabilities, running as uid 0, gid 0
Jun 22 03:45:26 vps46396 charon[3310]: 00[JOB] spawning 16 worker threads
Jun 22 03:45:26 vps46396 ipsec_starter[3309]: charon (3310) started after 20 ms
Jun 22 03:45:26 vps46396 charon[3310]: 07[CFG] received stroke: add connection 'l2tpvpn'
Jun 22 03:45:26 vps46396 charon[3310]: 07[CFG] added configuration 'l2tpvpn'

Anonymous 2018-07-12 22:52:31 (#)

авторизоваться так и не могу, на почту написал давно уже. Лог скинул - тоже полчек(

MooSE 2018-07-14 23:28:36 (#)

По авторизации: починил. При обновлении MySQL произошли изменения, из-за которых один запрос некорректно отрабатывал.

По срокам ответа: этот проект моё хобби, а не работа. Я занимаюсь им в личное время, которого, к сожалению, не так уж много. Быстрой реакции стоит искать у тех, кому за это платят:)

По логу: с виду всё нормально. Покажите вывод:
sudo netstat -lpntu|grep -E ":(4500|1701|500)"


А так же:
iptables-save -t filter

Anonymous 2018-08-22 13:08:33 (#)

Вот в этом снипплете опечатка, из-за которой не работает:
# "логин" имя_сервиса(ipparam) "пароль" "IP-клиента(опционально)"
# Пользователь с постоянным IP-адресом:
"user1"    l2tpserver    "D4dLMy44gc"    "172.28.253.67"
# Пользователь, получающий динамический адрес
"user2"    l2tpserver    "HPg0dBZRxv"


Если IP прописан — всё ок, если нет — то ой.
Там последняя строчка должна выглядеть вот так (для выдачи динамического адреса):
"user2"    l2tpserver    "HPg0dBZRxv"    *

сервис онлайн-займов GreenMoney.ru 2018-09-06 07:48:11 (#)

Доброго времени суток. Сделал все по мануалу, vpn цепляется, сервер пингуется, но траффик не идет в подсеть сервера. Не подскажете в какую сторону копать для нуба?

MooSE 2018-09-06 11:23:51 (#)

Что значит "трафик не идёт в подсеть сервера"? А куда идёт? Как проверяли? Как выглядит таблица маршрутизации на клиенте?

Timofey 2018-10-22 18:19:28 (#)

У меня похожая ситуация, и то после добавления параметра lac = 0.0.0.0-255.255.255.255 в /etc/xl2tpd/xl2tpd.conf (Была ошибка Denied connection to unauthorized peer... )
Но дальше никуда не пускает.

Вроде исходящие соединения для подсети vpn открыты в iptables:
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.28.253.64/26 anywhere
root@VM:~# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- 112.85.42.233 anywhere
DROP all -- 116.31.116.8 anywhere
DROP all -- 5.188.10.76 anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- 172.28.253.64/26 anywhere
ACCEPT udp -- anywhere anywhere policy match dir in pol ipsec udp dpt:l2f
ACCEPT esp -- anywhere anywhere
ACCEPT ah -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp dpt:isakmp
ACCEPT udp -- anywhere anywhere udp dpt:ipsec-nat-t
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 172.28.253.64/26 anywhere
ACCEPT all -- anywhere 172.28.253.64/26 state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@VM:~#

Пакеты на dns сервер идут.
U 172.28.253.96:55159 -> 8.8.8.8:53 #32
.............yandex.ru.....

U 172.28.253.96:55159 -> 8.8.8.8:53 #33
.............yandex.ru.....

U 172.28.253.96:55159 -> 8.8.4.4:53 #34
.............yandex.ru.....


Как дальше дебажить это дело?

MooSE 2018-10-22 22:44:38 (#)

Как дальше дебажить это дело?

sysctl net.ipv4.ip_forward
iptables -L -n -t nat

_igor_ 2018-11-15 09:19:32 (#)

Добрый день. Большое спасибо за мануал по настройке. Единственное внятное руководство, что нашел.
Всё почти заработало как надо. Но есть несколько вопросов. Я развернул VPN сервер на VPS(Ubuntu).
- При этих настройках 2 разных устройства подключенных к серверу должны видеть друг друга? Я развернул домашний postgres для опытов. Хотелось бы иметь к нему доступ отовсюду.
- На сервере стоит ajenti. что прописать в настройки фаирвола, чтоб к ней можно было подключиться только из VPN?
Ну и самое проблемное. После настройки 2 ноута под win10 подключились без проблем сразу, а вот два Android смартфона, Ubuntu desctop 18.04 и mikrotik наотрез отказываются подключаться. В чём может быть проблема?
p.s. Все устройства были подрублены к одному wifi

Ввё на сервере
tail -f /var/log/auth.log
Это подключение win10. Подключилось и я спокойно отключил(ip сервера в сообщении левый)
Nov 18 13:53:05 vmobilriwlb charon: 08[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:53:06 vmobilriwlb charon: 10[IKE] IKE_SA l2tpvpn[12] established between 71.16.29.126[l2tpserver]...109.248.61.152[192.168.0.108]
Nov 18 13:53:06 vmobilriwlb charon: 12[IKE] CHILD_SA l2tpvpn{2} established with SPIs c4ade4fa_i 11121fc0_o and TS 71.16.29.126/32[udp/l2f] === 109.248.61.152/32[udp/l2f]
Nov 18 13:53:14 vmobilriwlb charon: 11[IKE] closing CHILD_SA l2tpvpn{2} with SPIs c4ade4fa_i (13900 bytes) 11121fc0_o (38993 bytes) and TS 71.16.29.126/32[udp/l2f] === 109.248.61.152/32[udp/l2f]
Nov 18 13:53:14 vmobilriwlb charon: 10[IKE] deleting IKE_SA l2tpvpn[12] between 71.16.29.126[l2tpserver]...109.248.61.152[192.168.0.108]

А это Android
Nov 18 13:53:57 vmobilriwlb charon: 14[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:54:00 vmobilriwlb charon: 12[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:54:03 vmobilriwlb charon: 15[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:54:06 vmobilriwlb charon: 16[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:54:09 vmobilriwlb charon: 06[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:54:12 vmobilriwlb charon: 05[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:54:15 vmobilriwlb charon: 07[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA
Nov 18 13:54:18 vmobilriwlb charon: 08[IKE] 109.248.61.152 is initiating a Main Mode IKE_SA

MooSE 2018-12-11 15:36:07 (#)

Про разные устройства я вряд ли подскажу.

Про файрволл для панели - разрешить доступ к ней только с подсети VPN.

Anonymous 2018-12-16 19:25:06 (#)

Всё ОТЛИЧНО РАБОТАЕТ, автору ОГРОМНЫЙ респект за мунуал
единственное что можно добавит так это то чтог если сервер находится за НАТ-ом то в реестре нужно добавить одну Хреновену
запускаем от админа в CMD
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
и перезагружаемся.
Блин ЧУВАТ ТЫ КРУТ, Респект тебе чуви !!!!!!!!!!

Anonymous 2019-01-06 15:12:42 (#)

В реестр изменения сделал, пробовал уже и чистую систему поставить и все один в один по инструкции сделать (сервер на firvds - kvm) и в chap-secrets звездочку дописал... но склоняюсь что все таки дело где-то в фаерволе - ибо у меня при подключении в винде упорно пишет "Не удалось установить связь по сети между компьютером и VPN-сервером, так как удаленный сервер не отвечает.
ens3 в правилах фаервола заменил на eth0 как у меня дает ifconfig что еще не так - не понимаю (((

Anonymous 2019-01-09 09:14:43 (#)

Anonymous 2019-01-06 15:12:42
ВОт этот ключ в винде вбивал в соединение ? Sup3rP4ss

%any %any : PSK " Sup3rP4ss "

Anonymous 2019-01-10 08:47:29 (#)

Да конечно вбивал. У меня Win10 в соединении выбираю Тип VPN - L2TP/IPsec с предварительным ключом и затем в поле общий ключ писал Sup3rP4ss.

Мне кажется проблема в скрипте "firewall.sh",
в частности строку:
IF_EXT="ens3"
я заменил на
IF_EXT="eth0"
потому что через ifconfig я вижу только два порта eth0 и lo

а вот эту строку я не поменял
IF_INT="ppp+"
может ее тоже надо как то изменить?

Anonymous 2019-01-10 12:48:20 (#)

На Win10 запускал от админа
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

???

Anonymous 2019-01-10 12:53:40 (#)

firewall.sh тут не причем, даже если убрать его, всё равно клиенты должны подключатся.
ppp+ это внутренние интерфейсы подключенных пользователей
они появляются кода клиент подключился на твой сервер

Anonymous 2019-01-10 13:11:03 (#)

Автору спасибо. Небольшая поправка, если дебиан, то
в "/etc/xl2tpd/xl2tpd.conf"
; Файл с дополнительными опциями для ppp
pppoptfile = /etc/ppp/options.xl2tpd (без расширения .xl2tpd !!!)
просто
pppoptfile = /etc/ppp/options
----------------------------------------------------

все заработало, но нужно еще правила iptables прописывать, ваших мало, сам еще не разобрался, у клиентов есть соединение, но нет интернета

Anonymous 2019-01-14 20:57:55 (#)

Реально не понимаю - опять переустановил систему, все один в один как по инструкции, но меняю:
- добавив звездочку в /etc/ppp/chap-secrets,
- firewall.sh модифицирую - меня ens3 на eth0
- вместе файла /etc/ppp/options.xl2tpd правил файл /etc/ppp/options так как у меня именно такой в той папке. (Ubuntu 16.04) (файл /etc/ppp/options.xl2tpd тоже создал на всякий случай)

Затем в винде запускаю cmd от имени администратора и выполняю там
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

после чего делаю новое VPN подключение (естественно общий ключ - Sup3rP4ss а пароль ставлю - D4dLMy44gc):


пробую подключится - оно долго висит:

MooSE 2019-01-14 21:41:43 (#)

А к другим L2TP-серверам подключаетесь? Не может ваш провайдер вам доступ ограничивать? Некоторые мобильные операторы этим грешат.

Anonymous 2019-01-14 22:47:12 (#)

А как это можно проверить? у меня не мобильный оператор, а обычная локальная городская сеть. Но да такое ощущение что где-то кто-то блокирует :-( К PPTP подключаюсь, OpenVPN тоже нормально работает

Anonymous 2019-01-17 13:16:36 (#)

Спасибо большое за мануал!
Это первый мануал, после которого заработало ))
Но есть проблема с подключением устройств на андроиде. Windows коннектится на ура, а андроид - нет. Проверял 2 разных устройства.
Привожу пример лога strongswan-а:

Jan 17 12:30:34 vps-7695-7267 charon: 05[NET] received packet: from 195.9.145.210[500] to 84.22.100.51[500] (444 bytes)
Jan 17 12:30:34 vps-7695-7267 charon: 05[ENC] parsed ID_PROT request 0 [ SA V V V V V V ]
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] received NAT-T (RFC 3947) vendor ID
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] received draft-ietf-ipsec-nat-t-ike-02 vendor ID
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] received draft-ietf-ipsec-nat-t-ike-02\n vendor ID
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] received draft-ietf-ipsec-nat-t-ike-00 vendor ID
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] received FRAGMENTATION vendor ID
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] received DPD vendor ID
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] 195.9.145.210 is initiating a Main Mode IKE_SA
Jan 17 12:30:34 vps-7695-7267 charon: 05[CFG] received proposals: IKE:AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:AES_CBC_256/HMAC_MD5_96/PRF_HMAC_MD5/MODP_1024, IKE:AES_CBC_128/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:AES_CBC_128/HMAC_MD5_96/PRF_HMAC_MD5/MODP_1024, IKE:3DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:3DES_CBC/HMAC_MD5_96/PRF_HMAC_MD5/MODP_1024, IKE:DES_CBC/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024, IKE:DES_CBC/HMAC_MD5_96/PRF_HMAC_MD5/MODP_1024
Jan 17 12:30:34 vps-7695-7267 charon: 05[CFG] configured proposals: IKE:AES_CBC_128/AES_CBC_192/AES_CBC_256/HMAC_SHA2_256_128/
HMAC_SHA2_384_192/HMAC_SHA2_512_256/AES_XCBC_96/HMAC_SHA1_96/
PRF_AES128_XCBC/PRF_HMAC_SHA2_256/PRF_HMAC_SHA2_384/
PRF_HMAC_SHA2_512/PRF_HMAC_SHA1/MODP_3072/MODP_4096/
MODP_6144/MODP_8192/MODP_2048
Jan 17 12:30:34 vps-7695-7267 charon: 05[IKE] no proposal found
Jan 17 12:30:34 vps-7695-7267 charon: 05[ENC] generating INFORMATIONAL_V1 request 1823613999 [ N(NO_PROP) ]
Jan 17 12:30:34 vps-7695-7267 charon: 05[NET] sending packet: from 84.22.100.51[500] to 195.9.145.210[500] (56 bytes)

Где копать?

Anonymous 2019-07-01 03:25:49 (#)

Испытываю те же проблемы с подключением андроид устройств и микротика, хотелось бы найти решение этой проблемы.

Anonymous 2019-07-24 07:53:51 (#)

Автор, большое спасибо. Все работает.
Но не стабильно. Проблема в том, что подключенным к соединению и нормально работать может только одно устройство. Если подключить 2 пк, то у одного соединение рвется. Примерно около минуты нужно на это. И вот тут вопрос, то ли дело в хостере (time4vps) или же дело в настройке сервера. ip range настроен также как у вас. как и firewall.sh.

Anonymous 2019-07-24 07:55:45 (#)

К комментарию выше еще хотел бы добавить.
1 пк подключается сразу и без вопросов. а вот второй сможет подключится только после того, как первый подключится и разорвет соединение. Иначе будет жаловаться на NAT

Anonymous 2019-10-24 18:15:14 (#)

Для подключения с андройда нужно:

Добавляем в конфигурационный файл /etc/ipsec.conf
ike=aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!

esp=aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1024,3des-sha1-modp1024,aes128-aes256-sha1-sha256,aes128-sha1,3des-sha1!


Мне помогло!

Антон Добрынин 2019-10-30 18:31:53 (#)

Здравствуйте, спасибо за статью, всё заработало. Клиенты цепляются (win10), но друг друга не видят!
Скажите пожалуйста как исправить можно.

Подсказал мне хороший знакомый добавить:

iptables -A FORWARD -i ${IF_INT} -o ${IF_INT} -s ${NET_INT} -j ACCEPT

И заработало!

MooSE 2019-10-31 12:14:06 (#)

Здравствуйте, спасибо за статью, всё заработало. Клиенты цепляются (win10), но друг друга не видят!
Скажите пожалуйста как исправить можно.


Разрешите пересылку пакетов между ppp* интерфейсами.

Anonymous 2019-12-30 12:11:12 (#)

Добавил в конфигурационный файл /etc/ipsec.conf
ike=aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
esp=aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1-modp2048,aes128-sha1-modp1024,3des-sha1-modp1024,aes128-aes256-sha1-sha256,aes128-sha1,3des-sha1!

В итоге перестал подключаться из windows (из андроида тоже не подключается)

Anonymous 2020-05-16 22:39:47 (#)

Вбиваю данные в iptables и не сохранятеся, тупо не хочет и скидывается на стандартный конфиг

Anonymous 2020-09-28 20:52:40 (#)

так возник вопрос по всему что было написано. все сделал как писалось. поднял на серверах http://hetzner.com получил сервак работает, но при соединении нет доступа в инет вообще. раньше подымал на нем OpenVPN сервак все работало, единственное что не нравилось сертификаты!

Так что так! не работает доступ в инет! наверное все из за того, что настройки Firewall не то что то сделал!

MooSE 2020-09-29 10:22:40 (#)

не работает доступ в инет!
Проверяйте имена сетевых интерфейсов в скрипте файрволла

Anonymous 2020-09-30 17:03:33 (#)

эээээээ я в линуксе новичек

Anonymous 2020-10-16 18:53:49 (#)

Большое спасибо за инструкцию.
Есть некоторые моменты. VPN-сервер поднят на VPS.
Комп на Win поднимает соединение только после правки реестра.
Маршрутизатор Keenetic к серверу подключается сходу.
Андроид-устройства не подключаются совсем.

Anonymous 2020-10-28 08:48:41 (#)

Снова всем доброго дня!
В продолжение предыдущего сообщения:
Подключение Андроид-устройств обеспечил добавлением в конец файла ipsec.conf следующих строк:
ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes1$
(увидел, что требует в логе /var/auth.log)
Пока не получается организовать связь между клиентами l2tp. Устройства подключаются, появляются в таблице маршрутов на VPS, пингуют 172.28.253.65 (local ip), но на друг друга не могут достучаться. Пробовал разрешить форвардинг между ppp+, но или что-то не так делал, или мозгов не хватает.
Подсобите кто-нибудь? :)

Anonymous 2020-11-10 18:36:49 (#)

Привет всем. Может поможете, что-то я в полном ауте. Есть ВПН подобный (немного подругому настраивал). Клиенты цепляются, все отлично. Пинг с сервера идет по ип, с клиента на сервер тоже. У меня задача в том, чтобы с сервера можно было обратиться к клиенту по имени. Поставил рядом bind9, прописал резолв, но по имени никак не получается обратиться.Подскажите - куда копать? СТранная штука - на вдс-ке пингуется все подряд, чего нет в сети.

Anonymous 2020-11-15 08:49:10 (#)

И опять всем здравствуйте!
В продолжение моей эпопеи от 16 и 28 октября.

Добавил такие строки в iptables, пошёл пинг между клиентами vpn-сервера:
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -j ACCEPT
iptables -A FORWARD -o ppp+ -j ACCEPT
iptables -A OUTPUT -o ppp+ -j ACCEPT
Не забываем настроить разрешающие правила межсетевым экранам на клиентских компах.

ps В результате всей проделанной работы развернул на VPS L2TP-сервер, подцепил к нему в качестве клиента маршрутизатор Кинетик + сеть системы видеонаблюдения, и организовал к ним доступ с различных устройств через эту же VPN.

Anonymous 2020-12-06 02:23:26 (#)

Добавил такие строки в iptables, пошёл пинг между клиентами vpn-сервера:
iptables -A INPUT -i ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -j ACCEPT
iptables -A FORWARD -o ppp+ -j ACCEPT
iptables -A OUTPUT -o ppp+ -j ACCEPT

Какими строками разрешить доступ клиентам vpn в локальную сеть ? В статье, к примеру, к любому адресу 172.28.253.xx

Anonymous 2021-02-04 14:31:36 (#)

А как сделать без шифрования ?

Anonymous 2021-02-14 10:01:22 (#)

Подскажите как поднять (настроить) L2TP VPN сервер без IPSEC шифрования в Linux (Ubuntu).
С L2TP VPN с шифрованием IPSec нашел множество инструкций, и деже готовых скриптов. Но не могу найти ни одной инструкции L2TP VPN без IPSec. (вернее одну нашел 2008 г. там еще l2tp пакеты).

Условия: Комп за роутером, порт 1701 проброшен и ТСР и UDP. ОС Ubuntu 18.04.5 LTS (чистая, со всеми последними обновлениями). Выходить в интернет через этот VPN не надо.

Я установил сервер L2TP
apt-get install xl2tpd

и как только не настраивал файл
vi /etc/xl2tpd/xl2tpd.conf

не запускается сервер, и подключиться к нему не могу.
port = 1701 пробросил в роутере
Может у кого есть скрипт настройки L2TP VPN без IPSec (шифрование просто не нужно в данном случае).
Может клиенты просто не могут соединиться без шифрования? Где то прочитал что может Windows не дает просто нешифрованное соединение.
Но так же пишут что у многих роутеров и в том же SoftEther VPN есть возможность отключить шифрование IPSec, значит такое соединение без шифрования всё таки бывает что используется и применяется.
Как это настроить в xl2tpd?
Может у кого то стоит настроенный L2TP VPN без IPSec можете скинуть файлы конфигурации
1. /etc/xl2tpd/xl2tpd.conf
2. /etc/xl2tpd/xl2tpd-secrets
3. /etc/ppp/options.xl2tpd
Может еще где то надо что то? Или порты какие то еще пробросить (сервер стоит за роутером, внешний IP белый)
менял-менял настройки xl2tpd сервер вроде запустился
root@s:/home/s# /etc/init.d/xl2tpd restart
[ ok ] Restarting xl2tpd (via systemctl): xl2tpd.service.

Но подключиться так и не могу.
То ошибка 651 то (сейчас) 868 стала.
Я понимаю что вроде как "делай с шифрованием" как "все делают" "не выпендривайся". Но если честно, сначала хотел без шифрования для минимизации процессов и нагрузки, а теперь уже принципиально хочу добить. Ведь есть протокол L2TP, он же должен работать. Странно почему не пользуются, ведь не всем нужно шифрование, тем кто просто играет по виртуальной сети VPN вообще не нужно шифрование и лишние задержки.
Спасибо!

Anonymous 2021-02-16 12:43:49 (#)

посоветуйте самый простой канал или способ создать сеть из компьютеров у разных провайдеров при наличии одного белого IP на одном компе (за роутером). ОС — Убунта 18
Нужен просто VPN для объединения, даже без выхода в интернет через VPN (в интернет все по своим будут выходить). ВПН только для виртуальной сети типа (10.0.0.х) диапазон у всех. С минимальной нагрузкой на сервер и задержками, можно без шифрования
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2021 Вадим Калинников aka MooSE
Политика конфиденциальности