Разное

Pptp или l2tp: Разбираемся в VPN протоколах / Блог компании Digital Security / Хабр

Содержание

какой протокол лучше и в чем состоят различия между ними – База знаний Timeweb Community

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

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

Что такое VPN

Virtual Private Network (Частная Виртуальная Сеть) — это расширение для публичной сети, позволяющее имитировать еще одну сеть поверх уже существующей, к которой может подключаться ограниченное количество устройств.

Обычно «виртуальное» подключение формируется между локальным компьютером и сервером. После этого подключенные системы получают преимущества приватной сети. Уровень доверия к ней многократно возрастает благодаря используемым механизмам защиты трафика. И это несмотря на низкий уровень доверия к сети, на базе которой строится VPN. После подключения к VPN можно управлять защищенными файлами, доступными только для членов сети, скрывать исходящий трафик и шифровать его. 

Основные сценарии использования VPN

  • Изначально VPN разрабатывалась для офисов и крупных корпораций, чтобы сотрудники могли подключаться к корпоративной сети и работать удаленно, используя мобильные устройства и домашние компьютеры. Их защищают с помощью технологий туннелинга.
  • Потом эти возможности начали использоваться для обхода разного рода блокировок. Например, региональные ограничения от сервисов в духе Pandora, Hulu, Amazon и Tidal. Или блокировки со стороны государства, запрещающие посещать те или иные ресурсы в связи с действующим законодательством.
  • Также с помощью VPN строятся защищенные каналы связи между удаленными офисами. Например, если штаб-квартира компании находится в Лондоне, а один из филиалов в Уэльсе, то для их безопасного (защищенного от вмешательства третьих лиц) обмена данными потребуется VPN.

Что такое VPN-протокол?

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

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

На какие критерии оценки VPN-протоколов стоит обратить внимание

У каждого протокола свой набор характеристик, исходя из которых нужно выбирать для себя подходящий. Среди них:

  • Поддерживаемые платформы — протоколы могут быть достаточно специфичны и функционировать исключительно на одной-двух операционных системах. Другие же поддерживают сразу все доступные ОС.
  • Поддерживаемые сети — не все протоколы работают в идентичных сетях. Некоторые VPN-сервисы предлагают свои услуги только в конкретных странах ввиду технологических ограничений, введенных, в том числе, государственными органами.
  • Скорость работы — тоже зависит от архитектуры протокола. Есть те, что быстрее передают данные на мобильных устройствах. Есть те, что показывают пиковую производительность только в масштабах больших корпоративных сетей. 
  • Безопасность — в протоколах по-разному реализовано шифрование и другие механизмы обеспечения безопасности данных. Поэтому, в зависимости от поставленных задач, надо выбирать технологию, наименее подверженную распространенным для нее атакам.

Теперь от общего описания форматов и характеристик перейдем к конкретным технологическим решениям и к их особенностям.

Кратко о существующих протоколах

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

  • OpenVPN — сбалансированный вариант. Он быстрее остальных и гораздо меньше подвержен атакам со стороны злоумышленников. Топовые VPN-сервисы базируют свои продукты на основе этого протокола.
  • L2TP/IPsec во многом похож на OpenVPN. В меру быстрый, в меру безопасный. Но это «в меру» как раз все портит. Это не значит, что его стоит бояться или он как-то серьезно подвергает опасности вашу конфиденциальность в сети. Для некритичных задач его хватит с головой. Но надо иметь в виду, что этот протокол уступает по безопасности OpenVPN. В текущей ситуации нужен как альтернатива на случай, когда более подходящий протокол недоступен.
  • IKEv2/IPsec — альтернатива вышеперечисленным протоколам, адаптированная под работу на мобильных устройствах. Ее преимущество заключается в возможности быстро переподключиться к сети после потери сигнала. Такое может происходить на нулевых этажах торговых центров, в туннелях, метро и других местах с недостаточной «проницаемостью». IKEv2 скоростной, но работает не на всех платформах и сложен в настройке.
  • SSTP разработан компанией Microsoft и работает только с ее программным обеспечением. Настроить его в сторонних операционных системах чересчур сложно, да и не все хотят иметь дело с технологическими корпорациями в таком вопросе, как VPN. Если же причастность Microsoft не смущает, и на компьютере установлена Windows, то это будет сносным выбором.
  • PPTP — еще один продукт. Устаревший протокол, который больше не используется глобально. Пригодится только за отсутствием альтернатив.
  • WireGuard — перспективная новинка, во много схожая с OpenVPN, но обгоняющая его по всем параметрам (от скорости передачи файлов до изощренности методов шифрования).
  • SoftEther — еще один современный стандарт VPN. Быстрый, отказоустойчивый, обеспечивающий хорошее шифрование.

Далее разберем каждый протокол подробнее. Ознакомимся с принципами работы, степенью защищенности, производительностью и другими аспектами VPN-технологий.

OpenVPN

Золотой стандарт среди действующих VPN-протоколов. Хорош сразу по всем фронтам:

  • Он универсален. Его можно использовать в разных целях, независимо от того, нужен ли вам виртуальный «офис», защищенный от сторонних глаз, или безопасный туннель для подключения к заблокированным ресурсам.
  • OpenVPN создан независимой командой разработчиков из OpenVPN Technologies. Главное преимущество протокола — открытый исходный код. Ему он обязан дикой популярностью. Opensource-сущность помогла этой технологии пройти десятки независимых аудитов от фирм, занимающихся безопасностью. Этому помогли кастомные методы шифрования, поддержка SSL и алгоритмов AES-256-GCM.
  • Также он обеспечивает скорость передачи данных выше, чем у конкурентов. Многие сервисы, базирующие свои VPN-серверы на базе OpenVPN, обеспечивают передачу зашифрованного контента на скорости до 2000 Мбит в секунду.
  • В работе OpenVPN задействуются технологии TCP и UDP, благодаря чему стандарт можно задействовать в качестве альтернативы для других протоколов, когда описываемый стандарт заблокирован на стороне провайдера. А еще он работает стабильно и реже остальных теряет соединение с интернетом (в этом тоже помогает поддержка TCP).

Для настройки и запуска OpenVPN нужен клиент, то есть программное обеспечение, адаптированное под работу с протоколом. Использовать встроенные системные инструменты не получится. Благо клиентских приложений, поддерживающих эту технологию, хватает. И они доступны на Windows, macOS, Linux, iOS и Android. В зависимости от количества подключений OpenVPN может быть бесплатным, но бизнес-клиентам придется заплатить.

Протокол находится в активной разработке, постоянно обрастает обновленными стандартами защиты и повышениями производительности. 

Мы уже писали ранее о том, как установить OpenVPN на свой сервер с Ubuntu.  И даже рассказали о том, как настроить собственный туннель.  

PPTP

Point-to-Point Tunneling Protocol — старая технология, которая давно перешла в разряд винтажных и сейчас практически не используется. Была создана компанией Microsoft в 1999 году. 

Протокол устанавливает стандартное двухканальное соединения типа PPP между устройствами, а потом передает данные через инкапсуляцию по методу Generic Routing Encapsulation. Параллельно с этим действует соединение по TCP-порту. Первое используется непосредственно для передачи информации, второе нужно для управления подключением.

PPTP сложен в настройке и в управлении. К примеру, из-за необходимости поддерживать сразу две сетевые сессии с трудом получается перенаправлять сигнал на сетевой экран. Из-за спецификаций GRE и других компонентов протокола страдает безопасность. 

Несмотря на наличие поддержки MS-CHAPv2 и EAP-TLS для авторизации пользователей, PPTP остается небезопасным VPN-протоколом, не рекомендуемым к использованию для решения серьезных задач. Подобрать ключ и получить доступ к частной сети можно примерно за 23 часа с помощью профильного онлайн-сервиса. 

В свое время эта технология обрела успех благодаря поддержке со стороны Microsoft и внедрению PPTP в Windows по умолчанию. Для настройки не требовались сторонние клиенты и программные инструменты, но в связи с появлением более надежных альтернатив в духе OpenVPN, популярность PPTP начала снижаться. Сейчас даже Microsoft рекомендует использовать продукты конкурентов и прекратить эксплуатировать PPTP ввиду его незащищенности и нестабильности. 

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

SSTP

Secure Socket Tunneling Protocol — модифицированная версия PPTP. Эдакая надстройка старого протокола, которая должна была стать не только духовным продолжением ранее существовавшей технологии, но и исправлением всех ошибок, допущенных в «предыдущей версии».  

Сколько-то заметной популярности протокол не сыскал. Доля на рынке VPN у SSTP такая же скромная, как и у предыдущей итерации протокола Microsoft. Но у него есть преимущество в виде отсутствия критических проблем с безопасностью. Таких зияющих дыр в нем нет и перехватить трафик гораздо сложнее. 

Помогает SSL-шифрование. При подключении к SSTP вся информация отправляется через TCP-порт 443. Такой подход делает его полезным при необходимости создавать безопасные подключения со странами, где большая часть VPN-сервисов заблокирована или запрещена законом. 

Многочисленные тестирования показали, что SSTP может передавать данные на высокой скорости (если канал свободен) и быстро восстанавливать соединение, если то неожиданно оборвалось. По этим показателям протокол стремится к OpenVPN, но не дотягивает ввиду некоторых ограничений технологии. 

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

Secure Socket Tunneling Protocol доступен на операционных системах Windows, Linux и BSD, но поддерживается ограниченным количеством сервисов. Их тяжело найти, а еще они зачастую обходятся дороже альтернатив. Отсюда и скромная аудитория SSTP, которая и не планирует расти в ближайшем будущем из-за продвинутости конкурентов. 

IPsec

Internet Protocol Security представляет собой не одну технологию, а набор протоколов. Каждый из них помогает обеспечить безопасность информации, передаваемой по IP-сети.  По сути, они не создавались для организации VPN-соединений, это одно из нескольких применений.

Прелесть IPsec заключается в его упрощенной настройке. Благодаря своей архитектуре и работе на сетевом уровне не возникает потребности в подключении сторонних клиентов. VPN на базе Internet Protocol Security можно «поднять» во всех операционных системах встроенными средствами – через параметры ОС. Это его главное преимущество над OpenVPN.

Безопасность IPsec достигается за счет работы двух механизмов. 

  1. Authentication Header – ставит цифровую подпись каждой единице данных, передаваемой через VPN-соединение.
  2. Encapsulating Security Protocol – защищает целостность передаваемой информации и конфиденциальность пользователей протокола.

IPsec используется в тандеме с другими техническими решениями. Зачастую речь идет о комбинировании технологий IPsec и L2TP или об IPsec + IKEv2.

IPsec/L2TP

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

IPsec/IKEv2

Разработан командой разработчиков из Microsoft и Cisco, но имеет несколько вариаций с открытым исходным кодом, написанных независимыми программистами. IKEv2 хорош наличием поддержки Mobility and Multi-homing Protocol. Это делает его устойчивым к смене сетей, это поможет владельцам смартфонам оставаться на связи даже при выходе в сеть через VPN. Подключение к VPN-серверу не обрывается при смене роутера, к которому подключен гаджет или смене точки доступа во время поездок. 

IKEv2 поддерживает методы шифрования AES, Blowfish и Camellia. В этом плане он не отличается от L2TP. Так что уровень защищенности от атак извне у них идентичный. Также он потребляет меньше ресурсов, чем условный OpenVPN, и от этого демонстрирует более высокую скорость передачи данных. По умолчанию поддерживается в Windows 7 и новее, в macOS Lion и новее, в iOS и в ряде смартфонов на базе Android.

WireGuard

Новое поколение VPN-протоколов. Разработчики называют его ускоренной, надежной и простой в управлении альтернативой OpenVPN и другим используемым технологиям. Какого-то конкретного мнения по поводу WireGuard пока выражено не было. 

Известно, что в его основе лежит ворох технологий шифрования, бережно оберегающих каждый байт отправляемых данных. Используются Curve25519, ChaCha20, SipHash, BLAKE2 и Poly1305. Причем каждый из перечисленных типов криптографии берет на себя конкретную задачу. Допустим, Curve25519 необходим для обмена ключами, BLAKE2 занимается хэшированием информации, а Poly1305 задействуется для аутентификации.

 

WireGuard легковесный – он состоит всего из четырех тысяч строк кода. Поэтому разработчики при желании могут быстро его исследовать, проанализировать и даже поменять что-то. Это открытый стандарт, как и OpenVPN. Эта легковесность распространяется и на пользовательский опыт – люди охотно отмечают, что настроить WireGuard легче, чем остальные протоколы. 

По результатом бенчмарков, WireGuard обгоняет лидеров рынка. Разрыв между WG и OpenVPN впечатляет. 1011 Мбит в секунду против 258 Мбит в секунду соответственно. С IPsec разница не такая большая, но она есть, и как раз в пользу WireGuard.

SoftEther

Недавняя разработка из Цукубского университета. Кроссплатформенный японский VPN-проект, который бок о бок с WireGuard стремится выйти на первые позиции, обойдя OpenVPN. 

Хорош совместимостью с другими VPN-технологиями. Может работать в комбинациях с IPsec, EtherIP, L2TP. Из дополнительных функций предлагает: динамический DNS, встроенный фильтр пакетов, удобную панель управления и контроль над RPC через HTTPS. А еще он без проблем обходит чересчур бдительные брандмауэры, мешающие нормальной работе сети даже в безопасных условиях. 

На SoftEther можно легко перебраться с OpenVPN за счет глубокой интеграции двух сервисов и функции клонирования в японском протоколе. 

Так же, как OpenVPN и WireGuard, имеет открытый исходный код и распространяется бесплатно.  

Сравнительная таблица протоколов

Закрепим новую информацию с помощью таблицы.








 

OpenVPN

PPTP

SSTP

IPsec

WireGuard

SoftEther

Создатели

OpenVPN Technologies

Microsoft

Microsoft

Cisco и другие

Джейсон Донфилд

Университет Цукуба

Тип лицензии

GNU GPL (открытый исходный код)

Проприетарная

Проприетарная

Зависит от реализации

GNU GPL (открытый исходный код)

Apache License 2. 0

Поддерживаемые платформы

Нативно не поддерживает ни одну ОС. Сторонние клиенты для настройки есть для Windows, Linux, macOS, iOS и Android

Windows, macOS, Linux и iOS без необходимости скачивать дополнительное ПО

Windows без необходимости скачивать дополнительное ПО

Windows, macOS, Linux и iOS без необходимости скачивать дополнительное ПО

Windows, macOS, Linux и iOS без необходимости скачивать дополнительное ПО

Windows, macOS, iOS, Linux и Android

Используемые порты

Любой TCP и UPD

TCP 1723

TCP 443

UDP 500, UDP 1701 (зависит от выполнимых задач)

Любой UPD

Любой TCP

Методы шифрования

Библиотека OpenSSL

Самый безопасный из доступных — MPPE

SSL

Самый безопасный из доступных — AES

Curve25519, ChaCha20, SipHash, BLAKE2 и Poly1305

SSL

Уязвимости

Не найдено

Атаки по словарю MSCHAP-V2 и Bit Flipping

Не найдено

Не найдено

Не найдено

Не найдено

Какой протокол выбрать?

