Как поднять свой vpn сервер ubuntu

Обновлено: 02.07.2024

Настраиваем L2TP VPN-сервер на платформе Linux (Debian / Ubuntu)

L2TP - один из наиболее популярных VPN-протоколов, обладающий, благодаря IPsec, отличной безопасностью, достаточной простотой и широкой поддержкой со стороны всех современных ОС. Для работы с ним не требуется установка дополнительного ПО и какие-либо сложные настройки. Мы уже рассматривали настройку L2TP VPN-сервера на платформах Windows и Mikrotik, а теперь расскажем, как настроить аналогичный сервер в Linux, дистрибутивах основанных на Debian или Ubuntu.

Перед тем, как приступать к работе над данной статьей мы внимательно изучили русскоязычный сегмент сети на предмет освещения данной темы и были весьма сильно удивлены. Большинство находящихся на первых страницах поиска ресурсов перепечатывает одну и ту же устаревшую инструкцию, даже в достаточно свежих публикациях. Но наш сайт с самого своего основания принципиально не занимается перепечатками (кроме переводов) и мы всегда проверяем на практике то, что рекомендуем нашим читателям. В этот раз нам пришлось потратить некоторое лишнее время на чтение документации, зато теперь мы можем предложить вам актуальный материал по настройке L2TP в Linux.

В качестве систем на тестовом стенде мы использовали Debian 10 и Ubuntu 20.04, но с некоторыми изменениями данная инструкция применима к любым версиям Linux со strongSwan версии 5.0 и выше.

Настраиваем IPsec

Именно с устаревшими настройками IPsec вам придется столкнуться в большинстве опубликованных инструкций. Нет, все даже будет работать, но вот безопасность такого решения окажется довольно низкой, не соответствующей современным требованиям. Поэтому, если у вас уже имеется настроенный экземпляр L2TP-сервера мы настоятельно советуем обновить его настройки.

Для работы с IPsec мы будем использовать пакет strongSwan, установим его:

Затем откроем файл настроек /etc/ipsec.conf и добавим в его конец следующие две секции:

Первая секция задает общие параметры: включает фрагментацию IKE и настраивает протокол обнаружения мертвых узлов (Dead Peer Detection, DPD), отвечающий за обнаружение неактивных клиентов. Вторая относится уже к L2TP-соединениям, указывая использовать транспортный режим IPsec, аутентификацию по общему ключу и задает используемые шифры. Приведенные значения являются рекомендуемыми и взяты из официальной документации strongSwan.

Общий ключ следует указать в файле /etc/ipsec.secrets, добавив в него следующую строку:

Где mySharedKey - общий ключ, так как от него зависит безопасность вашей VPN-сети мы рекомендуем использовать в качестве ключа случайно сгенерированную строку из букв, цифр и спецсимволов. Для этого можно воспользоваться командой:

Результатом ее выполнения станет случайная строка длинной в 18 символов.

l2tp-vpn-server-debian-ubuntu-001.jpg

После внесения указанных настроек перезапустим службу:

В Ubuntu имя службы несколько иное - strongswan-starter, поэтому команда будет иметь вид:

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

Для реализации функций L2TP-сервера предназначен пакет xl2tpd, для его установки выполните:

Затем откройте файл настроек /etc/xl2tpd/xl2tpd.conf, раскомментируйте и приведите к следующему виду опции:

Большая часть опций относится к настройке протокола L2TP и требует понимания его работы, поэтому мы на них останавливаться не будем. Разберем те опции, которые имеют существенное значение. Параметр auth file указывает на файл с данными для аутентификации, а pppoptfile - набор опций для PPP-соединения, которое используется внутри L2TP-туннеля, name - имя сервера, которое будет использоваться для поиска аутентификационных данных в файле chap-secrets.

