Применение 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.
список литературы