Пока что фаворитом является OpenVPN. Он уже давно на рынке и успел себя зарекомендовать. Используется топовыми VPN-cервисами, работает на Android, iOS, Windows, macOS, Linux и даже на роутерах. Разве что на утюге не получится запустить. Скорость работы OpenVPN хоть и не поражает, но ее хватит для комфортной работы. 

Второе место я бы отдал WireGuard. Это пока еще темная лошадка, но зато с кучей бонусов. Он превосходит OpenVPN и IPsec по всем параметрам, но пока не вызывает такого доверия, как первый. Но это все же дело времени. Кажется, что в ближайшем будущем расстановка сил на рынке VPN-сервисов заметно скорректируется.

Замкнет тройку лидеров IPsec – jтличный баланс между производительностью и доступностью. Правда, если не брать в расчет подозрительную историю с утечкой данных американских спецслужб. Если им верить, то в IPsec встроены бэкдоры, позволяющие отслеживать трафик, передаваемый по протоколу IPsec в тайне от отправляющего. 

Остальные технологии оказались на обочине прогресса. Не советую их использовать. Только если все остальные варианты почему-то оказались недоступны.

Выводы

Теперь вы знакомы с особенностями VPN-протоколов. Опираясь на эту информацию, будет несложно выбрать подходящий (учитывая тот факт, что выбор-то, на самом деле, невелик). Остается «поднять» собственный сервер на базе OpenVPN или подобрать сервис в духе того же TunnelBear. Главное, не использоваться бесплатные варианты.

 

Сравнение протоколов VPN: PPTP vs OpenVPN vs L2TP

Автор Исхаков Максим На чтение 4 мин. Просмотров 182 Опубликовано Обновлено

Безопасность сети зависит от VPN протоколов. Каждый из них имеет определенный уровень защиты трафика и устойчивость к взлому кода. Итак, какой протокол лучше: PPTP, OpenVPN или, может быть, L2TP?

Что такое протоколы VPN?

 

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

В настоящее время существует несколько типов протоколов, которые различаются степенью шифрования и скоростью:

Протокол PPTP VPN

Это самый распространенный протокол, который был создан в 1999 году. Он поддерживается большинством доступных платформ, поэтому неудивительно, что, несмотря на свой возраст, все еще широко используется.

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

PPTP vs L2TP

Этот тип протокола не обеспечивает никакого шифрования (по крайней мере, он не делает этого сам по себе), а только создает соединение между вами и онлайн-сервером VPN. Тем не менее, это безопасно при условии, что все правильно реализовано.

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

PPTP vs OpenVPN

OpenVPN – безусловно, лучший выбор, когда дело касается протоколов. Он безопасен, универсален, прозрачен и обходит большинство брандмауэров. Его можно запустить на одном из двух портов протокола: TCP или UDP. Первый гарантирует полный поток данных, а второй – приличную скорость.

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

IKEv2 в качестве альтернативы OpenVPN

Как и OpenVPN, IKEv2 является протоколом туннелирования и использует инструменты IPSec для обеспечения защиты VPN. Он поддерживается такими платформами, как Windows, iOS, MacOS X, приложениями Android и считается стабильным и безопасным VPN-протоколом.

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

Что означает сквозная передача VPN на роутере?

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

Чтобы лучше это понять, необходимо объяснить основы работы роутера. Каждый из них оснащен технологией NAT, которая фильтрует трафик, тем самым защищая вас от потенциальных атак. Но при использовании устаревших протоколов, эти соединения блокируются. Вот здесь и пригодится сквозной VPN.

Однако это не то же самое, что и VPN-роутер, поскольку он не обеспечивает никакого шифрования или безопасности для устройств, подключенных к вашей сети, а только “пропускает трафик”.

Теоретически сквозная передача VPN будет необходима только при подключении к устаревшим протоколам, таким как PPTP. Хотя это и не рекомендуется делать, но большинство роутеров все еще имеют эту функцию.

Если вы используете рекомендованный OpenVPN или IKEv2, обеспечивающий лучшее шифрование, то сквозной VPN вам не понадобится. Для безопасного использования интернета будет вполне достаточно обычного VPN-соединения.

Какие существуют разновидности VPN и чем они отличаются

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

Само по себе определение VPN (виртуальная частная сеть) довольно широко, и с ходу трудно сказать, что можно считать VPN, а что нет. С определенной натяжкой VPN можно назвать и прародительницу Интернета ARPANET. Любопытно, что почти все технологии, а чаще всего все-таки протоколы, изначально применявшиеся для построения распределенных корпоративных сетей, постепенно становились основными способами доступа в Сеть для обычных пользователей.

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

Очень актуально для всех без исключения! Что такое VPN и зачем он нужен: https://t.co/ALen79ESla pic.twitter.com/15ObImJTzH

— Kaspersky Lab (@Kaspersky_ru) January 27, 2016

В первую очередь стоит рассмотреть те из них, что помогут защититься при использовании публичного Wi-Fi-доступа и позволят обойти блокировки тех или иных ресурсов. Как правило, доступные частным пользователям VPN-сервисы опираются на возможности популярных ОС и предлагают самостоятельно настроить с помощью пошаговой инструкции подключение к ним.

В последнее время сервисы VPN еще больше упростили этот процесс — они скрывают технические детали и доводят его до уровня «сюда положить денежку, отсюда скачать программку, нажать эту кнопочку и радоваться жизни, не забывая пополнять баланс личного счета». Тем не менее в некоторых случаях может быть полезно понимать, чем одни вариации VPN отличаются от других.

Настройки VPN в операционных системах Android (слева) и Windows (справа)

Популярные типы VPN

PPTP (Point-to-Point Tunneling Protocol) появился 20 лет назад, и в этом заключаются как его достоинства, так и недостатки. Несомненный плюс этого протокола — он поддерживается буквально всеми ОС, даже очень старыми. За счет этого достигается определенная универсальность и доступность. К тому же по современным меркам он очень нетребователен к вычислительным ресурсам.

Обратная сторона медали — из-за столь солидного возраста нынче он предлагает низкий уровень защиты пользователя. Казавшиеся достаточно надежными в середине 1990-х методы шифрования по нынешним меркам слабы и сочетаются с не самой удачной архитектурой и рядом ошибок в самой популярной реализации протокола от Microsoft.

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

Мне однажды удалось попасть в не очень приятную ситуацию в одной из стран с особым (если вы понимаете, о чем я) отношением к Интернету. Отправка электронной почты через корпоративный PPTP-сервер на родине закончилась тем, что письма, высланные в течение одного дня, были доставлены адресату с задержкой от пары дней до пары недель. Где и почему они «путешествовали», читатель может предположить сам. Использование же иных, более надежных вариантов VPN пресекалось.

Китайцы классно придумали: для масштабирования своей VPN-сети они просто взламывают чужие Windows-серверы — https://t.co/6uLwtNNl7p

— Kaspersky Lab (@Kaspersky_ru) August 6, 2015

L2TP (Layer 2 Tunneling Protocol) во многом схож с PPTP. Эти стандарты разрабатывались и были приняты практически одновременно, но L2TP считается более эффективным для построения виртуальных сетей, хотя и чуточку более требователен к вычислительным ресурсам по сравнению с PPTP. Фактически же он используется интернет-провайдерами и корпоративными пользователями. Обратите внимание, что L2TP по умолчанию также не предлагает шифрования и используется одновременно с другими протоколами — как правило, это IPSec.

IPSec (Internet Protocol Security) — это целый набор протоколов, стандартов и рекомендаций, специально разработанный для создания безопасных соединений в Сети. Первые наработки тоже появились в начале 1990-х годов, однако изначально была поставлена цель не «высечь IPSec в граните», а регулярно дорабатывать его для соответствия духу времени.

И да, в связи со всякими известными событиями в очередной раз рекомендуем всем вам почаще использовать VPN: http://t.co/kdx7t7tQzb

— Kaspersky Lab (@Kaspersky_ru) December 31, 2014

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

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

Во-вторых, он гораздо требовательнее к вычислительным ресурсам. Отчасти этот недостаток компенсируется использованием аппаратного ускорения некоторых вариантов алгоритма шифрования AES — именно он предлагается в современных версиях IPSec, хотя есть и другие варианты алгоритмов. Подобные ускорители уже есть в современных процессорах как для настольных, так и для мобильных устройств, а также для Wi-Fi-роутеров.

К сожалению, то, что хорошо продумали теоретики (математики в первую очередь), в жизнь претворяют практики, далеко не всегда обладающие достаточным уровнем знания и понимания предметной области. Исследование, опубликованное в октябре 2015 года, показывает, что до 66% IPSec-подключений могут быть относительно легко взломаны и что АНБ США может обладать подходящим аппаратным обеспечением для такого взлома.

Непростые простые числа, криптография в HDD, патчи Adobe и другие интересные события недели https://t. co/yxQcGKECLd pic.twitter.com/1cUaKh2kSn

— Kaspersky Lab (@Kaspersky_ru) October 23, 2015

Проблема кроется в некорректном использовании алгоритмов для инициализации защищенных соединений. Причем это касается не только IPSec, но и TLS с SSH, а также TOR и OTR. То есть имеется потенциальная возможность прочтения не только VPN-подключений, но и защищенных соединений для ряда сайтов, почтовых серверов, мессенджеров и так далее.

Да, для реализации подобной атаки требуются довольно долгие приготовления и хорошие вычислительные ресурсы, но в данном случае примечательно, что исследователи использовали облачные технологии Amazon и, судя по всему, потратили сумму, вполне подъемную и для частного лица.

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

Интересно, хотя и немного сложное в понимании, продолжение истории с расшифровкой VPN-трафика: https://t.co/PcuUNyLURw

— Kaspersky Lab (@Kaspersky_ru) December 24, 2015

SSL (Secure Sockets Layer) и TLS (Transport Layer Security) VPN, как видно из названия, представляют целый класс решений, опирающихся на соответствующие протоколы SSL и TLS, иногда дополненные другими методами защиты. Собственно говоря, SSL/TLS каждый из вас встречал в первую очередь на веб-сайтах, включая и тот, что вы читаете прямо сейчас: префикс https и зеленый замочек в адресной строке говорят об использовании именно этих протоколов защиты соединения.

Первые версии протокола появились еще в прошлом веке, но активно использоваться стали только в этом. Широкая распространенность этих протоколов способствовала их детальному изучению и последовательному выявлению все новых и новых уязвимостей как в архитектуре, так и в конкретных реализациях. SSL 3.0 был упразднен в июне 2015 года, актуальной на текущий момент является версия TLS 1.2, однако полностью безопасной считать ее нельзя — многое опять-таки зависит от реализации (см. IPSec). Кроме того, оба протокола вынуждены нести на себе тяжкий груз обратной совместимости.

Плюсом SSL/TLS VPN является то, что из-за широкого применения этих протоколов в Интернете они беспрепятственно пропускаются практически всеми публичными сетями. Минус — не слишком высокая производительность на практике и сложность в настройке, а также необходимость установки дополнительного ПО.

Популярными реализациями SSL/TLS VPN являются OpenVPN (SSL 3.0/TLS 1.2) и Microsoft SSTP (SSL 3.0). Фактически SSTP привязан к платформе Windows. OpenVPN в силу своей открытости имеет множество реализаций практически для всех платформ и к тому же на данный момент считается наиболее надежным вариантом VPN.

Заключение

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

И три главных совета от нашего эксперта напоследок: шифруйте свои данные, используйте VPN и регулярно обновляйте ПО #KasperskySMB

— Kaspersky Lab (@Kaspersky_ru) July 7, 2014

Обычному же пользователю я советую использовать, если это вообще возможно, только OpenVPN в силу его открытости, надежности и защищенности. Впрочем, и для него, и для других типов VPN есть еще ряд хитрых нюансов технического и юридического характера, о которых мы поговорим в следующем материале.

Бред программиста: Какой тип VPN лучше

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

PPTP

Классический протокол, работает везде. На всём что шевелится. Очень быстрый (с ним только IPSec может соперничать при определённых условиях). Но есть один недостаток — дырявый. Стандартный MSCHAPv2 позволяет выяснить пароль, если перехватить сессию. Но, судя по всему, проблема только в случае MITM. Т.е., если не считаете, что ваш трафик перехватывают, то жить вроде бы можно. Есть ещё протоколы вида EAP, но с их поддержкой всё достаточно грустно.

Второй недостаток — использование в качестве транспорта протокола GRE (тоже самое что TCP, UDP или ICMP, только GRE). Иногда режется.

В общем, по общему мнению, использовать небезопасно, но быстр

IPSec

Не совсем VPN, а нечто очень клёвое и могучее, которое может шифровать или один порт между двумя компьютерами, или связывать целые подсети безопасным образом. Очень хорошо поддерживается аппартное шифрование, и сам весь шифрованный, может хоть по сертификатам, хоть по PSK ходить, работает в винде на низком уровне, в общем, чудо а не протокол. Есть только пара жирных минусов: первоначальная настройка может быть весьма муторной (с перебиранием галочек, и чтением логов), неосторожное действие может зарубить железяку (будет считать, что трафик к ней должен идти через IPSec, который не настроен), ну и настройка этого через NAT — могучий квест, для настоящих джедаев.

В общем, по жизни рекомендую связывать удалённые компьютеры с фиксированными IP в безопасную псевдо-локальную сеть. Тут он волшебен. Остальное — на любителя.

Ходит через UDP, EH и ESP протоколы, что очень хорошо для транспорта, но мутновато для фаривола. с NAT’ом добавляется UDP 4500, и куча мути.

L2TP/IPSec

Немного дурацкое название связано с тем, что сам туннель нешифрованный, соответственно поднимается туннель поверх IPSec, что приводит по мнению многих к двойной инкапсуляции и приличному оверхеду. Но т.к. IPSec сам по себе хорош, не так уж и плохо. Живьём попробовать не удалось, уж очень большой квест по настройке. Предпочитаю голый IPSec. В общем, как вы понимаете, мне не очень нравится этот туннель, но если вам кто-то его настроили он работает, то будет весьма безопасный туннель.
Ходит через UDP 1701, EH и ESP протоколы, EH не обязателен.

SSTP

Как программисту, мне очень нравится этот туннель. Ибо это тупой SSL-стрим (по умолчанию на 443-ем порту), в который всё заворачивается. Т.е. с криптографией всё нормально TLS1.2, все плюшки. Проверка сертификатов сервера, возможно клиента. Работает дубово и стабильно. Но один маленький нюанс: хорошо работает только на винде начиная с Висты и более или менее на Микротиках. Под линухом кое-как, под андроидом из коробки ничего нет, ну и в целом не очень распространён.

Тем не менее, если есть возможность его использовать со стороны системы — будет работать. 

Утверждается, что протокол закрытый, поэтому могут быть дыры, но снаружи это чистый SSL-стрим (не отличить от обычного обращения к сайту, кроме объёма данных), так что все правила безопасности соответствуют https.

Ещё один недостаток, кроме ограниченной поддержки — TCP канал для тоннеля. В чём проблема? В плохой сети. Ибо TCP-пакеты могут теряться и запрашиваться повторно. Тут получается ситуация TCP over TCP, что при потере пакетов верхнего уровня приводит к куче проблем нижнего. Т.е. два уровня начинают заниматься попытками перепосылки пакетов, что сильно проваливает скорость. Однако, при хорошей сети — всё отлично.

