ОпенВПН
![]() | |
Оригинальный автор(ы) | Джеймс Йонан |
---|---|
Разработчик(и) | Проект OpenVPN / OpenVPN Inc. |
Первоначальный выпуск | 13 мая 2001 г [1] |
Стабильная версия | 2.6.10 [2] (20 марта 2024 г ) [±] |
Репозиторий | |
Написано в | С |
Платформа | |
Тип | VPN |
Лицензия | GNU GPLv2 [10] |
Веб-сайт | openvpn ![]() |
OpenVPN — это система виртуальной частной сети (VPN), которая реализует методы создания безопасных соединений «точка-точка» или «сеть-сеть» в маршрутизируемых или мостовых конфигурациях и средствах удаленного доступа. Он реализует как клиентские, так и серверные приложения.
OpenVPN позволяет узлам аутентифицировать предварительно друг друга, используя общие секретные ключи , сертификаты или имя пользователя / пароль . При использовании в конфигурации с несколькими клиентами и серверами он позволяет серверу выдавать сертификат аутентификации для каждого клиента, используя подписи и центр сертификации .
Он широко использует OpenSSL шифрования библиотеку , а также протокол TLS и содержит множество функций безопасности и контроля. Он использует специальный протокол безопасности [11] который использует SSL/TLS для обмена ключами. Он способен проходить через трансляторы сетевых адресов (NAT) и межсетевые экраны . [ нужна ссылка ]
OpenVPN был портирован и встроен в несколько систем. Например, DD-WRT имеет функцию сервера OpenVPN. SoftEther VPN , многопротокольный VPN-сервер, также имеет реализацию протокола OpenVPN. [ нужна ссылка ]
Он был написан Джеймсом Йонаном и является свободным программным обеспечением , выпущенным на условиях GNU General Public License версии 2 (GPLv2). [12] Кроме того, доступны коммерческие лицензии. [13]
Архитектура
[ редактировать ]Шифрование
[ редактировать ]OpenVPN использует библиотеку OpenSSL для шифрования каналов данных и управления. Он позволяет OpenSSL выполнять всю работу по шифрованию и аутентификации, позволяя OpenVPN использовать все шифры, доступные в пакете OpenSSL. Он также может использовать функцию аутентификации пакетов HMAC , чтобы добавить дополнительный уровень безопасности к соединению (называемый создателем «брандмауэром HMAC»). Он также может использовать аппаратное ускорение для повышения производительности шифрования. [14] [15] Поддержка mbed TLS доступна начиная с версии 2.3. [16]
Аутентификация
[ редактировать ]OpenVPN имеет несколько способов аутентификации одноранговых узлов друг с другом. OpenVPN предлагает общие ключи , аутентификацию на основе сертификатов и имени пользователя и пароля. Предварительный секретный ключ является самым простым, а основанный на сертификате — наиболее надежным и многофункциональным . [ нужна ссылка ] В версии 2.0 можно включить аутентификацию по имени пользователя и паролю как с сертификатами, так и без них. Однако для использования аутентификации по имени пользователя и паролю OpenVPN зависит от сторонних модулей. [ нужна ссылка ]
сеть
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Июль 2009 г. ) |
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 , чтобы заставить пользователей подписаться на более дорогой уровень обслуживания «бизнес-уровня». Например, компания Comcast ранее заявляла, что их продукт @Home всегда считался услугой для жилых помещений и не позволял использовать коммерческие приложения. Их аргумент заключался в том, что удаленная работа через VPN может отрицательно повлиять на производительность сети их постоянных бытовых абонентов. Они предложили альтернативу @Home Professional, она будет стоить дороже, чем продукт @Home. Таким образом, любому, кто хочет использовать VPN, придется подписаться на более дорогой уровень обслуживания бизнес-класса. [20]
Когда OpenVPN использует транспорт протокола управления передачей (TCP) для создания туннеля, производительность будет приемлемой только до тех пор, пока на нетуннелируемом сетевом канале имеется достаточная избыточная полоса пропускания, чтобы гарантировать, что туннелированные таймеры TCP не истечат. [21] Если это окажется неправдой, производительность резко упадет. Это известно как «проблема сбоя TCP». [22] [23]
Безопасность
[ редактировать ]OpenVPN предлагает различные функции внутренней безопасности. Он имеет 256-битное шифрование через библиотеку OpenSSL , хотя некоторые поставщики услуг могут предлагать более низкие скорости, фактически предоставляя потребителям одни из самых быстрых VPN. Он работает в пользовательском пространстве вместо того, чтобы требовать работы IP-стека (следовательно, ядра). OpenVPN имеет возможность отказаться от привилегий root , использовать mlockall для предотвращения обмена конфиденциальных данных на диск, войти в тюрьму chroot после инициализации и применить контекст SELinux после инициализации.
OpenVPN использует собственный протокол безопасности на основе SSL и TLS. [11] вместо поддержки IKE, IPsec, L2TP или PPTP .
OpenVPN предлагает поддержку смарт-карт через криптографические токены на основе PKCS#11 .
Расширяемость
[ редактировать ]OpenVPN можно расширить с помощью сторонних плагинов или сценариев, которые можно вызывать в определенных точках входа. [24] [25] Целью этого часто является расширение OpenVPN за счет более продвинутого ведения журналов, улучшенной аутентификации с использованием имени пользователя и паролей, динамических обновлений брандмауэра, интеграции RADIUS и т. д. Плагины представляют собой динамически загружаемые модули, обычно написанные на C , а интерфейс сценариев может выполнять любые сценарии или двоичные файлы, доступные OpenVPN. В исходном коде OpenVPN [26] есть несколько примеров таких плагинов, включая PAM плагин аутентификации . Также существует несколько сторонних плагинов для аутентификации в базах данных LDAP или SQL, таких как SQLite и MySQL . [27]
Заголовок
[ редактировать ]Смещения | Октет | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Кусочек | 0 | 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 |
0 | 0 | Код операции | Идентификатор ключа | Идентификатор сеанса | |||||||||||||||||||||||||||||
4 | 32 | Идентификатор сеанса | |||||||||||||||||||||||||||||||
8 | 64 | Идентификатор сеанса | HMAC | ||||||||||||||||||||||||||||||
12 | 96 | HMAC | |||||||||||||||||||||||||||||||
⋮ | ⋮ | ||||||||||||||||||||||||||||||||
24 | 192 | ||||||||||||||||||||||||||||||||
28 | 224 | HMAC | Идентификатор пакета | ||||||||||||||||||||||||||||||
32 | 256 | Идентификатор пакета | Чистое время | ||||||||||||||||||||||||||||||
36 | 288 | Чистое время | Массив сообщений Len | Идентификатор пакета сообщения # | |||||||||||||||||||||||||||||
⋮ | ⋮ |
Платформы
[ редактировать ]Он доступен в Solaris , Linux , OpenBSD , FreeBSD , NetBSD , QNX , macOS , Windows XP и более поздних версиях . [28] OpenVPN доступен для мобильных операционных систем, включая Maemo , [29] Windows Mobile 6.5 и ниже, [30] iOS 3GS+, устройства [31] взломанные устройства iOS 3.1.2+, [32] Устройства Android 4.0+ и устройства Android, на которых была Cyanogenmod. установлена прошивка [33] или установите правильный модуль ядра. [34] Он несовместим с некоторыми операционными системами мобильных телефонов, включая Palm OS . Это не «сетевая» VPN, отображаемая в виде веб-страницы, такой как веб-доступ Citrix или служб терминалов ; программа устанавливается независимо и настраивается путем редактирования текстовых файлов вручную, а не с помощью мастера с графическим интерфейсом. OpenVPN несовместим с VPN-клиентами, использующими протоколы IPsec поверх L2TP или PPTP . Весь пакет состоит из одного двоичного файла для клиентских и серверных подключений, дополнительного файла конфигурации и одного или нескольких ключевых файлов в зависимости от используемого метода аутентификации.
Реализации прошивки
[ редактировать ]OpenVPN был интегрирован в несколько пакетов прошивки маршрутизаторов , что позволяет пользователям запускать OpenVPN в режиме клиента или сервера со своих сетевых маршрутизаторов. Например, маршрутизатор, на котором работает OpenVPN в клиентском режиме, позволяет любому устройству в сети получать доступ к VPN без необходимости установки OpenVPN.
Известные пакеты прошивки с интеграцией OpenVPN включают:
Пакет прошивок | Расходы | Разработчик | Ссылки |
---|---|---|---|
ДД-ВРТ | Бесплатно | НьюМедиа-НЕТ ГмбХ | [35] |
Горгулья | Бесплатно | Эрик Бишоп | [36] |
OpenWrt | Бесплатно | Развитие, управляемое сообществом | [37] |
ОПНсенс | Бесплатно | БВ решил | [38] |
pfSense | Бесплатно | Рубикон Коммуникейшнс, ООО (Нетгейт) | |
Помидор | Бесплатно | Кейт Мойер | [39] [40] |
OpenVPN также реализован в прошивках маршрутизаторов некоторых производителей.
Реализации программного обеспечения
[ редактировать ]OpenVPN был интегрирован в SoftEther VPN , многопротокольный VPN-сервер с открытым исходным кодом, чтобы позволить пользователям подключаться к VPN-серверу из существующих клиентов OpenVPN.
OpenVPN также интегрирован в Vyos маршрутизации с открытым исходным кодом , операционную систему , созданную на основе программного маршрутизатора Vyatta .
Лицензирование
[ редактировать ]OpenVPN доступен в двух версиях:
- OpenVPN Community Edition — бесплатная версия с открытым исходным кодом.
- Сервер доступа OpenVPN (OpenVPN-AS) основан на Community Edition, но предоставляет дополнительные платные и проприетарные функции, такие как интеграция LDAP, сервер SMB, управление веб-интерфейсом, а также набор инструментов для установки и настройки, которые, как сообщается, упрощают быстрое развертывание решение для удаленного доступа VPN. [41] [42] Версия Access Server в значительной степени зависит от iptables для балансировки нагрузки и по этой причине она никогда не была доступна в Windows. Эта версия также способна динамически создавать установщики клиента («OpenVPN Connect»), которые включают профиль клиента для подключения к определенному экземпляру сервера доступа. [43] Однако пользователю не обязательно иметь клиент сервера доступа для подключения к экземпляру сервера доступа; можно использовать клиент из OpenVPN Community Edition. [44]
См. также
[ редактировать ]- OpenConnect
- OpenSSH
- Протокол туннелирования защищенных сокетов (SSTP)
- оглушать
- Туннельное зрение
- WireGuard
Ссылки
[ редактировать ]- ^ Журнал изменений OpenVPN — Примечания к выпуску OpenVPN
- ^ «Загрузки сообщества» . openvpn.net . Проверено 20 июня 2024 г.
- ^ «Загрузки» . openvpn.net . Проверено 27 января 2023 г.
- ^ «Частный туннель VPN – приложения Android в Google Play» .
- ^ «Частный туннель VPN» . Магазин приложений . 23 октября 2014 г.
- ^ «Как подключиться к Access Server с компьютера Linux» .
- ^ «Поиск портов FreeBSD» .
- ^ «Порты OpenBSD» .
- ^ «Коллекция пакетов NetBSD: net/openvpn» .
- ^ «openvpn_COPYING на мастере · OpenVPN_openvpn» . Гитхаб . 30 июля 2019 года. Архивировано из оригинала 31 июля 2019 года . Проверено 30 июля 2019 г.
- ^ Jump up to: а б «Обзор безопасности OpenVPN» . Проверено 28 сентября 2011 г.
- ^ LinuxSecurity.com - OpenVPN: введение и интервью с основателем Джеймсом Йонаном
- ^ openvpn.net: Цены , дата обращения 12 декабря 2018 г.
- ^ Эндрю Локхарт (2006). Хаки сетевой безопасности: советы и инструменты для защиты вашей конфиденциальности . «О'Рейли Медиа, Инк.». п. 339. ИСБН 978-0-596-55143-8 .
- ^ 6нет (2008). Руководство по развертыванию IPv6 . Javvin Technologies Inc. с. 109. ИСБН 978-1-60267-005-1 .
{{cite book}}
: CS1 maint: числовые имена: список авторов ( ссылка ) - ^ Обзор изменений в OpenVPN v2.3 - ChangesInOpenvpn23 - Сообщество OpenVPN
- ^ Страница руководства OpenVPN, раздел «Параметры режима TLS»
- ^ Петрос Дарас; Оскар Майора (2013). Пользовательско-ориентированные медиа: Первая международная конференция, UCMedia 2009, Венеция, Италия, 9–11 декабря 2009 г., Пересмотренные избранные статьи . Springer Science & Business Media. п. 239. ИСБН 978-3-642-12629-1 .
- ^ Вики-сайт сообщества OpenVPN , IPv6 в OpenVPN - получено 8 декабря 2013 г.
- ^ «Протокол OpenVPN VPN» . Privacyhq.com . Проверено 24 июня 2021 г.
- ^ Мюррей, Майк (20 марта 2021 г.). «OPENVPN MTU: поиск правильных настроек» . Гик-паб . Архивировано из оригинала 20 марта 2021 года . Проверено 20 июля 2022 г.
- ^ Титц, Олаф (23 апреля 2001 г.). «Почему TCP поверх TCP — плохая идея» . Проверено 17 октября 2015 г.
- ^ Хонда, Осаму; Осаки, Хироюки; Имасе, Макото; Исидзука, Мика; Мураяма, Дзюнъити (октябрь 2005 г.). «Понимание TCP через TCP: влияние туннелирования TCP на сквозную пропускную способность и задержку». В Атикуззамане, Мохаммед; Баландин, Сергей И. (ред.). Производительность, качество обслуживания и управление коммуникационными и сенсорными сетями следующего поколения III . Том. 6011. Бибкод : 2005SPIE.6011..138H . CiteSeerX 10.1.1.78.5815 . дои : 10.1117/12.630496 . S2CID 8945952 .
- ^ «Точки входа в скрипт OpenVPN» . Openvpn.net . Проверено 30 июля 2012 г.
- ^ Точки входа подключаемого модуля OpenVPN для модулей на основе C.
- ^ «Примеры плагинов OpenVPN» . Openvpn.git.sourceforge.net . Проверено 30 июля 2012 г.
- ^ Wiki сообщества OpenVPN — связанные проекты
- ^ «Загрузки» . openvpn.net . ОпенВПН . Проверено 6 августа 2015 г.
- ^ «Пакет OpenVPN Maemo» . Maemo.org . Проверено 30 июля 2012 г.
- ^ «OpenVPN для PocketPC» . Ovpnppc.ziggurat29.com. 1 апреля 2007 года . Проверено 30 июля 2012 г.
- ^ «ОпенВПН Коннект» . OpenVPN-технологии. 16 января 2013 года . Проверено 16 января 2013 г.
- ^ «GuizmOVPN — графический интерфейс OpenVPN для iPhone/iPad» . guizmovpn.com. 30 сентября 2007 года . Проверено 30 сентября 2012 г.
- ^ «CHANGELOG в эклере из android_vendor_cyanogen от CyanogenMod» . Гитхаб . циан. 7 июля 2010 г. Проверено 28 октября 2010 г. Список изменений Nexus One Cyanogenmod
- ^ «Как установить и настроить OpenVPN на устройстве Android с root-доступом | Блог VPN содержит актуальную информацию о VPN» . Vpnblog.info . Архивировано из оригинала 26 мая 2011 года.
- ^ dd-wrt.com - OpenVPN
- ^ Горгулья Wiki - OpenVPN
- ^ «OpenVPN — OpenWrt Wiki» . openwrt.org . Проверено 11 июня 2018 г.
- ^ «opnsense.org — Объявление о выпуске OPNsense 17.1» .
- ^ «ТоматоВПН» . Tomatovpn.keithmoyer.com . Проверено 30 июля 2012 г.
- ^ LinksysInfo.org - сборка VPN с веб-интерфейсом.
- ^ «Сравнение продуктов OpenVPN» . Проверено 15 января 2017 г.
- ^ «Что такое сервер доступа OpenVPN (OpenVPN-AS)?» . Проверено 15 января 2017 г.
- ^ «Относительно репозитория Chocolatey.org · Проблема № 2 · wget/chocolatey_package_openvpn» . Гитхаб . 16 января 2017 года . Проверено 16 января 2017 г.
- ^ «Могу ли я использовать клиент OpenVPN сообщества для подключения к серверу доступа?» . Проверено 16 января 2017 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Веб-сайт сообщества
- Бриджитт, Адриан (2 февраля 2008 г.). «Презентация и демонстрация OpenVPN» . Архив . Группа пользователей Linux в Хэмпшире. Технические переговоры