OpenVPN - это система виртуальной частной сети (VPN), которая реализует методы для создания безопасных соединений точка-точка или сайт- сеть в маршрутизируемых или мостовых конфигурациях и средствах удаленного доступа. Он реализует как клиентские, так и серверные приложения.
Автор (ы) оригинала | Джеймс Йонан |
---|---|
Разработчики) | Проект OpenVPN / OpenVPN Inc. |
Первый выпуск | 13 мая 2001 г . [1] |
Стабильный выпуск | 2.5.2 [2] (20 апреля 2021 г . ) [±] |
Репозиторий | |
Написано в | C |
Платформа | |
Тип | VPN |
Лицензия | GNU GPLv2 [10] |
Веб-сайт | openvpn |
OpenVPN позволяет сверстники для аутентификации друг друга , используя предварительно общие секретные ключи , сертификаты или имя пользователя / пароль . При использовании в конфигурации с несколькими клиентскими серверами он позволяет серверу выпускать сертификат аутентификации для каждого клиента, используя подписи и центр сертификации .
Он широко использует библиотеку шифрования OpenSSL , а также протокол TLS и содержит множество функций безопасности и контроля. Он использует специальный протокол безопасности [11], который использует SSL / TLS для обмена ключами. Он может проходить через трансляторы сетевых адресов (NAT) и межсетевые экраны .
OpenVPN был перенесен и встроен в несколько систем. Например, DD-WRT имеет функцию сервера OpenVPN. SoftEther VPN , многопротокольный сервер VPN, также имеет реализацию протокола OpenVPN.
Он был написан Джеймсом Йонаном и представляет собой бесплатное программное обеспечение , выпущенное в соответствии с условиями Стандартной общественной лицензии GNU версии 2 (GPLv2). [12] Кроме того, доступны коммерческие лицензии. [13]
Архитектура
Шифрование
OpenVPN использует библиотеку OpenSSL для шифрования как данных, так и каналов управления. Он позволяет OpenSSL выполнять всю работу по шифрованию и аутентификации, позволяя OpenVPN использовать все шифры, доступные в пакете OpenSSL. Он также может использовать функцию аутентификации пакетов HMAC для добавления дополнительного уровня безопасности к соединению (называемого создателем «межсетевым экраном HMAC»). Он также может использовать аппаратное ускорение для повышения производительности шифрования. [14] [15] Поддержка mbed TLS доступна начиная с версии 2.3. [16]
Аутентификация
OpenVPN имеет несколько способов аутентифицировать пиров друг с другом. OpenVPN предлагает предварительные общие ключи , аутентификацию на основе сертификатов и имени пользователя / пароля. Общий секретный ключ является самым простым, а основанный на сертификате - наиболее надежным и многофункциональным . [ необходима цитата ] В версии 2.0 аутентификация имени пользователя и пароля может быть включена как с сертификатами, так и без них. Однако для использования аутентификации по имени пользователя и паролю OpenVPN зависит от сторонних модулей. [ необходима цитата ]
Сети
OpenVPN может работать с протоколом передачи дейтаграмм пользователя (UDP) или протоколом управления передачей (TCP), мультиплексируя созданные туннели SSL на одном порту TCP / UDP [17] (RFC 3948 для UDP). [18]
Начиная с серии 2.3.x, OpenVPN полностью поддерживает IPv6 как протокол виртуальной сети внутри туннеля, а приложения OpenVPN также могут устанавливать соединения через IPv6. [19] Он может работать через большинство прокси-серверов (включая 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 , чтобы вынудить пользователей подписаться на более дорогой уровень услуг «бизнес-уровня». [ необходим пример ]
Когда OpenVPN использует транспорты протокола управления передачей (TCP) для установления туннеля, производительность будет приемлемой только до тех пор, пока существует достаточная избыточная полоса пропускания на нетуннелированном сетевом канале, чтобы гарантировать, что туннелированные таймеры TCP не истекут. [20] Если это не соответствует действительности, производительность резко упадет. Это известно как «проблема срыва TCP». [21] [22]
Безопасность
OpenVPN предлагает различные функции внутренней безопасности. Он имеет до 256-битное шифрование через библиотеку OpenSSL , хотя некоторые поставщики услуг могут предлагать более низкие скорости, эффективно обеспечивая одни из самых быстрых VPN, доступных для потребителей. Он работает в пользовательском пространстве вместо того, чтобы требовать работы IP-стека (следовательно, ядра). OpenVPN имеет возможность отбрасывать привилегии root , использовать mlockall для предотвращения подкачки конфиденциальных данных на диск, вводить chroot jail после инициализации и применять контекст SELinux после инициализации.
OpenVPN использует собственный протокол безопасности на основе SSL и TLS [11], а не поддерживает IKE, IPsec, L2TP или PPTP .
OpenVPN предлагает поддержку смарт-карт с помощью криптографических токенов на основе PKCS # 11 .
Расширяемость
OpenVPN можно расширить с помощью сторонних плагинов или скриптов, которые можно вызывать в определенных точках входа. [23] [24] Часто цель этого состоит в том, чтобы расширить OpenVPN за счет более продвинутого ведения журнала, улучшенной аутентификации с использованием имени пользователя и пароля, динамических обновлений межсетевого экрана, интеграции RADIUS и так далее. Плагины представляют собой динамически загружаемые модули, обычно написанные на C , в то время как интерфейс сценариев может выполнять любые сценарии или двоичные файлы, доступные для OpenVPN. В исходном коде OpenVPN [25] есть несколько примеров таких плагинов, включая плагин аутентификации PAM . Также существует несколько сторонних плагинов для аутентификации в базах данных LDAP или SQL, таких как SQLite и MySQL . [26]
Платформы
Он доступен для Solaris , Linux , OpenBSD , FreeBSD , NetBSD , QNX , macOS и Windows XP и более поздних версий . [27] OpenVPN доступен для операционных систем (ОС) мобильных телефонов, включая Maemo , [28] Windows Mobile 6.5 и ниже, [29] устройства iOS 3GS +, [30] взломанные устройства iOS 3.1.2+, [31] Android 4.0+ устройства и устройства Android, на которых была установлена прошивка Cyanogenmod [32] или установлен правильный модуль ядра. [33] Он несовместим с некоторыми операционными системами мобильных телефонов, включая Palm OS . Это не сеть VPN, отображаемая в виде веб-страницы, такой как веб-доступ Citrix или служб терминалов ; программа устанавливается независимо и настраивается путем редактирования текстовых файлов вручную, а не с помощью мастера на основе графического интерфейса. OpenVPN несовместим с VPN-клиентами, которые используют протоколы IPsec поверх L2TP или PPTP . Весь пакет состоит из одного двоичного файла для клиентских и серверных подключений, необязательного файла конфигурации и одного или нескольких файлов ключей в зависимости от используемого метода аутентификации.
Реализации прошивки
OpenVPN был интегрирован в несколько пакетов прошивки маршрутизаторов, что позволяет пользователям запускать OpenVPN в клиентском или серверном режиме со своих сетевых маршрутизаторов. Например, маршрутизатор, на котором запущен OpenVPN в клиентском режиме, позволяет любому устройству в сети получить доступ к VPN без необходимости установки OpenVPN.
Известные пакеты прошивки с интеграцией OpenVPN включают:
Пакет прошивки | Расходы | Разработчик | Рекомендации |
---|---|---|---|
DD-WRT | Бесплатно | NewMedia-NET GmbH | [34] |
Горгулья | Бесплатно | Эрик Бишоп | [35] |
OpenWrt | Бесплатно | Разработка, управляемая сообществом | [36] |
OPNsense | Бесплатно | Deciso BV | [37] |
pfSense | Бесплатно | Рубикон Коммуникации, ООО (Netgate) | |
Помидор | Бесплатно | Кейт Мойер | [38] [39] |
OpenVPN также был реализован в прошивках маршрутизаторов некоторых производителей.
Программные реализации
OpenVPN был интегрирован в SoftEther VPN , многопротокольный VPN-сервер с открытым исходным кодом, чтобы пользователи могли подключаться к VPN-серверу с существующих клиентов OpenVPN.
OpenVPN также интегрирован в Vyos , ОС маршрутизации с открытым исходным кодом, созданную на основе программного маршрутизатора Vyatta .
Лицензирование
OpenVPN доступен в двух версиях:
- OpenVPN Community Edition, бесплатная версия с открытым исходным кодом.
- OpenVPN Access Server (OpenVPN-AS) основан на Community Edition, но предоставляет дополнительные платные и проприетарные функции, такие как интеграция LDAP, сервер SMB, управление веб-интерфейсом, а также набор инструментов установки и настройки, которые, как сообщается, упрощают быстрое развертывание решение для удаленного доступа через VPN. [40] [41] Версия Access Server в значительной степени полагается на iptables для балансировки нагрузки, и по этой причине она никогда не была доступна в Windows. Эта версия также может динамически создавать установщики клиента («OpenVPN Connect»), которые включают профиль клиента для подключения к конкретному экземпляру сервера доступа. [42] Однако пользователю не обязательно иметь клиент сервера доступа, чтобы подключиться к экземпляру сервера доступа; можно использовать клиент из OpenVPN Community Edition. [43]
Смотрите также
- OpenConnect
- OpenSSH
- Протокол безопасного туннелирования сокетов
- парализатор
- Tunnelblick
- Пробивка отверстий UDP
- WireGuard
Рекомендации
- ^ Журнал изменений OpenVPN - Примечания к выпуску OpenVPN
- ^ «Релизы - OpenVPN / openvpn» . Проверено 27 апреля 2021 года - через GitHub .
- ^ «Загрузки» . openvpn.net . Проверено 2 февраля +2016 .
- ^ «Private Tunnel VPN - Android-приложения в Google Play» .
- ^ «Частный туннельный VPN» . Магазин приложений . 23 октября 2014 г.
- ^ «Как подключиться к серверу доступа с компьютера Linux» .
- ^ «Поиск портов FreeBSD» .
- ^ «Порты OpenBSD» .
- ^ «Коллекция пакетов NetBSD: net / openvpn» .
- ^ «openvpn_COPYING на главном сервере · OpenVPN_openvpn» . 30 июля 2019 года. Архивировано 31 июля 2019 года . Проверено 30 июля 2019 .
- ^ а б «Обзор безопасности OpenVPN» . Проверено 28 сентября 2011 года .
- ^ LinuxSecurity.com - OpenVPN: введение и интервью с основателем Джеймсом Йонаном
- ^ openvpn.net: Цены , получено 12 декабря 2018 г.
- ^ Эндрю Локхарт (2006). Взломы сетевой безопасности: советы и инструменты для защиты вашей конфиденциальности . "O'Reilly Media, Inc.". п. 339. ISBN. 978-0-596-55143-8.
- ^ 6net (2008 г.). Руководство по развертыванию IPv6 . Javvin Technologies Inc. стр. 109. ISBN 978-1-60267-005-1.
- ^ Обзор изменений в OpenVPN v2.3 - ChangesInOpenvpn23 - Сообщество OpenVPN
- ^ Справочная страница OpenVPN, раздел «Параметры режима TLS»
- ^ Петрос Дарас; Оскар Майора (2013). Среда, ориентированная на пользователя: первая международная конференция, UCMedia 2009, Венеция, Италия, 9-11 декабря 2009 г., отредактированные избранные статьи . Springer Science & Business Media. п. 239. ISBN. 978-3-642-12629-1.
- ^ Вики сообщества OpenVPN , IPv6 в OpenVPN - получено 8 декабря 2013 г.
- ^ Мюррей, Майк (20 марта 2021 г.). «OPENVPN MTU: ПОИСК ПРАВИЛЬНЫХ НАСТРОЕК» . Компьютерный паб .
- ^ Титц, Олаф (23 апреля 2001 г.). «Почему TCP поверх TCP - плохая идея» . Проверено 17 октября 2015 года .
- ^ Хонда, Осаму; Осаки, Хироюки; Имасе, Макото; Ишизука, Мика; Мураяма, Дзюнъити (октябрь 2005 г.). «Понимание TCP поверх TCP: влияние TCP-туннелирования на сквозную пропускную способность и задержку». В Атикуззамане, Мохаммед; Баландин Сергей I (ред.). Производительность, качество обслуживания и контроль коммуникационных и сенсорных сетей нового поколения III . 6011 . Bibcode : 2005SPIE.6011..138H . CiteSeerX 10.1.1.78.5815 . DOI : 10.1117 / 12.630496 . S2CID 8945952 .
- ^ «Точки входа в скрипт OpenVPN» . Openvpn.net . Проверено 30 июля 2012 года .
- ^ OpenVPN плагин точек входа для модулей на основе C .
- ^ «Примеры плагинов OpenVPN» . Openvpn.git.sourceforge.net . Проверено 30 июля 2012 года .
- ^ Вики сообщества OpenVPN - Связанные проекты
- ^ «Загрузки» . openvpn.net . OpenVPN . Дата обращения 6 августа 2015 .
- ^ «Пакет OpenVPN Maemo» . Maemo.org . Проверено 30 июля 2012 года .
- ^ «OpenVPN для PocketPC» . Ovpnppc.ziggurat29.com. 1 апреля 2007 . Проверено 30 июля 2012 года .
- ^ «OpenVPN Connect» . Технологии OpenVPN. 16 января 2013 . Проверено 16 января 2013 года .
- ^ «ГуизмОВПН - OpenVPN GUI для iPhone / iPad» . guizmovpn.com. 30 сентября 2007 . Проверено 30 сентября 2012 года .
- ^ "ИЗМЕНИТЬ ЭКЛЕР от android_vendor_cyanogen CyanogenMod" . GitHub . циан. 7 июля 2010 . Проверено 28 октября 2010 года . Список изменений Nexus One Cyanogenmod
- ^ «Как установить и настроить OpenVPN на устройстве Android с root-доступом | Блог о VPN - актуальная информация о VPN» . Vpnblog.info . Проверено 30 июля 2012 года .
- ^ dd-wrt.com - OpenVPN
- ^ Горгулья вики - OpenVPN
- ^ «OpenVPN (Настройка сервера) - OpenWrt Wiki» . openwrt.org . Проверено 11 июня 2018 .
- ^ "opnsense.org - Объявление о выпуске OPNsense 17.1" .
- ^ «TomatoVPN» . Tomatovpn.keithmoyer.com . Проверено 30 июля 2012 года .
- ^ LinksysInfo.org - сборка VPN с веб-интерфейсом
- ^ «Сравнение продуктов OpenVPN» . Проверено 15 января 2017 года .
- ^ "Что такое OpenVPN Access Server (OpenVPN-AS)?" . Проверено 15 января 2017 года .
- ^ «Относительно репозитория chocolatey.org. Проблема №2 · wget / chocolatey_package_openvpn» . 16 января 2017 . Проверено 16 января 2017 года .
- ^ «Могу ли я использовать клиент OpenVPN сообщества для подключения к серверу доступа?» . Проверено 16 января 2017 года .
Внешние ссылки
- Официальный веб-сайт
- Сайт сообщества
- Бриджит, Адриан (2 февраля 2008 г.). «Презентация и демонстрация OpenVPN» . Архив . Группа пользователей Hampshire Linux. Технические переговоры