OpenVPN

Последний вариант, о котором я хочу рассказать, но не самый плохой. Это отдельный OpenSource клиент подо всё что шевелится, который позволяет сделать всё что угодно. Хоть примешаться к существующему SSL-трафику на 443-ем порту сервера. В общем, есть всё. Куча алгоритмов, куча вариантов. Минусов только два: нужно ставить отдельно и слегка мутновато настраивать. Если справитесь, то всё будет хорошо, хотя пользователям придётся писать развёрнутую инструкцию.

Ну и по-возможности, следует настроить его на использование UDP, а не TCP, чтобы не было проблем, аналогичных SSTP. По скорости примерно соответствует SSTP.

Скорость

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

  • PPTP — самый быстрый. Очень и очень быстрый
  • L2TP/IPsec — чуть медленнее (протоколы серьёзныее)
  • SSTP — сильно медленнее
  • OpenVPN — примерно соответствует SSTP, но чуть медленнее (проверял только TCP вариант, думаю UDP будет гораздо быстрее)

Итоги

На самом деле, выбор весьма сложен. Старые протколы или сложные или дырявые, но поддерживаются везде и максимально быстро. Новые стараются сделать удобнее, но с поддержкой грустнее. Я пока не выбрал, что лучше, но думаю про SSTP, когда всё хорошо и PPTP, когда плохо с качеством и скоростью, но очень надо. При хорошей подготовке, возможно лучшим будет всё-таки IPSec, ну а хитрый OpenVPN можно настроить как нравится.

Типы соединений VPN

Бывает, для работы интернета достаточно подключить сетевой кабель к компьютеру, но иногда требуется сделать и что-то ещё. Соединения PPPoE, L2TP и PPTP используются до сих пор. Часто интернет-провайдер предоставляет инструкции по настройке конкретных моделей маршрутизаторов, но если понять принцип того, что нужно настраивать, это можно будет сделать практически на любом роутере.

Настройка PPPoE

PPPoE — это один из типов соединения с интернетом, чаще всего использующийся при работе DSL.

  1. Отличительной особенностью любого VPN-соединения является использование логина и пароля. Некоторые модели роутеров требуют ввод пароля два раза, другие — один раз. При первичной настройке взять эти данные можно из договора с интернет-провайдером.
  2. В зависимости от требований провайдера, IP-адрес роутера будет статическим (постоянным) или динамическим (может меняться при каждом подключении к серверу). Динамический адрес выдаётся провайдером, поэтому тут ничего заполнять не нужно.
  3. Статический адрес нужно прописать вручную.
  4. «AC Name» и «Service Name» — это параметры, относящиеся только к PPPoE. Они указывают имя концентратора и тип сервиса, соответственно. Если их нужно использовать, провайдер обязательно должен упомянуть это в инструкции.

    В некоторых случаях используется только «Service Name».

  5. Следующей особенностью является настройка переподключения. В зависимости от модели роутера, будут доступны следующие варианты:
    • «Connect automatically» — маршрутизатор всегда будет подключаться к интернету, а при обрыве соединения будет переподключаться.
    • «Connect on Demand» — если интернетом не пользоваться, роутер отключит соединение. Когда браузер или другая программа попытается получить доступ в интернет, роутер восстановит соединение.
    • «Connect Manually» — как и в предыдущем случае, роутер будет разрывать соединение, если какое-то время не пользоваться интернетом. Но при этом когда какая-нибудь программа запросит доступ в глобальную сеть, маршрутизатор не восстановит соединение. Чтобы это исправить, придётся заходить в настройки роутера и нажимать на кнопку «подключить».
    • «Time-based Connecting» — здесь можно указать, в какие временные промежутки соединение будет активно.
    • Ещё один из возможных вариантов — «Always on» — подключение всегда будет активно.
  6. В некоторых случаях интернет-провайдер требует указать сервера доменных имён («DNS»), которые преобразуют именные адреса сайтов (ldap-isp.ru) в цифровые (10.90.32.64). Если это не требуется, можно проигнорировать этот пункт.
  7. «MTU» — это количество переданной информации за одну операцию пересылки данных. Ради увеличения пропускной способности можно поэкспериментировать со значениями, но иногда это может привести к проблемам. Чаще всего интернет-провайдеры указывают необходимый размер MTU, но если его нет, лучше не трогать этот параметр.
  8. «MAC-адрес». Бывает так, что изначально к интернету был подключен только компьютер и настройки провайдера привязаны к определённому MAC-адресу. С тех пор, как смартфоны и планшеты получили широкое распространение, такое встречается редко, тем не менее это возможно. И в данном случае может потребоваться «клонировать» MAC-адрес, то есть, сделать так, чтобы у роутера был точно такой же адрес, как у компьютера, на котором изначально был настроен интернет.
  9. «Вторичное соединение» или «Secondary Connection». Данный параметр характерен для «Dual Access»/«Russia PPPoE». С его помощью можно подключаться к локальной сети провайдера. Включать его нужно только тогда, когда провайдер рекомендует настраивать именно «Dual Access» или «Russia PPPoE». В противном случае он должен быть выключен. При включении «Dynamic IP» интернет-провайдер выдаст адрес автоматически.
  10. Когда включен «Static IP», IP-адрес и иногда маску нужно будет прописать самому.

Настройка L2TP

L2TP — ещё один VPN-протокол, он даёт большие возможности, поэтому имеет широкое распространение среди моделей роутеров.

  1. В самом начале настройки L2TP можно определиться, какой должен быть IP-адрес: динамический или статический. В первом случае настраивать его не придётся.
  2. Во втором — необходимо прописать не только сам IP-адрес и иногда его маску подсети, но и шлюз — «L2TP Gateway IP-address».

  3. Затем можно указать адрес сервера — «L2TP Server IP-Address». Может встречаться как «Server Name».
  4. Как и полагается VPN-соединению, нужно указать логин или пароль, взять которые можно из договора.
  5. Далее настраивается подключение к серверу, которое происходит в том числе после обрыва соединения. Можно указать «Always on», чтобы оно всегда было включено, или «On demand», чтобы подключение устанавливалось по требованию.
  6. Настройку DNS нужно выполнять в том случае, если этого требует провайдер.
  7. Параметр MTU обычно менять не требуется, в противном случае интернет-провайдер указывает в инструкциях, какое значение нужно поставить.
  8. Указывать MAC-адрес требуется не всегда, а для особых случаев существует кнопка «Clone your PC’s MAC Address». Она назначает маршрутизатору MAC адрес компьютера, с которого выполняется настройка.

Настройка PPTP

PPTP — это ещё одна разновидность VPN-соединения, внешне она настраивается почти так же, как и L2TP.

  1. Начать конфигурацию данного типа соединения можно с указания типа IP-адреса. При динамическом адресе настраивать далее ничего не нужно.
  2. Если же адрес статический, кроме внесения самого адреса иногда требуется указать маску подсети — это нужно тогда, когда маршрутизатор не в состоянии посчитать её сам. Затем указывается шлюз — «PPTP Gateway IP Address».

  3. Затем нужно указать «PPTP Server IP Address», на котором будет происходить авторизация.
  4. После этого можно указать логин и пароль, выданные провайдером.
  5. При настройке переподключения можно указать «On demand», чтобы соединение с интернетом устанавливалось по требованию и отключалось, если им не пользуются.
  6. Настройка серверов доменных имён чаще всего не обязательна, но иногда требуется провайдером.
  7. Значение MTU лучше не трогать, если в этом нет необходимости.
  8. Поле «MAC Address», скорее всего, заполнять не придётся, в особенных случаях можно использовать кнопку внизу, чтобы указать адрес компьютера, с которого выполняется настройка роутера.

Заключение

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

