OpenVPN - вероятно, наиболее развитый и гибкий VPN протокол на базе ПО с открытым исходным кодом. Обычно, он не является частью операционных систем как протоколы PPTP, L2TP, IPsec. Он распространяется в виде отдельного придложения для широкого спектра операционных систем.
В своей работе OpenVPN использует известную библиотеку OpenSSL. В ее составе которой есть такие протоколы как SSL и TSL. Их и использует OpenVPN.
У гибкости использования этого протокола существует обратная сторона медали. Она выражается в сложности настройки. Поэтому оптимальным способом настройки соединения является установка конфигурационного файла с сервера. Обычно такой файл имеет расширение .ovpn или .config.
OpenVPN может работать в двух режимах - сетевом или канальном. В сетевом будет создан интерфейс TUN, а в канальном используется интерфейс TAP. Для тех, кто не знаком с моделью OSI немного поясним разницу этих двух режимов. В случае канального режима (TUN) между сервером и клиентом используется соединение при помощи IP адресов. В случае канального режима (TAP) стороны используют кадры Ethernet с виртуальными MAC адресами. А уже поверх них начинается взаимодействие при помощи IP адресов.
В VPNKI мы используем TUN-соединение. У нас не было задачи передавать какой-либо другой вид трафика, отличный от TCP/IP. Но если бы мы захотели передавать отличный от TCP/IP трафик, то использовали бы режим TAP.
Стоит отметить, что OpenVPN может функционировать с использованием как TCP, так и UDP протокола. В системе VPNKI мы часто используем работу OpenVPN через UDP. Такая работа является более предпочтительной с точки зрения скорости соединения. Этот режим позволяет эффективно использовать полосу пропускания канала. Однако, наш пользователь может запустить OpenVPN и поверх протокола TCP. Это даст пользователю более четкой контроль над установлением и обрывом соединения.
Кроме того, пользователь может выбрать - использовать ли шифрование или нет. Отключение шифрования позволит существенно снизить нагрузку на оборудование сервера и клиента. Это может стать важным при использовании в качестве клиентского оборудования маломощных одноплатных компьютеров.
В протоколе OpenVPN могут быть использованы три различных метода аутентификации. Это аутентификация по сертификату, по логину и паролю или при помощи общего ключа. В системе VPNKI мы используем метод аутентификации по логину и паролю. Этот метод нам ближе, так как он позволяет сохранить единство с такими протоколами как PPTP и L2TP. Однако при использовании аутентификаии по логину и паролю, все равно требуется серверный сертификат. Его вы получаете в составе файла .ovpn.
Как было сказано выше, в своей работе OpenVPN использует протоколы SSL3 и TLS1.2. Это определяет способность протокола шифровать данные. При этом могут быть использованы весьма различные алгоритмы шифрования с различной длиной ключа. В VPNKI используется шифрование с длиной ключа в 128 бит. Этого вполне достаточно для обычного использования. В то время как увеличение длины ключа ведет к существенному увеличению необходимых вычислительных ресурсов. Как на сервере, так и на стороне клиента.
Данные, передаваемые внутри OpenVPN, могут подвергаться компрессии. В качестве протокола компрессии используется алгоритм LZO. Он характеризуется очень высокой скоростью распаковки данных, однако в системе VPNKI мы не используем компрессию данных.
Так как соединение OpenVPN осуществляется поверх протокола UDP, то в нем отсутствие понятие "сессии". Все пакеты доставляются на другую сторону без подтверждения о принятии. С одной стороны это ускоряет процесс взаимодействия. С другой стороны усложняет процесс контроля за работоспособностью соединения. Если "слушающая" сторона перестала принимать пакеты, то передающая ничего об этом не узнает. Такая ситуация может породить пробелмы с потерей пакетов в туннельном соединении.
Разрыв VPN соединения осуществляется со стороны сервера путем информирования клиента об окончании соединения. В случае, если клиент хочет разорвать соединение, то ему необходимо уведомить сервер о своем желании. Для этого используется параметр explicit-exit-notify. В этом случае клиент отсылает по UDP на сервер информацию о необходимости отключения. Этот параметр применим только к соединению поверх UDP протокола.
Настройки OpenVPN позволяют переподключать соединение в случае обрыва связи. Однако, если стороны используют UDP, то обрыв соедиенения на клиенте может оказаться некорректным (односторонним). В этом случе переподключение разорванного соединения может стать проблемой.
Плюсы:
Минусы:
Далее:
PPTP.
L2TP.
Кроме базового функционала по объединению VPN туннелей с различными протоколами, в системе VPNKI вы можете воспользоваться удаленным доступом к компьютеру или камере, используя: