Как поднять свой 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 символов.
После внесения указанных настроек перезапустим службу:
В 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-сервера:
Заключительным этапом настройки будет создание учетных записей для удаленных клиентов, для этого откроем файл /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 — для нашего случая, выбираем 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 осуществлялось при каждом запуске системы. Все это делается двумя командами:
Команда systemctl использует формат вида « openvpn–server@<configuration>.service ». Где «<configuration>» – конфигурация из папки «/etc/openvpn/» без расширения .conf.
Получить информацию о работе службы можно с помощью команды:
Включение маршрутизации трафика на 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, файлы переносятся следующим образом:
- С сервера из папки /etc/openvpn/certs файлы ca.crt и ta.key, копируются в папку /etc/openvpn/certs.
- С сервера из папки /etc/openvpn/easy-rsa/pki/issued/ файл client1.crt, копируются в папку /etc/openvpn/certs.
- С сервера из папки /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».
После сохранения настроек файл можно передать клиентам OpenVPN.
Заключение
Своя собственная VPN сеть позволяет обезопасить передаваемые личные данные в огромном потоке информации, а также даст доступ практически ко всем ресурсам Всемирной паутины.
Настроить OpenVPN на Ubuntu для создания своей собственной сети достаточно легко. Нужно лишь внимательно следует следовать приведённой инструкции и правильно выбрать поставщика хостинг-услуг.
Виртуальные сервера Eternalhost — проверенное решение для создания собственной сети VPN! Оперативная техподдержка 24/7 и бесплатная защита от DDoS.
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 (см. пример ниже):
Если вы хотите выполнить скрипт со своими учетными данными для доступа к 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 командой*:
*Примечание: в процессе инсталляции отвечайте «нет» на запросы об установке сертификата во всех диалоговых окнах.
2. Затем установим модуль xl2tpd для реализации протокола L2TP:
3. Выполним автозагрузку этих пакетов:
4. В редакторе Nano выполним редактирование конфигурационного файла IPSec:
Вписываем в файл следующие строки (соблюдая все отступы):
*Примечание: в параметр left вместо SERVER.IP подставьте IP адрес своего VPS.
5. Прописываем общий ключ IPsec PSK, для этого запускаем следующий файл на редактирование:
где: SERVER.IP IP — адрес вашего VPS;
6. Создаем скрипт для настройки сетевого подключения к VPN-серверу, для этого открываем для редактирования файл:
Вносим туда следующие команды:
7. Затем выполняем следующие команды, чтобы сделать данный скрипт исполняемым:
Включаем rc.local (он выключен в Ubuntu 20), для этого отредактируем файл:
Делаем этот файл исполняемым:
Добавляем этот скрипт в /etc/rc.local и запускаем его:
8. Перезагружаем список доступных демонов и включаем в автозагрузку rc-local:
9. Выполним настройку L2TP, для чего c помощью следующей команды отредактируем файл xl2tpd.conf:
Вписываем эти строки в файл:
10. Настраиваем авторизацию PPP, для этого произведем редактирование файла:
Вносим в редакторе следующие строки:
где: параметр name — название нашего VPN сервера (к примеру, VPNTEST20)
11. На следующем этапе, добавим пользователей в файл chap-secrets и укажем их логины и пароли (на примере одного пользователя с логином uservpn1 и паролем password1):
12. Проводим рестарт всех настроенных сервисов:
13. Перезагружаем сервер и пробуем подсоединиться к нашему VPN-серверу с помощью клиента (про настройки клиентов читайте в следующих разделах нашей статьи).
Настройка VPN клиента
1. Как настроить клиент VPN под Windows
Настройка клиента в Windows 10
Для начала, откроем меню «Параметры сети и Интернет», затем добавляем в подменю "VPN" новое подключение (кнопка "+"). Заполняем следующие пункты настроек:
Имя подключения — введем новое название для нашего VPN соединения.
Имя или адрес сервера — вносим IP нашего сервера.
Тип VPN — из списка выберем «L2TP/IPsec с общим ключом».
Общий ключ — вводим наш IPsec PSK
Тип данных для входа — выберем «имя пользователя и пароль».
Имя пользователя и пароль — заполняем эти пункты.
На скриншоте показано, как сделать данные настройки:
Нажимаем кнопку «Сохранить» и переходим к дальнейшим действиям. Правой клавишей мыши щелкаем по иконке «Монитор» (или по значку Wi-Fi) в правом нижнем углу рабочего стола Windows и выбираем пункт: Открыть «Параметры сети и Интернет», далее в меню «Дополнительные сетевые параметры», открываем пункт «Настройка параметров адаптера» и затем — «Сетевые подключения». Находим значок с нашим VPN соединением ("L2TP Ubuntu 18", как в примере, см. скриншот) и правой клавишей мыши выбираем пункт «Свойства».
Заполняем вкладку «Общие» (IP адрес нашего VPN-сервера, как на рис. ниже):
Следующий шаг — настройка вкладки «Безопасность», см. рис. ниже:
Затем открываем «Дополнительные параметры» и вносим туда «Общий ключ» (значение IPsec PSK), см. как на скриншоте ниже:
Нажимаем клавишу «ОК» и пробуем осуществить подключение к VPN server.
Проблемы с VPN соединением в Windows 10
Часто в Windows 10 не удается соединиться с удаленным VPN-сервером (ошибка 809), потому что сетевое устройство, которое находится между локальным компьютером и удаленным сервером (это может быть роутер, NAT, межсетевой экран и т.д.) не настроено на разрешение подключений по VPN, см. рис. ниже:
Эту проблему можно решить путем внесения правок в реестр Windows, для этого нужно вызвать редактор реестра (команда regedit в меню «Выполнить», вызывается правой клавишей мыши в меню «Пуск») и внести вот такие изменения в ветку реестра (см. скриншот ниже):
Затем необходимо перезагрузить компьютер и еще раз произвести соединение с VPN-сервером, на этот раз соединение проходит успешно, система показывает состояние «Подключено»:
2. Как настроить клиент VPN под Linux
Попробуем произвести настройку клиента VPN на локальной машине под управлением ОС Ubuntu 20. Итак, выполним следующие действия.
1. Откроем терминал и установим необходимые пакеты для работы с протоколом L2TP:
2. На следующем шаге, открываем «Настройки», выбираем пункт меню «Сеть» — VPN, нажимаем на «+», чтобы добавить новое VPN подключение. Затем необходимо выбрать протокол: “Layer 2 Tunneling Protocol (L2TP)”.
3. Сейчас необходимо настроить параметры IPSec, для этого выполним настройки, как показано на картинке ниже:
Вводим «Название» для VPN-соединения, «Шлюз» (IP адрес VPN server), заполняем раздел «Аутентификация пользователя» (вносим наши учетные данные — логин и пароль).
4. На следующим этапе нужно заполнить «Настройки IPsec» (внести значение «Общего ключа» IPsec PSK).
Также можно заполнить раздел “Advanced”, как показано на скриншоте ниже:
3. Как настроить клиент VPN под Android
Для работы через VPN на смартфоне, первым делом, нужно добавить новый профиль VPN в меню «Настройки» — «Подключения» — «Другие настройки» — «VPN».
После этого, необходимо заполнить этот профиль (внести название соединения, IP адрес ВПН сервера, общий ключ IPsec, логин и пароль, а также выбрать протокол L2TP/IPSec PSK), как на рис. ниже.
Затем нужно подключиться к нашему Ubuntu L2TP IPsec server, при успешном соединении мы увидим вот такое окно:
Читайте также: