OpenVPN - OpenVPN

OpenVPN
OpenVPN logo.svg
Автор (ы) оригинала Джеймс Йонан
Разработчики) Проект OpenVPN / OpenVPN Inc.
изначальный выпуск 13 мая 2001 г . ; 20 лет спустя ( 2001-05-13 )
Стабильный выпуск 2.5.3 (17 июня 2021 г . ; 59 дней назад ) [±] ( 2021-06-17 )
Репозиторий Отредактируйте это в Викиданных
Написано в C
Платформа
Тип VPN
Лицензия GNU GPLv2
Интернет сайт openvpn .net Отредактируйте это в Викиданных

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

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

Он широко использует библиотеку шифрования OpenSSL , а также протокол TLS и содержит множество функций безопасности и контроля. Он использует специальный протокол безопасности, который использует SSL / TLS для обмена ключами. Он может проходить через трансляторы сетевых адресов (NAT) и межсетевые экраны .

OpenVPN был перенесен и встроен в несколько систем. Например, DD-WRT имеет функцию сервера OpenVPN. SoftEther VPN , многопротокольный сервер VPN, также имеет реализацию протокола OpenVPN.

Он был написан Джеймсом Йонаном и представляет собой бесплатное программное обеспечение , выпущенное в соответствии с условиями Стандартной общественной лицензии GNU версии 2 (GPLv2). Дополнительно доступны коммерческие лицензии.

Архитектура

Шифрование

OpenVPN использует библиотеку OpenSSL для шифрования как данных, так и каналов управления. Он позволяет OpenSSL выполнять всю работу по шифрованию и аутентификации, позволяя OpenVPN использовать все шифры, доступные в пакете OpenSSL. Он также может использовать функцию аутентификации пакетов HMAC для добавления дополнительного уровня безопасности к соединению (называемого создателем «межсетевым экраном HMAC»). Он также может использовать аппаратное ускорение для повышения производительности шифрования. Поддержка mbed TLS доступна начиная с версии 2.3.

Аутентификация

OpenVPN имеет несколько способов аутентифицировать пиров друг с другом. OpenVPN предлагает предварительные общие ключи , аутентификацию на основе сертификатов и имени пользователя / пароля. Общий секретный ключ является самым простым, а основанный на сертификате - наиболее надежным и многофункциональным . В версии 2.0 можно включить аутентификацию по имени пользователя и паролю, как с сертификатами, так и без них. Однако для использования аутентификации по имени пользователя и паролю OpenVPN зависит от сторонних модулей.

Сети

OpenVPN может работать с протоколом передачи дейтаграмм пользователя (UDP) или протоколом управления передачей (TCP), мультиплексируя созданные туннели SSL на одном порту TCP / UDP (RFC 3948 для UDP).

Начиная с серии 2.3.x, OpenVPN полностью поддерживает IPv6 как протокол виртуальной сети внутри туннеля, а приложения OpenVPN также могут устанавливать соединения через IPv6. Он может работать через большинство прокси-серверов (включая HTTP ) и хорошо работает через трансляцию сетевых адресов (NAT) и выход через брандмауэры. Конфигурация сервера имеет возможность «проталкивать» определенные параметры конфигурации сети клиентам. К ним относятся IP-адреса, команды маршрутизации и несколько вариантов подключения. OpenVPN предлагает два типа интерфейсов для работы в сети через универсальный драйвер TUN / TAP . Он может создавать IP-туннель на уровне 3 (TUN) или Ethernet TAP на уровне 2, который может передавать любой тип трафика Ethernet. OpenVPN может дополнительно использовать библиотеку сжатия LZO для сжатия потока данных. Порт 1194 - это официальный номер порта, присвоенный IANA для OpenVPN. Более новые версии программы теперь по умолчанию используют этот порт. Функция версии 2.0 позволяет одному процессу управлять несколькими туннелями одновременно, в отличие от исходного ограничения «один туннель на процесс» в серии 1.x.

Использование OpenVPN общих сетевых протоколов (TCP и UDP) делает его желательной альтернативой IPsec в ситуациях, когда интернет-провайдер может блокировать определенные протоколы VPN , чтобы вынудить пользователей подписаться на более дорогой уровень услуг «бизнес-уровня». Например, Comcast ранее заявляла, что их продукт @Home был и всегда считался сервисом для частных лиц и не позволял использовать коммерческие приложения. Их аргумент заключался в том, что удаленная работа с высоким трафиком при использовании VPN может отрицательно сказаться на производительности сети их постоянных абонентов. Они предложили альтернативу, @Home Professional, она будет стоить дороже, чем продукт @Home. Таким образом, любой, кто хочет использовать VPN, должен будет подписаться на более дорогой уровень услуг бизнес-уровня.

