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 доступен в двух версиях:
{{cite book}}
: CS1 maint: numeric names: authors list (link)