Мы рады, что смогли помочь Вам в решении проблемы.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ

Как мы выбирали VPN-протокол и сервер настраивали

Зачем всё это и для чего?

Как мы выбирали VPN-протокол и сервер настраивали

У нас было: 10 самых простых конфигураций серверов на DigitalOcean, мобильные устройства на базе iOS, сервер для сбора статистики, никакого опыта в настройке VPN-серверов, а также неукротимое желание сделать быстрый, надёжный и простой в использовании VPN-сервис, которым будет приятно пользоваться. Не то, чтобы всё это было категорически необходимо, но если уж начали, то к делу надо подходить серьёзно.

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

Я думаю, что в IT сфере уже не найти человека, который не знал бы, что такое VPN и зачем он нужен.

Но если тезисно объяснять, зачем нужен VPN современному человеку, то получится примерно следующее:

  • Если у вас есть какие-то внутренние (приватные) ресурсы, доступ к которым должен быть ограничен из глобальной сети интернет.
  • Если вам необходимо организовать защищенное соединение между двумя сетями.
  • Если вам нужно получить доступ к ресурсам, которые по тем или иным причинам недоступны из вашей страны (меняется ваше местоположение относительно вашего IP-адреса).

И не совсем очевидный момент: скорость интернет-соединения может быть выше через vpn, т.к. ваш провайдер может отправить ваш трафик по более короткому маршруту, а значит более оптимальному маршруту, из-за этого вы и можете получить прирост в скорости. Но это может сработать и в обратную сторону, если вы выберете не очень удачное расположение сервера относительно вас (об этом немного позже).

Как мы выбирали VPN-протокол

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

Мы выбрали самые известные реализации протоколов и отсеяли не подходящие по условиям исходной задачи.

А условия всего два, я напомню:

  • Стабильное и надёжное подключение.
  • Без установки стороннего программного обеспечения на устройство клиента.

Пробегусь по протоколам и кратко расскажу о них + расскажу причины, почему тот или иной протокол нам не подошёл.

PPTP (Point-To-Point Tunneling Protocol)

Один из самых старейших VPN протоколов, разработанный компанией Microsoft. Из-за солидного возраста протокол поддерживается большинством операционных систем, но в то же время не может обеспечить стабильное и надёжное соединение. Компания Microsoft советует использовать L2TP или SSTP на замену PPTP.

Этот протокол прост в настройке и не требователен к ресурсам сервера, но проблемы с безопасностью заставляют отказаться от его использования в наших целях.

L2TP/IPSec

Протокол во многом схож с PPTP, разрабатывался и принимался практически одновременно с ним. Этот протокол более требователен к вычислительным мощностям, часто используется интернет-провайдерами, т.к. считается более эффективным для построения виртуальных сетей.
L2TP/IPsec позволяет обеспечить высокую безопасность данных, поддерживается всеми современными операционными системами. Есть одно но: он инкапсулирует передаваемые данные дважды, что делает его менее эффективным и более медленным, чем другие VPN-протоколы.

От этого протокола пришлось отказаться т.к. он более требователен к вычислительным мощностям сервера, а значит велик риск получить стабильное, но медленное соединение, что может огорчить пользователей.

IKEv2/IPSec

Был разработан Microsoft совместно с Cisco, существуют реализации протокола с открытым исходным кодом (например, OpenIKEv2, Openswan и strongSwan).

Поддерживает Mobility and Multi-homing Protocol (MOBIKE), что обеспечивает устойчивость к смене сетей.

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

IKEv2 имеет нативную поддержку в большинстве операционных систем.

Вот этот вариант нам уже больше подходит, т.к. поддержка Mobility and Multi-homing Protocol будет очень большим плюсом при использовании на мобильных устройствах.

OpenVPN

Разработан компанией OpenVPN Technologies.

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

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

Этот вариант нам бы тоже подошёл, но, к сожалению, из-за необходимости установки клиента, придётся отказаться от этого протокола.

Wireguard

На данный момент это самый свежий протокол VPN. Его часто сравнивают с IPSec и OpenVPN, и называют его их заменой, но он всё ещё слишком сырой, чтобы использовать его в больших масштабах.

Лучшие результаты этот протокол показывает на Unix системах, т.к. он реализован в виде модуля ядра Unix. Но эта высокая пропускная способность достигается за счёт замедления сетевой активности других приложений.

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

И снова необходимость установки дополнительного клиента на устройство отменяет все шансы на использование этого протокола в наших целях.

В итоге мы решили остановится на IKEv2/IPSeс, по следующим причинам:

  • Поддержка Mobility and Multi-homing Protocol (MOBIKE).
  • Нативная поддержка в большинстве операционных систем.
  • Обеспечивает высокую скорость соединения.
  • Не требователен к ресурсам сервера.

Перейдём от теории к практике.

Настраиваем VPN-сервер

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

Самый простой критерий выбора расположения сервера — это удалённость от вас, т.е. если будет выбор между размещением сервера в Германии или в США, то своё предпочтение следует отдать Германии (если вы находитель в России), т.к., в теории, ваш трафик будет проходить через меньшее кол-во магистралей и будет идти по более короткому маршруту.

Для личного использования или небольшого кол-ва пользователей подойдёт самый простой вариант сервера, к примеру на digitalocean можно взять самую базовую конфигурацию сервера с одним ядром, 1 Gb оперативной памяти и 25 Gb дискового пространства.

От слов к практике, каких-то особых навыков и тайных знаний для настройки VPN-сервера не понадобится.

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

  • Docker + docker-compose.
  • strongswan — реализацию IPSec сервера.
  • Let’s Encrypt — для генерации сертификатов.
  • Radius — для мониторинга и отправки статистических данных.

Начнём с Docker контейнера, в котором и будет запускаться vpn-сервер.

Docker.file (полная версия)

FROM alpine:latest #сервер будем собирать на основе образа alpine-linux


# strongSwan Version
ARG SS_VERSION=»https://download.strongswan.org/strongswan-5.8.2.tar.gz» #версию можете выбрать сами, исходя из того когда вы читаете данную статью.



COPY ./run.sh /run.sh
COPY ./adduser.sh /adduser.sh
COPY ./rmuser.sh /rmuser.sh

RUN chmod 755 /run.sh /adduser.sh /rmuser.sh

VOLUME [«/usr/local/etc/ipsec.secrets»]

EXPOSE 500:500/udp 4500:4500/udp

CMD [«/run.sh»]


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

FROM alpine:latest #сервер будем собирать на основе образа alpine-linux

 

# strongSwan Version

ARG SS_VERSION=»https://download.strongswan.org/strongswan-5.8.2.tar.gz» #версию можете выбрать сами, исходя из того когда вы читаете данную статью.

 

 

COPY ./run.sh /run.sh

COPY ./adduser.sh /adduser.sh

COPY ./rmuser.sh /rmuser.sh

 

RUN chmod 755 /run.sh /adduser.sh /rmuser.sh

 

VOLUME [«/usr/local/etc/ipsec.secrets»]

 

EXPOSE 500:500/udp 4500:4500/udp

 

CMD [«/run.sh»]

Для управления пользователями мы создаём два скрипта adduser.shrmuser.sh для добавления и удаления пользователя соответственно.

adduser.sh

#!/bin/sh

VPN_USER=»$1″

if [ -z «$VPN_USER» ]; then
echo «Usage: $0 username» >&2
echo «Example: $0 jordi» >&2
exit 1
fi

case «$VPN_USER» in
*[\\\»\’]*)
echo «VPN credentials must not contain any of these characters: \\ \» ‘» >&2
exit 1
;;
esac

VPN_PASSWORD=»$(openssl rand -base64 9)» #генерируем пароль для пользователя
HOST=»$(printenv VPNHOST)»

