- Установка и настройка L2TP VPN-сервера на Ubuntu Server
- Настройка IPSEC
- L2TP/IPSec сервер на Debian
- ru OpenL2TP QuickStart
- Возможности OpenL2TP
- Клиент L2TP
- Сервер L2TP
- Присвоение IP-адреса
- ippoold
- RADIUS
- IPSec
- OpenSWAN
- Простая настройка сервера, с фиксированными значениями портов
- Сложная настройка сервера, с поддержкой множества пар туннелей на IP-адрес
Установка и настройка L2TP VPN-сервера на Ubuntu Server
L2TP сервер удобен тем, что позволяет использовать встроенные средства Windows для подключения. В данной инструкции рассмотрим процесс его установки и настройки на Ubuntu 16.04 и 18.04. В итоге мы получим:
- VPN-сервер, использующий туннельный протокол L2TP.
- Защита соединения посредством общего ключа + аутентификация пользователя.
- Доступ к локальной сети.
Мы выполним следующие настройки:
Настройка IPSEC
Для управления IPSec используется пакет strongswan — установим его командой:
apt-get install strongswan
Открываем конфигурационный файл для настройки ipsec:
Для config setup добавим:
config setup
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
protostack=netkey
* где virtual_private для нас является наиболее важным параметром и определяет приватные сети. В данном примере просто перечислены сети, зарезервированные под локальные — мы можем указать и другие.
. а также вставляем ниже:
conn l2tpvpn
type=transport
authby=secret
pfs=no
rekey=no
keyingtries=2
left=%any
leftprotoport=udp/l2tp
leftid=@l2tpvpnserver
right=%any
rightprotoport=udp/%any
auto=add
- type — тип соединения. Возможны варианты tunnel ( хост-хост, хост-подсеть или подсеть-подсеть); transport (хост-хост); passthrough (без обработки IPsec).
- authby — способы аутентификации двух узлов. Возможны варианты secret (по паролю) или rsasig (цифровые подписи RSA).
- pfs — расшифровывается как Perfect Forward Secrecy. Позволяет активировать совершенную секретность в канале ключей соединения.
- rekey — перепроверить соединение, когда оно истекает.
- keyingtries — число попыток, чтобы «договориться» о соединении или его замене.
- left — IP-адрес левого участника (сервера). %any означает, что адрес может быть любой.
- leftprotoport — определяет протокол и порт, на котором будет работать левая сторона (сервер). В данном примере указан UDP и порт 1701.
- leftid — идентификация левого участника соединения.
- right — IP-адрес правого участника (клиента). %any означает, что адрес может быть любой.
- rightprotoport — определяет протокол и порт, на котором будет работать правая сторона (клиент). В данном примере указан UDP и любой порт.
- auto — операция, которая должна запуститься автоматически при старте IPsec.
Создаем секретный ключ — для этого открываем на редактирование файл:
%any %any : PSK «my_key_password»
* в данном примере мы устанавливаем общий пароль my_key_password для соединений с любого IP.
Разрешаем автозапуск strongswan и перезапускаем службу:
systemctl enable strongswan
systemctl restart strongswan
Устанавливаем сервер L2TP:
apt-get install xl2tpd
Открываем файл настройки сервера:
[global]
port = 1701
access control = no
ipsec saref = yes
force userspace = yes
auth file = /etc/ppp/chap-secrets
[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1
name = l2tpserver
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
- port — порт UDP, на котором работает VPN. По умолчанию, 1701.
- access control — принимать или нет запросы только от клиентов с определенными IP, перечисленными в настройках клиентов.
- ipsec saref — указывает использовать или нет ipsec Security Association, позволяющий отслеживать несколько клиентов с одинаковыми IP-адресами.
- force userspace — повышает производительность за счет декапсуляции пакетов L2TP.
- auth file — путь к файлу аутентификации.
- ip range — диапазон адресов, которые назначаются подключенным клиентам.
- local ip — IP-адрес сервера в сети VPN.
- name — имя сервера для процесса согласования.
- pppoptfile — путь к файлу с настройкой pppd.
- flow bit — позволяет добавлять в пакеты порядковые номера.
- exclusive — если поставить в yes, сервер разрешит только одно соединение с клиентом.
- hidden bit — скрывать или нет AVP.
- length bit — использовать ли бит длины, указывающий полезную нагрузку.
- require authentication — требовать ли аутентификацию.
- require chap — требовать ли аутентификацию PPP по протоколу CHAP.
- refuse pap — требовать ли аутентификацию PPP по протоколу PAP.
Разрешаем автозапуск vpn-сервера и перезапускаем его:
systemctl enable xl2tpd
systemctl restart xl2tpd
Открываем на редактирование конфигурационный файл:
L2TP/IPSec сервер на Debian
Posted by Валерий Асанин | Янв 19, 2017 | VPN | 0 |
При установке возникают следующие ошибки:
Для того что бы убрать ошибку устанавливаем необходимые пакеты
После установки необходимых пакетов запускаем установку openswan заново
В /etc/ipsec.secrets добавляем строчку
Где
123.123.123.123 — наш внешний IP-адрес, на который будут приходить запросы
OurStrongestPassword — PSK-ключ, единый для всех юзеров (с сертификатами не заморачиваемся)
Далее. Файл конфигурации IPSec /etc/ipsec.conf приводим к такому виду:
Не забываем вместо 123.123.123.123 указать свой внешний IP и нажать enter и перейти на следующую пустую строку !
После этого делаем
а также обязательно
В результате должны получить картинку такого рода:
Если возникает проблема с командой «ipsec verify» и выводится ошибка
Иногда может возникнуть следующая проблема:
на офф. сайте лежит решение
for f in /proc/sys/net/ipv4/conf/*/send_redirects; do echo 0 > $f; done
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 > $f; done
После успешного прохождения проверок в /etc создаём файл disable_send_accept_redirects со следующим содержимым:
Делаем файл исполняемым
Файл /etc/xl2tpd/xl2tpd.conf приводим к следующему виду :
Далее идём в /etc/ppp/options.l2tpd и «уделываем» его так:
В /etc/ppp/chap-secrets должны быть прописаны пользователи
таким образом юзер test с паролем test сможет подключиться у нас откуда угодно (с любого адреса) и ему выделится адрес в VPN-сети из 10.0.10.0
- ru
- OpenL2TP
- QuickStart
Этот раздел представляет собой быструю сводку по общим настройкам OpenL2TP в помощь для новых пользователей.
Возможности OpenL2TP
OpenL2TP — это реализация с открытым исходным кодом L2TP для Linux, распространяющаяся под двойной лицензией. OpenL2TP идеален для использования в любой из следующих окружений среды:
- как служба VPN — L2TP, для развёртывания как на серверах так и на рабочем месте, предоставляя доступ по VPN вида L2TP для работы из дома.
- как компонент в коммерческих системах со встроенным Linux, т.н. домашние маршрутизаторы или телекоммуникационные свичи, ориентированные на большие сети.
- как L2TP-клиент для пользователей, использующих систему в качестве Desktop.
OpenL2TP — это полная реализация RFC2661 — Протокола Туннелирования Второго Уровня, Версия 2 (Layer Two Tunneling Protocol, Version 2 (L2TP)). Главные особенности упомянуты ниже. Нетерпеливые читатели могут просто пропустить этот следующий ниже абзац.
- Поддержка одновременной работы как в качестве LAC, так и в качестве LNS. Один сервер может работать в качестве LAC для некоторых туннелей, в то же самое время являться и LNS для других туннелей.
- Поддерживаются как входящие, так и исходящие туннели и сессии.
- Поддержка неограниченного количества туннелей и сессий на каждый из этих туннелей. Максимальное количество туннелей и сессий ограничено только системными ресурсами — доступной системной памятью (максимум 65535 туннелей и 65535 сессий на туннель) или системой, где пользователь самостоятельно задаёт в настройке системы ограничения.
- Поддерживаются все четыре возможных типа сессий — Входящие/Исходящие вызовы LAC/LNS.
- Поддерживаются работа множества туннелей между одними и теми же двумя хостами L2TP.
- Туннель, сессия и параметры PPP могут указываться в профилях с произвольными именами, упрощая интерфейс управления и позволяя определённые значения параметров использовать для определённых входящих туннелей (создаваемых удалённой системой запросом по сети).
- В состоянии проанализировать и записать все стандартные AVP L2TP, определённые в RFC2661. Анализ проверяет, что все необходимые AVP присутствуют в каждом сообщении, и генерирует сообщение об ошибке в журнала сообщений, если замечены неожиданные (нестандартные) AVP.
- Управляющие сообщения обрабатываются демоном в пространстве пользователя, openl2tpd. Все пакеты данных L2TP обрабатываются ядром.
- Запись сообщений трассировки, используя syslog, по вашему выбору можно включать/отключать на уровне системы, туннеля и сессии. Таким образом, для отладки и разрешения различных проблем на боевой системе, трассировка может быть безопасно включена только для указанных объектов, без флуда системы сообщениями от других, не интересующих вас объектов.
- Интерфейс управления использует RPC Sun, делая OpenL2TP, особенно подходящим программным обеспечением для встроенных сред окружения, таких как телекоммуникационные системы.
- OpenL2TP связывается с приложением, имеющим интуитивное управление из командной строки, использующее завершение синтаксиса при помощи клавиши TAB, историю команд (клавиши со стрелками вверх/вниз) и контекстно-зависимую справку (интерактивную справочную систему команд).
- Используется архитектура плагинов для лёгкого расширения функциональных возможностей или интеграции OpenL2TP с другим программным обеспечением третьих лиц, например, PPP, RADIUS, B-RAS и т.д. Имеется плагин для взаимодействия с pppd, другие реализации PPP могут воспользоваться при желании плагином.
- Поддержка автоматического присвоение IP-адреса из пулов локальных адресов, если другие механизмы распределения адресов (например, RADIUS) не настроены. Используйте ippoold.
- Локально создаваемые туннели могут по выбору назначаться постоянными, то есть можно принудительно заставить их попытаться пересоздавать туннель при потенциальном разрыве туннеля в случае сбоя по различным причинам. Любые локально создаваемые сессии в постоянных туннелях также автоматически восстанавливаются если/когда туннель непосредственно переподключился. Это бывает очень полезно, если openl2tpd используется в качестве L2TP-клиента.
- Совместимость от разработчика OpenL2TP с Cisco IOS 12.2, Microsoft, W2K/XP, Apple OSX, Draytek и другими.
Драйвер PPP-over-L2TP ядра Linux, pppol2tp, был разработан в проекте OpenL2TP. Он был интегрирован в официальное ядро версии 2.6.23. Некоторые дистрибутивы Linux теперь поставляются с этим драйвером. Для более ранних версий ядер должен быть установлен пакет pppol2tp-kmod. Бинарники, в виде пакетов RPM, доступны для некоторых ядер, или драйвер может быть собран из исходника. Имейте в виду, что OpenL2TP версии 1.0 совместим только с pppol2tp-kmod-0.17.
Клиент L2TP
После запуска, сервер OpenL2TP, openl2tpd, считывает настройки из файла /etc/openl2tpd.conf по-умолчанию, или из файла, указанного дополнительным параметром-ключём -c из командной строки. Следующий файл настроек, в качестве примера, создаст туннель L2TP для хоста 42.1.1.1, вход под пользователем bert, с паролем ernie. Заметьте, что используется две абсолютно различных команды для создания VPN — сначала создаётся L2TP-туннель, и затем внутри этого L2TP-туннеля создаётся сессия.
Использование persist=yes, в упомянутой выше конфигурации, сообщает программе OpenL2TP повторять установку туннеля с отключённым L2TP-сервером (LNS на принимающей другой стороне). OpenL2TP периодически будет отправлять запросы на установку туннеля до тех пор, пока туннель не будет создан, а также попытается пересоздать туннель в случае, если позже вновь созданный туннель разорвётся.
Так как OpenL2TP по-умолчанию работает и как L2TP-клиент и как L2TP-сервер, то некоторым пользователям VPN может пригодится отключение ненужных лишних функциональных возможностей сервера. Для того, чтобы это сделать, включите следующую команду в упомянутый выше файл конфигурации:
Утилита командной строки l2tpconfig используется для того, чтобы в интерактивном режиме просмотреть или изменить настройки и состояние OpenL2TP. Утилита интуитивно проста и понятна — команды вводятся вручную и легко редактируются, а также имеется автоматическая подстановка команд клавишей Tab. Далее показан пример сессии — как отобразить информацию о состоянии L2TP-туннеля, созданного выше.
Если Вам требуется безопасное VPN-соединение, то в таком случае Ваш L2TP-туннель можно защитить при помощи IPSec. Эта дополнительная надстройка для L2TP поддерживается в различных коммерческих программных продуктах, таких как Windows XP. За подробной информацией о создании VPN-соединений при помощи L2TP/IPSec — обратитесь к разделу IPSec, который расположен далее в руководстве.
Сервер L2TP
Читатели, которые не планируют использовать OpenL2TP в качестве сервера для удалённых других L2TP-клиентов, могут спокойно пропустить этот подраздел руководства.
Большинство усилий, требующихся для того, чтобы установить OpenL2TP как сервер L2TP, требуется приложить только к установке пользовательской авторизации и к присвоению IP-адреса. В том случае, когда используется RADIUS-сервер как для пользовательской аутентификации, так и для присвоения IP-адреса, то необходимая настройка самого OpenL2TP минимальна. Параметры, доступные для пользовательской аутентификации и присвоения IP-адреса, описаны ниже.
Присвоение IP-адреса
Почти все L2TP-клиенты ожидают того факта, что IP-адреса PPP-сеанса будут присвоены L2TP-сервером. Поэтому, при настройке L2TP-сервера OpenL2TP, механизм для присвоения IP-адресов должен быть обязательно настроен и установлен. Существует всего три различных схемы присвоения IP-адресов L2TP-клиентам:
- Фиксированные IP-адреса, предварительно настроенные для каждого L2TP-клиента, который подключится к L2TP-серверу.
- Динамические IP-адреса, полученные из пула IP-адресов.
- Динамические IP-адреса, полученные через поиск в RADIUS-сервере.
Для предварительного тестирования L2TP-сервера, или в случае когда известны IP-адреса L2TP-клиентов, фиксированные IP-адреса могут быть настроены в OpenL2TP для каждого L2TP-клиента. Для того, чтобы это сделать, через клиент L2TP (peer) создаётся профиль соединения, который вызывает уникальный ppp-профиль, который в свою очередь поочерёдно задаёт IP-адреса, которые будут использоваться. OpenL2TP наследует параметры настройки от предварительно настроенных профилей. Если вам требуется задать определённые параметры, которые будут установлены для определённых соединений, то укажите настройки в туннеле, сессии или ppp-профилях, и ссылайтесь на эти профили в профилях соединений.
Когда получен запрос установки L2TP-тоннеля, OpenL2TP попытается найти профиль соединения, который соответствует IP-адресу отправителя (L2TP-клиента) (или L2TP имени, если предоставляется). Если было ничего не найдено, то тогда используется профиль соединения по-умолчанию. Каждый профиль соединения указывает на уникальный ppp-профиль. Это показано в следующем примере, где двум peer — 80.70.60.50 и 42.1.2.3 присвоены IP-адреса — 10.5.1.2 и 10.5.1.4 соответственно, когда они подсоединяются.
ippoold
Но использовать отдельный ppp-профиль очень утомительно в случае когда имеется много L2TP-клиентов. Также невозможно использовать отдельные ppp-профили, когда IP-адрес или имя хоста L2TP-клиента неизвестны. Для того, чтобы разрешить эту ситуацию, OpenL2TP поддерживает использование ippoold, который является полностью отдельной службой, предоставляющей пулы IP-адресов. Сервер ippool доступен для скачивания со странички загрузки проекта OpenL2TP.
Настройка ippoold предельно проста. Пулы IP-адресов могут быть созданы в интерактивном режиме, используя утилиту ippoolconfig. Или, в другом случае, создание пулов IP-адресов может быть указано в файле настроек. Следующий пример показывает простую настройку с одним единственным пулом IP-адресов, содержащим 100 IP-адресов.
Настройка OpenL2TP проста в том случае, когда все PPP-клиенты должны использовать один и тот же пул IP-адресов. Следующая настройка — это всё, что потребуется, не более
Упомянутая выше настройка позволит любому L2TP-клиенту соединяться, а также автоматически присваивать IP-адреса, в т.ч. и освобождённые от предыдущих L2TP-клиентов, поскольку L2TP-клиенты после подключения, отключаются после завершения сеанса работы с туннелем. PPP-аутентификация для каждого разрешённого пользователя должна быть установлена как задокументировано в pppd, например, «/etc/ppp/chap-secrets».
RADIUS
Для использования VPN по типу L2TP в корпоративной и провайдерской среде для обеспечения аутентификация пользователя, для учёта использования VPN и для установки параметров для каждого отдельного абонента обычно используется сервер RADIUS. Для того, чтобы использовать сервер RADIUS, доступ у pppd должен быть настроен к каждому RADIUS-серверу (за более подробной информацией обратитесь к документации pppd) и ppp-профиль в OpenL2TP должен отображать факт использования RADIUS-сервера.
Файлом с настройками RADIUS-клиента от pppd обычно является «/etc/radiusclient/radiusclient.conf». Самый простой вариант использования RADIUS-клиента — он просто делает запрос на IP-адрес и отправляет на этот IP-адрес информацию об аутентификации (процедура выполняется для каждого RADIUS-сервера, указанного в RADIUS-клиенте). За более подробной информацией обратитесь к «man pppd-radius». Уже на стороне собственно самого RADIUS-сервера, в настройках, указывается имя пользователя (ppp-username) и пароль (ppp-password) для каждого разрешенного пользователя на вход (login) через «pppd». Сервер RADIUS обычно раздаёт IP-адреса сразу после успешной аутентификации пользователей на «pppd» и в этом случае «ippoold» не требуется.
Для того, чтобы связать OpenL2TP с сервером RADIUS, просто укажите использование сервера RADIUS в ppp-профиле (параметр «use_radius=yes»). Файл с настройками «radiusclient.conf» указывается при помощи дополнительного параметра «radius_hint=/etc/radiusclient/my_radiusclient.conf», позволяя гибко указывать различные серверы RADIUS, которые будут использоваться для аутентификации различных L2TP-клиентов, распределив VPN-клиентам различные ppp-профили. В том случае, если значение «radius_hint» не указано, то используется файл с настройками radiusclient по-умолчанию («/etc/radiusclient/radiusclient.conf», то есть управление этим параметром передаётся на radiusclient).
В том случае, если сервер RADIUS не назначает IP-адреса, то можно воспользоваться «ippoold», таким образом совместно используя RADIUS только для аутентификации пользователей и «ippoold» для выдачи IP-адресов. Для того, чтобы включить выдачу IP-адресов при помощи «ippoold», установите параметр «ip_pool_name=xxx» в ppp-профиль.
IPSec
Так как OpenL2TP реализован с использованием стандартных компонент Linux, т.н. UDP-сокеты, ядро linux и pppd, то OpenL2TP плавно интегрируется с различными другими компонентами, такими как IPSec.
Linux имеет на выбор несколько различных реализаций протокола IPSec. OpenL2TP работает по крайней мере с двумя из них, а именно — это OpenSWAN и Racoon. Работающий сервер L2TP/IPSec на основе OpenL2TP поддерживает совместимость со всеми известными L2TP/IPSec клиентами, в т.ч. Microsoft Windows 7/Vista/XP, Apple OSX и, конечно, xl2tpd с OpenL2TP.
OpenSWAN
И хотя OpenSWAN уже содержит в себе отдельную собственную реализацию L2TP, она слишком ограничена в возможностях для использования её вместо OpenL2TP. Два примера настройки OpenL2TP и OpenSWAN приводятся ниже, первый пример — самый простой и подходит для большинства случаев, когда известно и приемлемо, что не более одного L2TP-клиента подключаются с одного и того же IP-адреса.
Простая настройка сервера, с фиксированными значениями портов
Настройки выше сообщают OpenL2TP использовать фиксированный UDP-порт для всех туннелей (что ограничит 1 туннель на 1 пира). Использование фиксированного порта упрощает настройку OpenSWAN IPSec.
Файл с настройкой OpenSWAN показан ниже.
В приведенном выше примере настраивается подключение для аутентификации туннеля от клиента (с IP-адреса 42.1.1.1) на IP-адрес сервера «1.2.3.4», используя Pre-Shared Key (PSK). Под PSK понимается общий пароль (ключ), который должен быть указан заранее (Pre-Shared) как на клиенте, так и на сервере. PSK указывается в файле с расширением «*.secret» в каталоге /etc/ipsec.d/. Соответствующая настройка PSK ключа показана ниже.
Использование PSK часто является самым простым способом и наиболее быстрым для проверки работы L2TP с IPSec, но этот способ является также наименее безопасным, по сравнению с другими способами аутентификации IPSec, например, при помощи сертификатов RSA. За более подробной информацией как настроить другие способы и их параметры аутентификации в IPSec обратитесь к документации OpenSWAN.
Как и во всех остальных случаях, в OpenSWAN, при внесении изменений в файлы настроек, OpenSWAN должен быть перезапущен для вступления в силу новых параметров настройки, которые будут загружены. Пожалуйста, обратите внимание, что синтаксис файла настроек OpenSWAN чувствителен к отступам (1 символ табуляции или 4 символа пробела).
В приведенном выше примере IP-адрес сервера — «42.1.1.1» и IP-адрес клиента — «1.2.3.4». Порт «1701» является номером порта UDP, по стандарту выданным специально для протокола L2TP.
Когда требуется создание нескольких туннелей между отдельными парами пиров, то всё немного сложнее, так как уже невозможно будет использовать фиксированный номер UDP-порта 1701. И удаляется параметр профиля туннеля «Our_udp_port = 1701». Теперь OpenL2TP будет использовать временные порты для каждого туннеля.
Временные порты назначаются стеком локального IP-адреса в процессе установки соединения и создания туннеля. Когда клиент и сервер используют динамически назначаемые порты, то используются локально назначенные порты источника и назначения. Номера таких временных портов не могут быть определены заранее, что вызывает проблемы в настройке OpenSWAN, потому что уже не получится указывать фиксированный порт 1701.
К счастью, OpenSWAN поддерживает синтаксис «%any», который может использоваться в качестве шаблона. Но тем не менее, необходимо проявлять осторожность, так как нет возможности узнать значение «%any» для портов как для «left», так и для «right» пиров. Это будет соответствовать каждому UDP-пакету! Это приведет к тому весь UDP-трафик между указанными нами пирами будет передаваться в IPSec, а большая часть UDP-трафика будет не та, которая требуется для установки соединения L2TP-подключений.
Но так порт сервера (1701) входит в правила стандарта (порт 1701 всегда используется для первоначального запроса на установку соединения и создание туннеля), то можно включить IPSec-функцию отслеживания по номеру порта (для OpenL2TP), и получим IPSec-правила — динамически добавляемые/удаляемые программой OpenL2TP во процессе установки соединения и создания туннеля и после того как туннель будет закрыт.
Сложная настройка сервера, с поддержкой множества пар туннелей на IP-адрес
В такой настройке будут использоваться временные UDP-порты, поэтому в настройке OpenSWAN необходимо внести следующие изменения:
Но, тем не менее, в связи с ошибкой в OpenSWAN версий «2.4.7» и «2.4.9», он может поддерживать только один туннель между каждой парой IP-адресов клиент/сервер. Проблема будет отображаться в виде следующей ошибки в лог-файлах системы (/var/log/messages). В следующих версиях OpenSWAN эта проблема, вероятно, будет уже решена.