stringtranslate.com

OpenVPN

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

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

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

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

Он был написан Джеймсом Йонаном и является свободным программным обеспечением , выпущенным на условиях GNU General Public License версии 2 (GPLv2). [13] Кроме того, доступны коммерческие лицензии. [14]

Архитектура

Шифрование

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

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

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

Нетворкинг

OpenVPN может работать через транспортные протоколы User Datagram Protocol (UDP) или Transmission Control Protocol (TCP), мультиплексируя созданные SSL-туннели на одном порту TCP/UDP [18] (RFC 3948 для UDP). [19]

Начиная с версии 2.3.x, OpenVPN полностью поддерживает IPv6 как протокол виртуальной сети внутри туннеля, и приложения OpenVPN также могут устанавливать соединения через IPv6. [20] Он может работать через большинство прокси-серверов (включая 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, должен будет подписаться на более дорогой уровень обслуживания бизнес-класса. [21]

Когда OpenVPN использует транспорты протокола управления передачей (TCP) для создания туннеля, производительность будет приемлемой только до тех пор, пока на нетуннелируемом сетевом канале достаточно избыточной полосы пропускания, чтобы гарантировать, что туннелируемые таймеры TCP не истекут. [22] Если это не так, производительность резко падает из-за проблемы сбоя TCP . [23] [24]

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

OpenVPN предлагает различные внутренние функции безопасности. Он имеет шифрование до 256 бит через библиотеку OpenSSL , хотя некоторые поставщики услуг могут предлагать более низкие скорости, эффективно предоставляя некоторые из самых быстрых VPN, доступных потребителям. OpenVPN также поддерживает Perfect Forward Secrecy (PFS) , который регенерирует ключи шифрования через заданные интервалы, гарантируя, что даже если один ключ скомпрометирован, предыдущие и будущие данные останутся в безопасности. Кроме того, OpenVPN можно настроить с различными шифрами шифрования, такими как ChaCha20 и AES-256. [25] Он работает в пользовательском пространстве, а не требует работы стека IP (следовательно, ядра). OpenVPN имеет возможность отбрасывать привилегии root , использовать mlockall для предотвращения подкачки конфиденциальных данных на диск, входить в chroot-окружение после инициализации и применять контекст SELinux после инициализации.

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

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

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

OpenVPN может быть расширен с помощью сторонних плагинов или скриптов, которые могут быть вызваны в определенных точках входа. [26] [27] Целью этого часто является расширение OpenVPN с помощью более продвинутого журналирования, улучшенной аутентификации с именем пользователя и паролями, динамических обновлений брандмауэра, интеграции RADIUS и так далее. Плагины представляют собой динамически загружаемые модули, обычно написанные на C , в то время как интерфейс скриптов может выполнять любые скрипты или двоичные файлы, доступные OpenVPN. В исходном коде OpenVPN [28] есть несколько примеров таких плагинов, включая плагин аутентификации PAM . Существует также несколько сторонних плагинов для аутентификации с использованием баз данных LDAP или SQL, таких как SQLite и MySQL . [29]

Заголовок

Платформы

Он доступен в Solaris , Linux , OpenBSD , FreeBSD , NetBSD , QNX , macOS и Windows XP и более поздних версиях . [30] OpenVPN доступен для мобильных операционных систем, включая Maemo , [31] Windows Mobile 6.5 и ниже, [32] устройств iOS 3GS+, [33] взломанных устройств iOS 3.1.2+, [34] устройств Android 4.0+ и устройств Android, на которых была прошита фирменная прошивка Cyanogenmod [35] или установлен правильный модуль ядра. [36] Он несовместим с некоторыми операционными системами мобильных телефонов, включая Palm OS . Это не «веб-ориентированный» VPN, отображаемый в виде веб-страницы, такой как Citrix или Terminal Services Web access ; программа устанавливается независимо и настраивается путем редактирования текстовых файлов вручную, а не с помощью мастера на основе графического интерфейса. OpenVPN несовместим с VPN-клиентами, которые используют протоколы IPsec по протоколам L2TP или PPTP . Весь пакет состоит из одного двоичного файла для клиентских и серверных подключений, необязательного файла конфигурации и одного или нескольких ключевых файлов в зависимости от используемого метода аутентификации.

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

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

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

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

Реализации программного обеспечения

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

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

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

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

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

Ссылки

  1. ^ Журнал изменений OpenVPN — Заметки о выпуске OpenVPN
  2. ^ "Загрузки сообщества". openvpn.net . Получено 20 июня 2024 г. .
  3. ^ "Загрузки". openvpn.net . Получено 27 января 2023 г. .
  4. ^ «Частный туннельный VPN — приложения для Android в Google Play».
  5. ^ "Private Tunnel VPN". App Store . 23 октября 2014 г.
  6. ^ «Как подключиться к Access Server с компьютера Linux».
  7. ^ "Поиск портов FreeBSD".
  8. ^ "Порты OpenBSD".
  9. ^ «Коллекция пакетов NetBSD: net/openvpn».
  10. ^ "openvpn_COPYING at master · OpenVPN_openvpn". GitHub . 30 июля 2019 г. Архивировано из оригинала 31 июля 2019 г. Получено 30 июля 2019 г.
  11. ^ ab "Обзор безопасности OpenVPN" . Получено 28 сентября 2011 г.
  12. ^ Бишофф, Пол (31 августа 2018 г.). «6 инструментов с открытым исходным кодом для создания собственного VPN». Opensource.com . Архивировано из оригинала 31 августа 2018 г. Получено 30 июля 2019 г.
  13. ^ LinuxSecurity.com - OpenVPN: Введение и интервью с основателем Джеймсом Йонаном
  14. ^ openvpn.net: Цены, получено 12 декабря 2018 г.
  15. ^ Эндрю Локхарт (2006). Сетевые хаки безопасности: советы и инструменты для защиты вашей конфиденциальности. "O'Reilly Media, Inc.". стр. 339. ISBN 978-0-596-55143-8.
  16. ^ 6net (2008). Руководство по развертыванию IPv6. Javvin Technologies Inc. стр. 109. ISBN 978-1-60267-005-1.{{cite book}}: CS1 maint: numeric names: authors list (link)
  17. ^ Обзор изменений в OpenVPN v2.3 - ChangesInOpenvpn23 - Сообщество OpenVPN
  18. ^ Страница руководства OpenVPN, раздел «Параметры режима TLS»
  19. ^ Петрос Дарас; Оскар Майора (2013). Медиа, ориентированные на пользователя: Первая международная конференция, UCMedia 2009, Венеция, Италия, 9-11 декабря 2009 г., Пересмотренные избранные статьи. Springer Science & Business Media. стр. 239. ISBN 978-3-642-12629-1.
  20. ^ OpenVPN community wiki, IPv6 в OpenVPN - получено 8 декабря 2013 г.
  21. ^ "Протокол OpenVPN VPN". privacyhq.com . Получено 24 июня 2021 г. .
  22. ^ Мюррей, Майк (20 марта 2021 г.). «OPENVPN MTU: поиск правильных настроек». The Geek Pub . Архивировано из оригинала 20 марта 2021 г. Получено 20 июля 2022 г.
  23. ^ Тиц, Олаф (23 апреля 2001 г.). «Почему TCP поверх TCP — плохая идея» . Получено 17 октября 2015 г.
  24. ^ Хонда, Осаму; Охсаки, Хироюки; Имасе, Макото; Ишизука, Мика; Мураяма, Дзюнъити (октябрь 2005 г.). «Понимание TCP через TCP: влияние туннелирования TCP на сквозную пропускную способность и задержку». В Atiquzzaman, Mohammed; Баландин, Сергей И. (ред.). Производительность, качество обслуживания и управление сетями связи и датчиков следующего поколения III . Том 6011. Bibcode : 2005SPIE.6011..138H. CiteSeerX 10.1.1.78.5815 . doi : 10.1117/12.630496. S2CID  8945952. 
  25. ^ "OpenVPN explained: Definition, how it works, and safety | NordVPN". nordvpn.com (на немецком языке). 29 ноября 2023 г. Получено 10 сентября 2024 г.
  26. ^ "Точки входа скрипта OpenVPN". Openvpn.net . Получено 30 июля 2012 г. .
  27. ^ Точки входа плагина OpenVPN для модулей на основе C.
  28. ^ "Примеры плагинов OpenVPN". Openvpn.git.sourceforge.net . Получено 30 июля 2012 г. .
  29. ^ OpenVPN Community Wiki - Связанные проекты
  30. ^ "Загрузки". openvpn.net . OpenVPN . Получено 6 августа 2015 г. .
  31. ^ "OpenVPN Maemo package". Maemo.org . Получено 30 июля 2012 г.
  32. ^ "OpenVPN для PocketPC". Ovpnppc.ziggurat29.com. 1 апреля 2007 г. Получено 30 июля 2012 г.
  33. ^ "OpenVPN Connect". OpenVPN Technologies. 16 января 2013 г. Получено 16 января 2013 г.
  34. ^ "GuizmOVPN - OpenVPN GUI для iPhone/iPad". guizmovpn.com. 30 сентября 2007 г. Получено 30 сентября 2012 г.
  35. ^ "CHANGELOG в eclair из CyanogenMod's android_vendor_cyanogen". GitHub . cyanogen. 7 июля 2010 . Получено 28 октября 2010 .Список изменений Cyanogenmod для Nexus One
  36. ^ "Как настроить OpenVPN на устройстве Android с root-доступом | VPN-блог — актуальная информация о VPN". Vpnblog.info . Архивировано из оригинала 26 мая 2011 г.
  37. ^ dd-wrt.com - OpenVPN
  38. ^ Горгулья Wiki - OpenVPN
  39. ^ "OpenVPN - OpenWrt Wiki". openwrt.org . Получено 11 июня 2018 г. .
  40. ^ "opnsense.org - Анонс выпуска OPNsense 17.1".
  41. ^ "TomatoVPN". Tomatovpn.keithmoyer.com . Получено 30 июля 2012 г. .
  42. ^ LinksysInfo.org – сборка VPN с веб-интерфейсом
  43. ^ "Сравнение продуктов OpenVPN" . Получено 15 января 2017 г.
  44. ^ "Что такое OpenVPN Access Server (OpenVPN-AS)?" . Получено 15 января 2017 г. .
  45. ^ "Относительно репозитория chocolatey.org · Проблема № 2 · wget/chocolatey_package_openvpn". GitHub . 16 января 2017 г. . Получено 16 января 2017 г. .
  46. ^ «Могу ли я использовать клиент OpenVPN сообщества для подключения к серверу доступа?» . Получено 16 января 2017 г.

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