Опции local ip и ip range отвечают за локальный адрес сервера в VPN-сети и диапазон адресов для выдачи удаленным клиентам. Здесь можно использовать два подхода: выдавать клиентам адреса из диапазона локальной сети офиса и включить ProxyARP, в этом случае настраивать маршрутизацию на клиентах не требуется, они будут как-бы включены в общую сеть офиса на канальном уровне (L2), либо выдавать адреса из непересекающегося диапазона и использовать маршрутизацию. Автоматизировать создание маршрутов для Windows-клиентов можно с использованием PowerShell.

Для настройки PPP перейдем в /etc/ppp и скопируем стандартный файл настроек:

Затем открываем файл /etc/ppp/options.xl2tpd на редактирование и приводим к следующему виду. Опции перечислены в порядке их следования, нужно раскомментировать их и указать нужное значение, если опция отсутствует, то ее следует добавить в конце файла.

Если вы будете использовать ProxyARP то дополнительно раскомментируйте опцию:

Также для Windows-клиентов можно передать настройку DNS-серверов, для этого добавьте опции:

Это позволит настроить первичный и альтернативный DNS-сервера в системе.

Сохраним все внесенные изменения и перезапустим службу L2TP-сервера:

l2tp-vpn-server-debian-ubuntu-002.jpg

Заключительным этапом настройки будет создание учетных записей для удаленных клиентов, для этого откроем файл /etc/ppp/chap-secrets и внесем следующую строку:

Первым указываем логин, затем имя службы, оно должно совпадать с тем, которое мы указали в опции name в xl2tpd.conf, после него идет пароль и IP-адрес клиента, символ * обозначает что можно присвоить любой адрес из выбранного диапазона. Если же требуется выдать клиенту постоянный адрес, то его следует указать явно, и он не должен входить в динамический диапазон указанный в ip range, например:

Для доступа к L2TP-серверу следует разрешить в брандмауэре входящие подключения к портам 500 UDP и 4500 UDP, подключение к 1701 UDP, вопреки распространенному заблуждению, разрешать не следует.

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

Открываем на редактирование конфигурационный файл:

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

Создаем пользователя. Для этого открываем файл:

* формат записи — <логин> <имя сервиса> <пароль> <IP клиента (не обязательно)>

systemctl restart xl2tpd

Настройка клиента

В параметрах сети и Интернет в разделе VPN создаем новое соединение:

Создание нового VPN соединения

Настройка нового VPN соединения

  • Имя подключения — произвольное имя.
  • Имя или адрес сервера — адрес сервера VPN, к которому мы будем подключаться.
  • Тип VPN — для нашего случая, выбираем L2TP/IPsec с предварительным ключом.
  • Общий ключ — ключ, который мы задали в файле /etc/ipsec.secrets.
  • Тип данных для входа — выбираем пользователь и пароль.
  • Имя пользователя и пароль — логин и пароль, которые мы задали в файле /etc/ppp/chap-secrets.

Доступ в Интернет и локальную сеть

. и добавляем строку:

* мы разрешили форвард сетевых запросов и настроили сервер в качестве шлюза.

После применяем настройку:

sysctl -p /etc/sysctl.d/99-sysctl.conf

Добавляем правило в iptables:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

* данное правило включает маскарадинг на интерфейсе eth0. Вам необходимо подставить в команду значение своего сетевого адаптера.

В случае с единым сетевым интерфейсом больше ничего делать не потребуется — Ubuntu начнет работать как Интернет-шлюз.

В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран:

iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

* предполагается, что eth1 используется для внутренней сети, а eth0 — внешней.

Диагностика проблем

Описанная выше настройка не предполагает наличие лога. Для этого открываем конфигурационный файл для ppp:

.
logfile /var/log/xl2tpd/xl2tpd.log
debug

Создадим каталог для лога:

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

systemctl restart xl2tpd

Пробуем подключиться к серверу — в случае наличия проблем, наблюдаем за логом:

tail -f /var/log/xl2tpd/xl2tpd.log

Дмитрий Моск — частный мастер

Дмитрий Моск

