Одной из реализаций протокола VPN является OpenVPN, построенная на открытом исходном коде. Она была разработана Джеймсом Йонаном и используется по лицензии GNU GPL. Эта программа позволяет устанавливать зашифрованные соединения типа клиенты-сервер или точка-точка между сетевым оборудованием (компьютеры, маршрутизаторы, телефоны и т.д.). Также позволяет устанавливать соединения между машинами, находящимися за файерволами или NAT без внесения изменений в их настройки.

Для установления безопасного канала, OpenVPN использует в работе библиотеку OpenSSL. В результате используется все типы шифрования доступные, библиотеке. Для увеличения безопасности в OpenVPN может использоваться авторизация HMAC, а для увеличения скорости шифрования - аппаратное ускорение.

В настоящее время технология OpenVPN используется в операционных системах FreeBSD, NetBSD, OpenBSD, Solaris, GNU/Linux, Apple Mac OS X, QNX, Microsoft Windows а также Android.

Варианты аутентификации

OpenVPN позволяет производить несколько видов аутентификации:

  1. Аутентификация на основе сертификатов. Позволяет наиболее гибко производить настройки.
  2. С помощью логина и пароля. Не используется сертификат клиента, но сертификат сервера необходим для установки соединения.
  3. По предустановленному ключу. Наиболее простой метод подключения.

Сеть

Все сетевые операции OpenVPN проводит через UDP порт, либо через TCP. Программа может работать через большую часть прокси-серверов, включая HTTP, NAT а также другие сетевые фильтры. Сервер OpenVPN имеет возможность передачи клиенту сетевых настроек, таких как IP-адреса, параметры маршрутизации, настройки соединения.

Технологи OpenVPN может использовать два вида сетевых интерфейсов, с помощью драйвера TUN/TAP. Может создать IP туннель TUN (Layer 3-based) или Ethernet подключение TAP (Layer 2-based), которое будет передавать Ethernet трафик. Также может использовать библиотеку сжатия данных LZO, которая будет уменьшать объем передаваемых данных. В версии 2.0 появилась возможность контролировать одновременно несколько туннелей. До этого версия 1.0 позволяла создавать только 1 туннель на процесс.

Использование протоколов UDP и TCP в OpenVPN позволяет заменить IPsec, в случаях когда провайдер или администратор интернета блокирует некоторые протоколы VPN. PPTP или L2TP не имеют такой возможности.