Когда OpenVPN использует транспорты протокола управления передачей (TCP) для установления туннеля, производительность будет приемлемой только до тех пор, пока существует достаточная избыточная полоса пропускания на нетуннелированном сетевом канале, чтобы гарантировать, что туннелированные таймеры TCP не истекут. Если это не соответствует действительности, производительность резко упадет. Это известно как «проблема срыва TCP».

Безопасность

OpenVPN предлагает различные функции внутренней безопасности. Он имеет до 256-битное шифрование через библиотеку OpenSSL , хотя некоторые поставщики услуг могут предлагать более низкие скорости, эффективно обеспечивая одни из самых быстрых VPN, доступных для потребителей. Он работает в пользовательском пространстве вместо того, чтобы требовать работы IP-стека (следовательно, ядра). OpenVPN имеет возможность отбрасывать привилегии root , использовать mlockall для предотвращения подкачки конфиденциальных данных на диск, вводить chroot jail после инициализации и применять контекст SELinux после инициализации.

OpenVPN использует собственный протокол безопасности на основе SSL и TLS, а не поддерживает IKE, IPsec, L2TP или PPTP .

OpenVPN предлагает поддержку смарт-карт с помощью криптографических токенов на основе PKCS # 11 .

Расширяемость

OpenVPN можно расширить с помощью сторонних плагинов или скриптов, которые можно вызывать в определенных точках входа. Часто целью этого является расширение OpenVPN за счет более продвинутого ведения журнала, улучшенной аутентификации с использованием имени пользователя и пароля, динамических обновлений межсетевого экрана, интеграции RADIUS и т. Д. Плагины представляют собой динамически загружаемые модули, обычно написанные на C , в то время как интерфейс сценариев может выполнять любые сценарии или двоичные файлы, доступные для OpenVPN. В исходном коде OpenVPN есть несколько примеров таких плагинов, включая плагин аутентификации PAM . Также существует несколько сторонних плагинов для аутентификации в базах данных LDAP или SQL, таких как SQLite и MySQL .

Платформы

Он доступен для Solaris , Linux , OpenBSD , FreeBSD , NetBSD , QNX , macOS и Windows XP и более поздних версий . OpenVPN доступен для операционных систем (ОС) мобильных телефонов, включая Maemo , Windows Mobile 6.5 и ниже, устройства iOS 3GS +, взломанные устройства iOS 3.1.2+, устройства Android 4.0+ и устройства Android, на которых была установлена прошивка Cyanogenmod послепродажной прошивки или на которой установлена ​​прошивка Cyanogenmod. установлен правильный модуль ядра. Он несовместим с некоторыми операционными системами мобильных телефонов, включая Palm OS . Это не сеть VPN, отображаемая в виде веб-страницы, такой как веб-доступ Citrix или служб терминалов ; программа устанавливается независимо и настраивается путем редактирования текстовых файлов вручную, а не с помощью мастера на основе графического интерфейса. OpenVPN несовместим с VPN-клиентами, которые используют протоколы IPsec поверх L2TP или PPTP . Весь пакет состоит из одного двоичного файла для клиентских и серверных подключений, необязательного файла конфигурации и одного или нескольких файлов ключей в зависимости от используемого метода аутентификации.

Реализации прошивки

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

Известные пакеты прошивки с интеграцией OpenVPN включают:

Известные пакеты прошивки с интеграцией OpenVPN
Пакет прошивки Расходы Разработчик использованная литература
DD-WRT Бесплатно NewMedia-NET GmbH
Горгулья Бесплатно Эрик Бишоп
OpenWrt Бесплатно Разработка, управляемая сообществом
OPNsense Бесплатно Deciso BV
pfSense Бесплатно Рубикон Коммуникации, ООО (Netgate)
Помидор Бесплатно Кейт Мойер

OpenVPN также был реализован в прошивках маршрутизаторов некоторых производителей.

Программные реализации

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

OpenVPN также интегрирован в Vyos , ОС маршрутизации с открытым исходным кодом, созданную на основе программного маршрутизатора Vyatta .

Лицензирование

OpenVPN доступен в двух версиях:

  • OpenVPN Community Edition, бесплатная версия с открытым исходным кодом.
  • OpenVPN Access Server (OpenVPN-AS) основан на Community Edition, но предоставляет дополнительные платные и проприетарные функции, такие как интеграция LDAP, сервер SMB, управление веб-интерфейсом, а также набор инструментов установки и настройки, которые, как сообщается, упрощают быстрое развертывание решение для удаленного доступа через VPN. Версия Access Server в значительной степени полагается на iptables для балансировки нагрузки, и по этой причине она никогда не была доступна в Windows. Эта версия также может динамически создавать установщики клиента («OpenVPN Connect»), которые включают профиль клиента для подключения к конкретному экземпляру сервера доступа. Однако пользователю не обязательно иметь клиент сервера доступа для подключения к экземпляру сервера доступа; можно использовать клиент из OpenVPN Community Edition.

Смотрите также

использованная литература

внешние ссылки