Настройка L2TP VPN-сервера на Ubuntu для возможности подкючения стандартными средствами Windows


Virtual Private Network (VPN) дословно переводится как «виртуальная частная сеть». VPN создаёт надёжное шифрованное соединение между устройствами — VPN-туннель. Благодаря такому соединению, при подключении к незащищённой сети (например, WiFi в кафетерии), трафик пройдёт через VPN-сервер, что защитит его от постороннего вмешательства.

Бесплатные VPN и прокси отличаются нестабильностью из-за множества активных пользователей. Такие сервисы могут беспричинно прекратить работу в любой момент. Платные же инструменты могут исчезнуть в ближайшем будущем, в связи с законом о запрете анонимайзеров и VPN.

В сложившейся ситуации лучшим решением будет настроить собственную виртуальную частную сеть. В этой статье расскажем как установить собственную виртуальную частную сеть на примере VPN-клиента OpenVPN и Ubuntu 18.04. Установка OpenVPN на CentOS, Debian и другие популярные Linux дистрибутивы происходит по похожей схеме.

Теория

Что такое VPN

VPN-соединение создаётся за счёт связки клиент-серверной архитектуры. Клиенты подключаются к серверу VPN, объединяются в виртуальную сеть, безопасно обмениваются данными. Для подключения к Интернету клиент обращается к серверу VPN, а тот, в свою очередь, получает данные из глобальной сети и передаёт их обратно клиенту.

Другими словами, VPN создаёт безопасный коридор между вашими устройствами и сетью. Этот коридор незаметен, а данные, находящиеся в нём, невозможно перехватить. Все соединения идут не напрямую, а через сервер, который может находиться в любой точке мира.

OpenVPN


Один из способов создания виртуальной частной сети – использование бесплатной программы OpenVPN. Утилиту или её исходный код можно скачать на официальном сайте. OpenVPN работает при помощи сертификатов и асимметричного шифрования. То есть передаваемые данные шифруются одним ключом, а расшифровываются другим.

Пара ключей шифрования

Для того чтобы такая пара ключей работала, они должны быть подписаны центром авторизации (certification authority, CA). При этом CA имеет свой сертификат и приватный ключ, которые нужны для идентификации созданной пары ключей.

Что нужно для работы OpenVPN

Для настройки VPN необходим виртуальный частный сервер (virtual private server, VPS/VDS). В качестве ОС будет использоваться Ubuntu — один из самых популярных и стабильных серверных дистрибутивов на базе Linux.

VPS можно арендовать у подходящего хостинг-провайдера. При выборе виртуального сервера важно, чтобы он подходил под следующие условия:

  • Оперативная память (RAM) — не менее 512 МБ.
  • Скорость сетевого интерфейса — 100 мб/сек или выше.
  • Физический сервер должен находиться максимально близко к будущему пользователю. Это обеспечит минимальную задержку (пинг) и позволит соответствовать местным законам.

Такие факторы, как объём постоянной памяти и тип накопителя, практически не имеют значения.

Установка OpenVPN

Подготовка

Установка OpenVPN на Ubuntu 18.04 начинается с установки пакетов OpenVPN и Easy-rsa из репозитория. Утилита Easy-rsa необходима для управления ключами и сертификатами.

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

Теперь нужно выполнить установку OpenVPN и Easy–rsa:

Также в процессе работы пригодится пакет NetTOOLS, включающий в себя все необходимые сетевые инструменты. Установка выполняется командой:

Настройка центра сертификации

Настройка сервера OpenVPN на Ubuntu начинается с установки центра сертификации и создания корневого сертификата:

При выполнении последней команды программа попросит пользователя придумать пароль. Созданный код доступа будет использоваться в последующих действиях для подписи сертификатов и ключей.

В результате создаются файлы:

  • /etc/openvpn/easy-rsa/pki/ca.crt – сертификат CA. Он необходим клиентам и серверу для проверки подписи CA.
  • /etc/openvpn/easy-rsa/pki/private/ca.key – приватный ключ CA.

