International conference of developers
and users of free / open source software

Применение OpenVPN для построения виртуальных частных сетей

Евгений Косаржевский, Минск, phaoost@phaoost.net

LVEE 2009

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

краткое описание OpenVPN. Возможности. Область применения

OpenVPN является открытым проектом. Программа позволяет создавать туннели между двумя точками в сети по протоколам TCP или UDP используя шифрование SSL. Одно из неоспоримых преимуществ — возможность соединять две точки сети через любой порт, что существенно затрудняет обнаружение и блокировку туннеля.

Туннели OpenVPN можно применять для безопасного объединения сетей или серверов через интернет, обхода блокировок локальных сетевых экранов или ограничений провайдеров, контроля за использованием сетевого трафика в рамках одной сети, безопасного доступа на сервер или в сеть.

туннели Layer2 и Layer3

С помощью OpenVPN можно создавать туннели второго (канального) и третьего (сетевого) уровня. Планирование уровня туннеля осуществляется на начальном этапе конфигурирования и выбирается исходя из потребности.

использование

Возможны следуюище варианты использования OpenVPN:

  • равноправное соединение двух пиров – простейший вариант конфигурации, при котором используется общий ключ для шифрования SSL на обеих сторонах туннеля.
  • подключение нескольких клиентов к одному серверу. В данном варианте как правило каждому клиенту генерируется отдельный сертификат SSL для доступа к серверу (но возможен вариант, когда клиенты используют один сертификат).
  • объединение сетей с помощю построения сетевых мостов. В этом варианте, как правило, используется туннель второго уровня. Виртуальный адаптер объединяется с физическим в адаптер типа мост. Возможно как равноправное соединение хостов так и соединение с использованием клиентских сертификатов.

варианты аутентификации клиентов

Клиенты могут подключаться, используя различные варианты аутентификации. В простейшем случае используются только сертификаты, но возможна аутентификация по идентификатору и паролю с передачей аутентификационных параметров внешним серверам. В качестве внешних серверов аутентификации могут выступать LDAP, ActiveDirectory, Radius.

производительность на протоколах TCP и UDP. Оптимизация использования пропускного канала

Скорость передачи и время задержки может варироваться в зависимости от параметров канала для каждого клиента. Как правило, UDP является наиболее предпочтительным протоколом из-за меньшей задержки пакетов, однако соединение по UDP не всегда возможно установить (например в случае если клиент находится за прокси-сервером). При использовании TCP можно получить хорошие результаты, понижая значение MTU до достижения оптимальной скорости либо времени задержки. Для уменьшения времени отклика на TCP-соединении рекомендуется использовать параметр сокета TCP_NODELAY.

Также OpenVPN поддерживает сжатие lzo для понижения объема используемого трафика.

совместимость. Нюансы использования на различных ОС (GNU/Linux, Windows, Mac OS X, маршрутизаторы)

Некоторые параметры OpenVPN специфичны для конкретных операционных систем. Так, режим fast-io, ускоряющий UDP-соединение, может использоваться только в GNU/Linux.

В Windows системах часто возникают проблемы с изменениями маршрутов, для решения которых существует опция route-method.

OpenVPN портирован в MacOS X — существует свободно распространяемый проект tunnelblick. Параметр TCP_NODELAY не поддерживается ядром этой системы. Существует также коммерческий проект viscocity для этой операционной системы.
OpenVPN также может использоваться на маршрутизаторах некоторых производителей (например, Linksys и Mikrotik).

заключение. Сильные и слабые стороны. Расширение возможностей за счет использования скриптов

Основный достоинства OpenVPN — это гибкость использования, высокая степень защиты передаваемых данных за счет шифрования SSL, совместимость со всеми широко используемыми операционными системами и трудность обнаружения туннелей.
Из-за существующих ограничений невозможно использовать один процесс одновременно для соединений TCP и UDP.

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

список литературы

  1. OpenVPN 2.1 Manual
  2. OpenVPN Ethernet Bridging HowTo
  3. LDAP authentication and authorization plugin for OpenVPN 2.x
  4. Active Directory Authentication for OpenVPN
  5. Radiusplugin for OpenVPN
  6. OpenVPN client for Mac OS X