echo «Password for user is: $VPN_PASSWORD»
echo $VPN_USER : EAP \»$VPN_PASSWORD\»>> /usr/local/etc/ipsec.secrets # сохраняем имя пользователя и пароль в файл /usr/local/etc/ipsec.secrets

ipsec rereadsecrets


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#!/bin/sh

 

VPN_USER=»$1″

 

if [ -z «$VPN_USER» ]; then

  echo «Usage: $0 username» >&2

  echo «Example: $0 jordi» >&2

  exit 1

fi

 

case «$VPN_USER» in

  *[\\\»\’]*)

    echo «VPN credentials must not contain any of these characters: \\ \» ‘» >&2

    exit 1

    ;;

esac

 

VPN_PASSWORD=»$(openssl rand -base64 9)» #генерируем пароль для пользователя

HOST=»$(printenv VPNHOST)»

 

echo «Password for user is: $VPN_PASSWORD»

echo $VPN_USER : EAP \»$VPN_PASSWORD\»>> /usr/local/etc/ipsec.secrets # сохраняем имя пользователя и пароль в файл /usr/local/etc/ipsec.secrets

 

ipsec rereadsecrets

rmuser.sh

#!/bin/sh

VPN_USER=»$1″

if [ -z «$VPN_USER» ]; then
echo «Usage: $0 username» >&2
echo «Example: $0 jordi» >&2
exit 1
fi

cp /usr/local/etc/ipsec.secrets /usr/local/etc/ipsec.secrets.bak
sed «/$VPN_USER :/d» /usr/local/etc/ipsec.secrets.bak > /usr/local/etc/ipsec.secrets # удаляем строку и с пользователем из файла /usr/local/etc/ipsec.secrets

ipsec rereadsecrets



#!/bin/sh

 

VPN_USER=»$1″

 

if [ -z «$VPN_USER» ]; then

  echo «Usage: $0 username» >&2

  echo «Example: $0 jordi» >&2

  exit 1

fi

 

cp /usr/local/etc/ipsec.secrets /usr/local/etc/ipsec.secrets.bak

sed «/$VPN_USER :/d» /usr/local/etc/ipsec.secrets.bak > /usr/local/etc/ipsec.secrets # удаляем строку и с пользователем из файла /usr/local/etc/ipsec.secrets

 

ipsec rereadsecrets

На сервере все пользователи будут храниться в файле ipsec.secrets.

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

run.sh полная версия

#!/bin/bash

VPNIPPOOL=»10.15.1.0/24″ # указываем из какого диапазона будут выдаваться IP нашим клиентам, которые будут подключаться к VPN-серверу.
LEFT_ID=${VPNHOST} # домен нашего vpn-сервера

sysctl net.ipv4.ip_forward=1
sysctl net.ipv6.conf.all.forwarding=1
sysctl net.ipv6.conf.eth0.proxy_ndp=1

if [ ! -z «$DNS_SERVERS» ] ; then # можем указать свои DNS сервера, которые будут использоваться в vpn сервере.
DNS=$DNS_SERVERS
else
DNS=»1.1.1.1,8.8.8.8″
fi

if [ ! -z «$SPEED_LIMIT» ] ; then # для того, чтобы один пользователь не «съел» весь канал, можем ограничить скорость пользователя до указанной величины.
tc qdisc add dev eth0 handle 1: ingress
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src 0.0.0.0/0 police rate ${SPEED_LIMIT}mbit burst 10k drop flowid :1
tc qdisc add dev eth0 root tbf rate ${SPEED_LIMIT}mbit latency 25ms burst 10k
fi

iptables -t nat -A POSTROUTING -s ${VPNIPPOOL} -o eth0 -m policy —dir out —pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s ${VPNIPPOOL} -o eth0 -j MASQUERADE

iptables -L

# Здесь мы генерируем сертификат сервера
if [[ ! -f «/usr/local/etc/ipsec.d/certs/fullchain.pem» && ! -f «/usr/local/etc/ipsec.d/private/privkey.pem» ]] ; then
certbot certonly —standalone —preferred-challenges http —agree-tos —no-eff-email —email ${LEEMAIL} -d ${VPNHOST}
cp /etc/letsencrypt/live/${VPNHOST}/fullchain.pem /usr/local/etc/ipsec.d/certs
cp /etc/letsencrypt/live/${VPNHOST}/privkey.pem /usr/local/etc/ipsec.d/private
cp /etc/letsencrypt/live/${VPNHOST}/chain.pem /usr/local/etc/ipsec.d/cacerts
fi

rm -f /var/run/starter.charon.pid

# Настройка непосредственно ipsec сервера
if [ -f «/usr/local/etc/ipsec.conf» ]; then
rm /usr/local/etc/ipsec.conf
cat >> /usr/local/etc/ipsec.conf <<EOF
config setup
charondebug=»ike 1, knl 1, cfg 1″
uniqueids=never
conn ikev2-vpn


eap_identity=%identity
EOF
fi

if [ ! -f «/usr/local/etc/ipsec.secrets» ]; then
cat > /usr/local/etc/ipsec.secrets <<EOF
: RSA privkey.pem
EOF
fi

…..
EOF
fi
sysctl -p

ipsec start —nofork


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

#!/bin/bash

 

VPNIPPOOL=»10.15.1.0/24″ # указываем из какого диапазона будут выдаваться IP нашим клиентам, которые будут подключаться к VPN-серверу.

LEFT_ID=${VPNHOST}       # домен нашего vpn-сервера

 

sysctl net.ipv4.ip_forward=1

sysctl net.ipv6.conf.all.forwarding=1

sysctl net.ipv6.conf.eth0.proxy_ndp=1

 

if [ ! -z «$DNS_SERVERS» ] ; then # можем указать свои DNS сервера, которые будут использоваться в vpn сервере.

DNS=$DNS_SERVERS

else

DNS=»1.1.1.1,8.8.8.8″

fi

 

if [ ! -z «$SPEED_LIMIT» ] ; then # для того, чтобы один пользователь не «съел» весь канал, можем ограничить скорость пользователя до указанной величины.

tc qdisc add dev eth0 handle 1: ingress

tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip src 0.0.0.0/0 police rate ${SPEED_LIMIT}mbit burst 10k drop flowid :1

tc qdisc add dev eth0 root tbf rate ${SPEED_LIMIT}mbit latency 25ms burst 10k

fi

 

iptables -t nat -A POSTROUTING -s ${VPNIPPOOL} -o eth0 -m policy —dir out —pol ipsec -j ACCEPT

iptables -t nat -A POSTROUTING -s ${VPNIPPOOL} -o eth0 -j MASQUERADE

 

iptables -L

 

# Здесь мы генерируем сертификат сервера

if [[ ! -f «/usr/local/etc/ipsec.d/certs/fullchain.pem» && ! -f «/usr/local/etc/ipsec.d/private/privkey.pem» ]] ; then

    certbot certonly —standalone —preferred-challenges http —agree-tos —no-eff-email —email ${LEEMAIL} -d ${VPNHOST}

    cp /etc/letsencrypt/live/${VPNHOST}/fullchain.pem /usr/local/etc/ipsec.d/certs

    cp /etc/letsencrypt/live/${VPNHOST}/privkey.pem /usr/local/etc/ipsec.d/private

    cp /etc/letsencrypt/live/${VPNHOST}/chain.pem /usr/local/etc/ipsec.d/cacerts

fi

 

rm -f /var/run/starter.charon.pid

 

# Настройка непосредственно ipsec сервера

if [ -f «/usr/local/etc/ipsec.conf» ]; then

rm /usr/local/etc/ipsec.conf

cat >> /usr/local/etc/ipsec.conf <<EOF