Для удобства нужно создать каталог, в котором будут храниться все необходимые сертификаты и ключи OpenVPN:

Теперь необходимо скопировать корневой сертификат OpenVPN в созданную папку:

Ключи OpenVPN для сервера

Генерация ключей для сервера OpenVPN выполняется следующей командой:

Далее созданный сертификат подписывается ключом CA:

Появится предупреждение с запросом подтвердить подпись. Нужно написать «yes» и ввести пароль центра сертификации.

Созданные файлы копируются в каталог для сертификатов:

Теперь нужно создать файл параметров Diffie–Hellman:

Последним создаётся ключ HMAC (hash-based message authentication code):

Теперь в папке, созданной для хранения сертификатов, должно быть 5 файлов. Проверить их наличие можно командой:


Создание ключей клиентов OpenVPN

Сгенерировать ключи и выполнить их подпись можно следующей командой:

На вопрос о намерении подписать нужно ответить «yes» и ввести пароль CA.

Запуск сервера OpenVPN

Создание конфигурационного файла OpenVPN

Для настройки OpenVPN нужно создать файл конфигурации клиента:

Далее в него копируется следующий конфиг OpenVPN сервера:

Параметр «server» в приведённом примере не является константой и может изменяться, в зависимости от наличия свободных адресов подсетей. Eсли же один диапазон адресов (например, 10.x.0.0 255.255.255.0) уже занят локальными машинами, нужно выбрать другой (где переменная «x» будет задана в промежутке от 1 до 255).

Теперь файл необходимо сохранить и закрыть. Для этого нужно воспользоваться сочетанием клавиш «Ctrl+X», затем «Y» и подтвердить операцию нажатием «Enter».

Тестирование сервера OpenVPN

Создание сервера OpenVPN завершено. Перед тем как подключиться к нему, остаётся только проверить созданный конфигурационный файл на наличие ошибок. Для этого нужно произвести тестовый запуск:

Проверка конфигурации OpenVPN

Если всё в порядке, то можно запускать службу OpenVPN сервера для постоянной работы. Также нужно добавить программу в автозагрузку, чтобы развёртывание OpenVPN осуществлялось при каждом запуске системы. Все это делается двумя командами:

Команда systemctl использует формат вида « openvpn–server@<configuration>.service ». Где «<configuration>» – конфигурация из папки «/etc/openvpn/» без расширения .conf.

Получить информацию о работе службы можно с помощью команды:

Статус службы OpenVPN

Включение маршрутизации трафика на OpenVPN сервере

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

Для начала создаётся файл «vpn_route.sh» а каталоге «/root/bin/».

Если папка отсутствует, её необходимо создать:

Далее, в открывшийся файл, нужно внести конфигурацию:

Параметр «PRIVATE» в приведённом примере не является константой и может изменяться, в зависимости от наличия свободных адресов подсетей. Eсли же один диапазон адресов (например, 10.x.0.0/24) уже занят локальными машинами, нужно выбрать другой (где переменная «x» будет задана в промежутке от 1 до 255). В случае изменения значения подсети в «vpn_route.sh» нужно обязательно соотнести новое значение с тем, что прописано в конфигурационном файле OpenVPN «/etc/openvpn/server.conf» (параметр «server»).

После сохранения нужно сделать файл исполняемым:

Далее проводится пробный запуск скрипта для выявления ошибок:

Если всё в порядке, то остаётся добавить добавить созданный скрипт в автозагрузку. Для этого нужно создать службу systemd:

В открывшийся файл вносятся следующие данные:

Теперь нужно добавить созданную службу в автозагрузку:

Настройка клиента OpenVPN сервера

Перенос ключей и сертификатов

На данном этапе настройки конфигурации OpenVPN необходимо разместить ранее созданные файлы на клиентском компьютере.

Если клиент OpenVPN на Windows, создается папка по пути «C:\Program Files\OpenVPN\certs\». В нее перемещаются следующие элементы:

  • Файлы ca.crt и ta.key из папки /etc/openvpn/certs.
  • Файл client1.crt из папки /etc/openvpn/easy-rsa/pki/issued.
  • Файл client1.key из папки /etc/openvpn/easy-rsa/pki/private/.

Кстати. Выполнить перенос данных можно с помощью FTP-клиента WinSCP.

Если клиент работает на Ubuntu, файлы переносятся следующим образом:

  1. С сервера из папки /etc/openvpn/certs файлы ca.crt и ta.key, копируются в папку /etc/openvpn/certs.
  2. С сервера из папки /etc/openvpn/easy-rsa/pki/issued/ файл client1.crt, копируются в папку /etc/openvpn/certs.
  3. С сервера из папки /etc/openvpn/easy-rsa/pki/private/ файл client1.key, копируется в папку /etc/openvpn/certs.

Настройка OpenVPN на Windows

Клиент для Windows можно скачать с официального сайта.

Ранее в папку «C:\Program Files\OpenVPN\certs\» были перемещены сертификаты и ключи для подключения к OpenVPN серверу. Теперь необходимо добавить конфигурацию для работы программы. Для этого нужно создать в папке «C:\Program Files\OpenVPN\config\» файл «client.ovpn» и добавить в него следующие строки:

После сохранения остаётся выбрать в программе профиль «client» и нажать «Подключиться» для установки соединения с сервером.

Настройка клиента на Ubuntu

Клиент OpenVPN поставляется совместно с серверной частью, поэтому при установке указывается тот же пакет, что и в начале статьи – «openvpn»:

Ранее ключи уже были сгенерированы (ca.crt, client1.crt, client1.key, ta.key) и перемещены в папку «/etc/openvpn/certs/». Проверить их наличие можно следующей командой:

Если все 5 файлов присутствуют, то можно переходить к созданию конфигурационного файла OpenVPN client:

В открывшийся файл настроек необходимо внести следующую конфигурацию:

Перед тем как запустить OpenVPN, нужно заменить некоторые значения на собственные. Далее файл сохраняется и закрывается.

Выполнить тестовый запуск клиента с указанными параметрами можно следующей командой:

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

Проверка статуса службы:

Добавление службу в автозагрузку:

Остановка службы VPN:

Удаление из автозагрузки:

Встраивание сертификатов в файл .ovpn

Содержимое сертификатов и ключей можно указать в конфигурационном файле .ovpn. Это позволяет использовать только один документ для переноса всех аутентификационных данных, что существенно ускоряет процесс подготовки клиентской части.

Данные сертификатов заносятся в парные теги, которые имеют такое же наименование, как и стандартные опции (ca, cert, dh, tls–auth, key и т. д.). Далее это будет показано на примере ранее созданного конфигурационного файла client.conf.

Для начала нужно удалить из файла прописанные сертификаты и ключи:

Так как «tls–auth» – дополнительная опция, то её необходимо добавить отдельной строкой, введя:

Далее нужно создать парные теги, как ниже, и перенести данные о ключах:

Вместо многоточия указывается содержание публичного или приватного ключа между заголовками «BEGIN» и «END».

Встраивание сертификатов в файл .ovpn

После сохранения настроек файл можно передать клиентам OpenVPN.

Заключение

Своя собственная VPN сеть позволяет обезопасить передаваемые личные данные в огромном потоке информации, а также даст доступ практически ко всем ресурсам Всемирной паутины.

Настроить OpenVPN на Ubuntu для создания своей собственной сети достаточно легко. Нужно лишь внимательно следует следовать приведённой инструкции и правильно выбрать поставщика хостинг-услуг.

Виртуальные сервера Eternalhost — проверенное решение для создания собственной сети VPN! Оперативная техподдержка 24/7 и бесплатная защита от DDoS.