config setup

    charondebug=»ike 1, knl 1, cfg 1″

    uniqueids=never

    conn ikev2-vpn

    …

 

    eap_identity=%identity

EOF

fi

 

if [ ! -f «/usr/local/etc/ipsec.secrets» ]; then

cat > /usr/local/etc/ipsec.secrets <<EOF

: RSA privkey.pem

EOF

fi

 

…..

EOF

fi

sysctl -p

 

ipsec start —nofork

Чтобы было проще запустить весь сервер одной командой, завернём всё в docker-compose:

version: ‘3’

services:
vpn:
build: .
container_name: ikev2-vpn-server
privileged: true
volumes:
— ‘./data/certs/certs:/usr/local/etc/ipsec.d/certs’
— ‘./data/certs/private:/usr/local/etc/ipsec.d/private’
— ‘./data/certs/cacerts:/usr/local/etc/ipsec.d/cacerts’
— ‘./data/etc/ipsec.d/ipsec.secrets:/usr/local/etc/ipsec.secrets’
env_file:
— .env
ports:
— ‘500:500/udp’
— ‘4500:4500/udp’
— ’80:80’
depends_on:
— radius
links:
— radius
networks:
— backend

radius:
image: ‘freeradius/freeradius-server:latest’
container_name: freeradius-server
volumes:
— ‘./freeradius/clients.conf:/etc/raddb/clients.conf’
— ‘./freeradius/mods-enabled/rest:/etc/raddb/mods-enabled/rest’
— ‘./freeradius/sites-enabled/default:/etc/raddb/sites-enabled/default’
env_file:
— .env
command: radiusd -X
networks:
— backend
networks:
backend:
ipam:
config:
— subnet: 10.0.0.0/24

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

Как настроить PPTP / L2TP-клиент на удаленном ПК?

ПРИМЕЧАНИЕ: Для подключения удаленного ПК к серверу PPTP можно использовать встроенное в Windows программное обеспечение PPTP или стороннее программное обеспечение PPTP.

Шаг 1 : Щелкните Start -> Control Panel -> Network and Internet -> Network and Sharing Center .

Шаг 2 : Щелкните Установите новое соединение или сеть .

Шаг 3 : Выберите Подключиться к рабочему месту , а затем щелкните Далее .

Шаг 4 : выберите Использовать мое Интернет-соединение (VPN)

Шаг 5 : В поле «Интернет-адрес» введите WAN IP-адрес VPN-сервера и нажмите Create . (Имя пункта назначения указывать необязательно.)

Шаг 6 : Затем вернитесь в Центр управления сетями и общим доступом , щелкните Изменить настройки адаптера .

Шаг 7 : щелкните правой кнопкой мыши только что созданное соединение PPTP и выберите Properties , выберите Security , Type of VPN : Point to Point Tunneling Protocol (PPTP) , Date encryption : it рекомендуется выбрать опционально зашифрованный и нажмите ОК .

Примечание: Если вы хотите настроить клиент L2TP в Windows 10, выполните шаг 7, как показано ниже:

Шаг 7 : Щелкните правой кнопкой мыши только что созданное соединение L2TP и выберите Properties . На вкладке Security выберите Layer 2 Tunneling Protocol с IPsec (L2TP / IPsec) , в разделе Data encryption выберите Require encryption (отключиться при отказе сервера).

Щелкните Advanced settings , выберите Use prehared key for authentication , and then enter the key, here is « 123456 ».

Шаг 8 : После всех настроек щелкните правой кнопкой мыши соединение PPTP / L2TP , выберите Connect / Disconnect и введите имя пользователя и пароль для подключения к серверу VPN.

ПРИМЕЧАНИЕ. Для подключения удаленного ПК к серверу PPTP можно использовать встроенное в Windows программное обеспечение PPTP или стороннее программное обеспечение PPTP.

Шаг 1 : Щелкните Start -> Control Panel -> Network and Internet -> Network and Sharing Center .

Шаг 2 : Щелкните Настройте новое соединение или сеть .

Шаг 3 : Выберите Подключиться к рабочему месту , а затем щелкните Далее .

Шаг 4 : выберите Использовать мое Интернет-соединение (VPN)

Шаг 5 : В поле «Интернет-адрес» введите IP-адрес маршрутизатора в глобальной сети, а затем нажмите Next .

Шаг 6 : Введите имя пользователя и пароль, а затем щелкните Create .

Шаг 7 : VPN-соединение создано и готово к использованию, нажмите Закройте .

Шаг 8 : перейдите в Центр управления сетями и общим доступом и нажмите Изменить настройки адаптера в левом меню.

Шаг 9:

Щелкните правой кнопкой мыши VPN Connection и выберите Properties , выберите Security , Type of VPN : Point to Point Tunneling Protocol (PPTP), Date encryption : рекомендуется выбрать , дополнительно зашифрованный , и нажмите ОК.

Шаг 10 : Щелкните правой кнопкой мыши VPN Connection и выберите Connect .

Примечание: Если вы хотите настроить клиент L2TP в Windows 7, выполните шаги 9-10, как показано ниже:

Шаг 9 :

Щелкните правой кнопкой мыши VPN Connection и выберите Properties . На вкладке «Безопасность» выберите Layer 2 Tunneling Protocol с IPsec (L2TP / IPsec), в разделе «Шифрование данных» выберите Требовать шифрование (отключите, если сервер откажется).

Шаг 10:

Щелкните Расширенные настройки, выберите Использовать предварительный ключ для аутентификации , а затем введите ключ, вот « 5678 ».

Шаг 11 : Введите имя пользователя и пароль, а затем щелкните Connect .

ПРИМЕЧАНИЕ. Для подключения удаленного ПК к серверу PPTP можно использовать встроенное в Windows программное обеспечение PPTP или стороннее программное обеспечение PPTP.

Шаг 1 : Щелкните Start -> Control Panel -> Network and Internet -> Network and Sharing Center .

Шаг 2 : Щелкните Настройте новое соединение или сеть .

Шаг 3 : Выберите Подключиться к рабочему месту , а затем щелкните Далее .

Шаг 4 : выберите Использовать мое Интернет-соединение (VPN)

Шаг 5 : В поле «Интернет-адрес» введите WAN IP-адрес VPN-сервера и нажмите Create .(Имя пункта назначения указывать необязательно.)

Шаг 6 : Затем вернитесь в Центр управления сетями и общим доступом , щелкните Изменить настройки адаптера .

Шаг 7 : щелкните правой кнопкой мыши только что созданное соединение PPTP и выберите Properties , выберите Security , Type of VPN : Point to Point Tunneling Protocol (PPTP), Date encryption : рекомендуется выберите опционально зашифрованный и нажмите ОК.

Примечание: Если вы хотите настроить клиент L2TP в Windows 8.1, выполните шаг 7, как показано ниже:

Шаг 7 : Щелкните правой кнопкой мыши только что созданное соединение L2TP и выберите Properties . На вкладке «Безопасность» выберите Layer 2 Tunneling Protocol с IPsec (L2TP / IPsec), в разделе «Шифрование данных» выберите Требовать шифрование (отключиться при отказе сервера).

Щелкните Расширенные настройки, выберите Использовать предварительный ключ для аутентификации , а затем введите ключ, вот « 123456 ».

Шаг 8 : После всех настроек щелкните правой кнопкой мыши соединение PPTP / L2TP и введите имя пользователя и пароль для подключения к серверу VPN.

VPN 続 方式

  1. ホ ー ム
  2. 知識 & 技術
  3. VPN と は
  4. VPN 接 続 方式

VPN 概要 は 、 「VPN と は」 を ご 覧 く だ さ い。

で は VPN 接 続 方式 つ て 説明 し ま す 。VPN 接 続 方式 は 、 目的 や 用途 に て 以下 の よ う 使 ま す