L2TP VPN

VPN или виртуальная частная это защищенное соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Для предприятий VPN сервер обеспечивает безопасный обмен конфиденциальной информацией между сотрудниками, работающими удаленно, и офисной сетью. При помощи VPN работник может использовать офисную инфраструктуру, например принтер или локальное хранилище документов, не доступную в Интернет, словно он находится в офисе. В этой статье мы покажем два способа настройки VPN сервера под Ubuntu и Centos и поможем настроить клиенты под Windows, Android и Linux.

Оглавление

Что такое VPN и для чего его можно использовать

VPN или виртуальная частная сеть (англ. virtual private network) — это соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Такое соединение (еще его называют VPN-туннель) зашифровано стойкими алгоритмами, его работа построена на специальных протоколах, таких как, PPTP, OpenVPN, L2TP. В данной статье мы детально рассмотрим, как настроить VPN на протоколах L2TP/IPsec

L2TP (Layer 2 Tunneling Protocol) — это сетевой протокол, работающий на канальном уровне модели OSI, который позволяет настроить сеть VPN с использованием UDP порта 1701. Сам по себе, L2TP не содержит средств для шифрования данных и аутентификации пользователей, поэтому L2TP всегда используется вместе с протоколом IPSeс.

IPSec (IP Security) — семейство протоколов, которые служат для защиты информации и предназначены для аутентификации пользователей в сети, осуществления проверки целостности информации и для шифрования IP-пакетов. В плане применения для создания VPN-тунелей, IPsec необходим и для организации защищенного механизма обмена ключами в Интернете.

Сервисы VPN, как правило, используют для следующих целей:

  • для защиты своей приватной информации в сети Интернет;
  • для обхода блокировок сайтов и сервисов;
  • для организации безопасного удаленного доступа сотрудников к корпоративной сети предприятия.

Компания FREEhost.UA предоставляет VPS/VDS в аренду для разворачивания VPN серверов именно для корпоративного использования. Ниже мы подробно расскажем, как настроить свой L2TP IPSec сервер VPN на наших VPS двумя способами (с помощью автоматического скрипта и вручную), а также остановимся на особенностях настройки VPN клиентов под разные ОС (Windows, Linux, Андроид).

Как поднять свой VPN-сервер под Ubuntu (CentOS) с помощью скрипта

Покажем на практике, как настроить свой L2TP IPsec server на VPS под управлением Ubuntu 20 или под Centos 8 простым способом, используя готовый скрипт. Данный метод подойдет даже новичкам в системном администрировании, для начала можно ознакомиться с информацией от разработчика скрипта IPsec VPN Server Auto Setup Scripts на ресурсе GitHub. В скрипте используются протоколы IPsec (Libreswan) и L2TP (xl2tpd).

Развертывание скрипта на Ubuntu server и CentOS server

Данный скрипт проверен на работоспособность для следующих версий ОС:

Ubuntu 20.04 (Focal), 18.04 (Bionic), 16.04 (Xenial), а также для CentOS 8/7/6. Перед тем, как начать инсталляцию, выполните обновления на серверной ОС Ubuntu и перезагрузите сервер. В случае с CentOS 8, воспользуйтесь командой:

Затем запустите скрипт следующей командой:

В автоматическом режиме скрипт создаст готовый L2TP VPN-server, а также сгенерирует учетные данные для доступа к серверу VPN (см. пример ниже):

L2TP VPN-server создан скриптом под ОС Ubuntu

Если вы хотите выполнить скрипт со своими учетными данными для доступа к VPN-серверу, то запустите команду и затем отредактируйте файл vpnsetup.sh в редакторе Nano.

Вместо этих переменных впишите свои данные: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD.

*Примечание: IPsec PSK должен состоять как минимум из 20 случайных символов.

В случае с CentOS редактируем файл vpnsetup_centos.sh.

Также можно определить свои учетные данные, как переменные среды, см. пример ниже:

Итак, работы на сервере завершены, учетные данные для входа получены, сейчас предстоит настроить VPN клиент на своем компьютере (или смартфоне) для получения доступа к нашему серверу ВПН.

Как настроить собственный VPN-сервер под Ubuntu вручную

Можно развернуть собственный ВПН сервер на VPS под управлением Ubuntu (версии 18 и 20) вручную, для этого воспользуемся пакетом strongSwan, который предназначен для реализации IPSec на различных платформах. Для начала, как обычно, выполним обновление серверной ОС:

Затем приступаем к настройкам.

1. Инсталлируем strongSwan командой*:

*Примечание: в процессе инсталляции отвечайте «нет» на запросы об установке сертификата во всех диалоговых окнах.

Инсталляция strongSwan

2. Затем установим модуль xl2tpd для реализации протокола L2TP:

Инсталляция xl2tpd

3. Выполним автозагрузку этих пакетов:

Автозагрузка xl2tpd и ipsec

4. В редакторе Nano выполним редактирование конфигурационного файла IPSec:

Вписываем в файл следующие строки (соблюдая все отступы):

*Примечание: в параметр left вместо SERVER.IP подставьте IP адрес своего VPS.

Редактирование конфигурационного файла IPSec

5. Прописываем общий ключ IPsec PSK, для этого запускаем следующий файл на редактирование:

где: SERVER.IP IP — адрес вашего VPS;

Прописываем общий ключ IPsec PSK

6. Создаем скрипт для настройки сетевого подключения к VPN-серверу, для этого открываем для редактирования файл:

Вносим туда следующие команды:

Cкрипт для настройки сетевого подключения к VPN-серверу

7. Затем выполняем следующие команды, чтобы сделать данный скрипт исполняемым:

Включаем rc.local (он выключен в Ubuntu 20), для этого отредактируем файл:

Включаем rc.local

Делаем этот файл исполняемым:

Добавляем этот скрипт в /etc/rc.local и запускаем его:

Добавление скрипта в rc.local

8. Перезагружаем список доступных демонов и включаем в автозагрузку rc-local:

9. Выполним настройку L2TP, для чего c помощью следующей команды отредактируем файл xl2tpd.conf:

Вписываем эти строки в файл:

Редактирование файла xl2tpd.conf

10. Настраиваем авторизацию PPP, для этого произведем редактирование файла:

Вносим в редакторе следующие строки:

где: параметр name — название нашего VPN сервера (к примеру, VPNTEST20)

Настройка авторизации PPP

11. На следующем этапе, добавим пользователей в файл chap-secrets и укажем их логины и пароли (на примере одного пользователя с логином uservpn1 и паролем password1):

Добавление пользователей в файл chap-secrets

12. Проводим рестарт всех настроенных сервисов:

Рестарт всех настроенных сервисов

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

Настройка VPN клиента

1. Как настроить клиент VPN под Windows

Настройка клиента в Windows 10

Для начала, откроем меню «Параметры сети и Интернет», затем добавляем в подменю "VPN" новое подключение (кнопка "+"). Заполняем следующие пункты настроек:

Имя подключения — введем новое название для нашего VPN соединения.

Имя или адрес сервера — вносим IP нашего сервера.

Тип VPN — из списка выберем «L2TP/IPsec с общим ключом».

Общий ключ — вводим наш IPsec PSK

Тип данных для входа — выберем «имя пользователя и пароль».

Имя пользователя и пароль — заполняем эти пункты.

На скриншоте показано, как сделать данные настройки:

Настройка клиента VPN под Windows 10

Нажимаем кнопку «Сохранить» и переходим к дальнейшим действиям. Правой клавишей мыши щелкаем по иконке «Монитор» (или по значку Wi-Fi) в правом нижнем углу рабочего стола Windows и выбираем пункт: Открыть «Параметры сети и Интернет», далее в меню «Дополнительные сетевые параметры», открываем пункт «Настройка параметров адаптера» и затем — «Сетевые подключения». Находим значок с нашим VPN соединением ("L2TP Ubuntu 18", как в примере, см. скриншот) и правой клавишей мыши выбираем пункт «Свойства».

Настройка клиента VPN под Windows 10, сетевые подключения.

Заполняем вкладку «Общие» (IP адрес нашего VPN-сервера, как на рис. ниже):

Настройка клиента VPN, сетевые подключения, свойства, вкладка «Общие»

Следующий шаг — настройка вкладки «Безопасность», см. рис. ниже:

Настройка клиента VPN, сетевые подключения, свойства, вкладка «Безопасность»

Затем открываем «Дополнительные параметры» и вносим туда «Общий ключ» (значение IPsec PSK), см. как на скриншоте ниже:

Настройка клиента VPN, сетевые подключения, свойства, вкладка «Дополнительные свойства»

Нажимаем клавишу «ОК» и пробуем осуществить подключение к VPN server.

Проблемы с VPN соединением в Windows 10

Часто в Windows 10 не удается соединиться с удаленным VPN-сервером (ошибка 809), потому что сетевое устройство, которое находится между локальным компьютером и удаленным сервером (это может быть роутер, NAT, межсетевой экран и т.д.) не настроено на разрешение подключений по VPN, см. рис. ниже:

Проблема соединения с VPN-сервером в Windows 10

Эту проблему можно решить путем внесения правок в реестр Windows, для этого нужно вызвать редактор реестра (команда regedit в меню «Выполнить», вызывается правой клавишей мыши в меню «Пуск») и внести вот такие изменения в ветку реестра (см. скриншот ниже):

Внесение изменений в реестр Windows 10

Затем необходимо перезагрузить компьютер и еще раз произвести соединение с VPN-сервером, на этот раз соединение проходит успешно, система показывает состояние «Подключено»:

Успешное подключение к VPN-server

Проверка IP на https://2ip.ru

2. Как настроить клиент VPN под Linux

Попробуем произвести настройку клиента VPN на локальной машине под управлением ОС Ubuntu 20. Итак, выполним следующие действия.

1. Откроем терминал и установим необходимые пакеты для работы с протоколом L2TP:

Установка пакетов для работы с протоколом L2TP

Установка пакетов для работы с протоколом L2TP под Ubuntu 20

2. На следующем шаге, открываем «Настройки», выбираем пункт меню «Сеть» — VPN, нажимаем на «+», чтобы добавить новое VPN подключение. Затем необходимо выбрать протокол: “Layer 2 Tunneling Protocol (L2TP)”.

Настройка L2TP под Ubuntu 20 на компьютере пользователя

3. Сейчас необходимо настроить параметры IPSec, для этого выполним настройки, как показано на картинке ниже:

Вводим «Название» для VPN-соединения, «Шлюз» (IP адрес VPN server), заполняем раздел «Аутентификация пользователя» (вносим наши учетные данные — логин и пароль).

Настройка параметров для аутентификации пользователя

4. На следующим этапе нужно заполнить «Настройки IPsec» (внести значение «Общего ключа» IPsec PSK).

Настройка параметров L2TP IPSec

Также можно заполнить раздел “Advanced”, как показано на скриншоте ниже:

Настройка параметров L2TP IPSec, раздел Advanced

3. Как настроить клиент VPN под Android

Для работы через VPN на смартфоне, первым делом, нужно добавить новый профиль VPN в меню «Настройки» — «Подключения» — «Другие настройки» — «VPN».

После этого, необходимо заполнить этот профиль (внести название соединения, IP адрес ВПН сервера, общий ключ IPsec, логин и пароль, а также выбрать протокол L2TP/IPSec PSK), как на рис. ниже.

Клиент VPN под Android, настройки

Затем нужно подключиться к нашему Ubuntu L2TP IPsec server, при успешном соединении мы увидим вот такое окно:

Читайте также: