Автор: Ралько, Андрей
Интернет порой напоминает огромную шумную рыночную площадь: не слишком подходящее место для разговора с глазу на глаз, проведения совещаний или обмена важными документами. Большинство использующихся сетевых протоколов небезопасны, поскольку информация по ним обычно передается в незашифрованном виде и легко может быть перехвачена не в меру любопытным сотрудником провайдера или юным хакером, только-только узнавшим, что такое сниффер.
Возникает желание создать собственный уголок в этом хаосе - тихий и скрытый от посторонних глаз. Таким «уголком» являются VPN (Virtual Private Network), виртуальные частные сети. Данные в них передаются через Интернет, но при этом подключенные к VPN компьютеры искренне считают, что находятся в одной локальной сети. Эта технология использует механизм туннелирования: информация передается через виртуальный защищенный туннель. У каждого туннеля имеется инициатор, шифрующий пакеты локальной сети и включающий их в IP-пакеты, передаваемые через Интернет, и терминатор, извлекающий пакеты на принимающей стороне. Алгоритмы проверки целостности данных гарантируют, что во время передачи по публичным сетям они не были модифицированы в результате ошибки или намеренно.
Помимо криптографической защиты, VPN в первую очередь полезна для объединения нескольких территориально удаленных друг от друга локальных сетей и подключения удаленных пользователей к локальной сети. Поэтому рассматриваемая технология оказалась очень привлекательна для бизнеса, обеспечивая прозрачный для пользователя механизм построения единой корпоративной информационной среды без дорогих выделенных каналов связи. Преимущества VPN оценили и провайдеры - владельцы домовых и районных сетей. Многие производители сетевого оборудования в настоящее время предлагают аппаратные и программные средства для построения VPN.
Приватизируем сами
Помимо сложных и дорогих решений, зачастую требующих специального аппаратного обеспечения или дорогого ПО, существуют продукты, позволяющие организовать VPN буквально «на коленке», без особых навыков и затрат. Они могут уступать корпоративным в скорости, но должны быть простыми в конфигурировании, гибкими в использовании, мультиплатформными, доступными, желательно открытыми. Создание такого ПО стало возможно с появлением концепции интерфейсов TUN/TAP, которые представляют собой виртуальные сетевые адаптеры. Интерфейс TUN эмулирует устройство типа точка-точка (например, модем), а TAP - карту Ethernet. Для решения задачи безопасности в этих продуктах применяются либо собственные варианты известных криптографических алгоритмов, либо реализации широко распространенного и проверенного стандарта SSL.
Обычным пользователям, как правило, требуется объединить несколько территориально распределенных (и подключенных к Интернету через различных провайдеров) компьютеров в одноранговую виртуальную сеть с единым адресным пространством. Помимо безопасности связи, подобная сеть позволяет использовать все преимущества «локального» соединения - например, обмениваться файлами с помощью встроенных средств Windows или играть в многопользовательские игры без подключения к центральному серверу.
Рассмотрим две программы, использующие механизм TUN/TAP-интерфейсов: OpenVPN и Hamachi. Первая из них является полностью открытым решением, а вторая - свободно распространяемым, но closed-source-продуктом.
Золотая рыбка Hamachi
Начнем с Hamachi (hamachi.cc). Она представляет собой небольшую утилиту для создания безопасных соединений между компьютерами через Интернет. Для туннелирования служит протокол UDP. В процессе подключения используется третий компьютер - backend-сервер Hamachi, который необходим лишь для управления и не участвует непосредственно в передаче трафика. У Hamachi существуют версии для Windows 2000/XP/2003, Linux и Mac OS X, для двух последних операционных систем - только в консольном варианте.
После установки в системе появится дополнительный сетевой адаптер. Если установлен файрволл, необходимо уточнить его настройки для этого виртуального устройства. При первом запуске программа соединяется с backend-сервером и получает адрес, уникальный в пределах сети Hamachi. Он становится первичным идентификатором и используется для связи с другими подключенными компьютерами. Для удобства система позволяет кроме адреса определить также и ник.
После получения адреса можно создать свою собственную виртуальную сеть либо примкнуть к уже существующим. К сожалению, аскетичный интерфейс программы не позволяет увидеть список всех доступных для подключения сетей, и название нужно знать заранее. Для проверки Hamachi предлагает подключиться к сети с именем test, используя пароль secret. Множество публичных Hamachi-сетей можно найти на форуме домашнего сайта программы (forums.hamachi.cc). Подавляющее большинство из них - игровые, хотя попадаются и чисто файлообменные P2P-сети. После успешной авторизации название сети появляется в общем списке, а под ним располагаются адреса и ники других компьютеров, подключенных к той же сети: активные подсвечиваются белым, а неактивные - серым. Индикатор перед каждым адресом может быть зеленым или желтым: зеленый цвет говорит о доступности соединения с компьютером, желтый - сигнализирует, что есть какие-то проблемы - например, из-за файрволла. После успешного соединения возможно взаимодействие с другими активными в данный момент компьютерами, как в обычной локалке. Существует ограничение на максимальное количество компьютеров, способных подключиться к одной сети Hamachi (не больше 16 для обычных, не больше 256 для премиум-сетей), и на число одновременно подключенных сетей (не больше 64), поэтому после завершения работы с чужой сетью рекомендуется отключаться.
Наигравшись с чужими Hamachi-сетями, приступаем к созданию своей собственной. Придумываем имя, вводим пароль - и в нашем списке появляется новая сеть, пока еще пустая, без пользователей. Осталось только сообщить имя и пароль приятелю из другого района или подруге из далекой Испании - и можно менять мегабайты на мегабайты или зарядить партию-другую в WarCraft 3. Будучи хозяином сети, вы вправе удалять из нее подключившихся пользователей, тогда как находясь в чужой, можно лишь блокировать передачу данных между своим компьютером и компьютерами других юзеров этой сети.
Учтите, что покинуть собственноручно созданную сеть нельзя, ее можно только удалить (Delete… из контекстного меню). Удаление сети повлечет за собой изгнание из нее всех подключившихся пользователей и закрытие всех активных соединений между ними, так что, если ваше детище успело разрастись и приобрести популярность, поступок сей будет поистине геростратовским.
Открытая приватность OpenVPN
OpenVPN - это удобный и надежный демон для работы с виртуальными защищенными сетями, основанный на концепции TUN/TAP-интерфейсов и обладающий богатыми возможностями. OpenVPN является кроссплатформной системой: существуют версии под Linux, Windows 2000/XP/2003, OpenBSD, FreeBSD, NetBSD, Mac OS X и Solaris. Для криптографической защиты данных используется SSL/TSL, а именно его реализация в библиотеке OpenSSL. Последнюю версию программы можно получить на .
Вышедший из Unix-среды, OpenVPN представляет собой консольное приложение, но для удобства работы в Windows существует GUI-надстройка, доступная на openvpn.se (автор Mathias Sundman). Можно также запустить OpenVPN как службу Windows.
Программа обладает гибкими возможностями конфигурирования, поддерживает динамические IP-адреса и NAT, позволяет настраивать маршрутизацию при соединении нескольких сетей, адаптивно сжимать данные в соединении и уравнивать нагрузку на серверы. Это выводит OpenVPN за рамки приложений пользовательского масштаба, и его частенько используют, например, провайдеры и небольшие компании.
В инсталляционном пакете имеются конфигурационные файлы для организации равноправного соединения точка-точка между компьютерами (sample.ovpn) и для реализации клиент-серверного варианта (server.ovpn и client.ovpn). В первом случае для шифрования используется 2048-битный статический ключ, который нужно сгенерировать на одной стороне и переслать другой каким-нибудь безопасным способом. Для инкапсуляции допускается использовать TCP или UDP (рекомендуется UDP), а в качестве интерфейса - включение либо TAP-, либо TUN-виртуального устройства. В первом случае создается виртуальная Ethernet-подсеть, а во втором - IP-соединение точка-точка. В системе может быть создано несколько отдельных TAP/TUN-интерфейсов, которые могут работать одновременно.
Поставляемые в инсталляционном пакете конфигурационные файлы практически готовы к работе, нужно лишь указать в файле клиентской стороны внешний IP-адрес хоста, который будет сервером. Во время работы демон ведет подробный лог всех событий: процесса инициализации, верификации, выделения адресов, подключений/отключений.
Что в итоге
Теперь о результатах тестирования программ. Hamachi порадовала исключительной простотой в использовании, она идеально подойдет тем, у кого нет времени и желания копаться в конфигурационных файлах и изучать спецификации. Достоинства - солидное количество уже существующих сетей по интересам, к которым можно присоединиться, и встроенный чат-сервис (тоже шифрованный). Благодаря наличию backend-сервера, управляющего подключением/отключением пользователей, Hamachi-клиенты отлично работают в сетях с динамическим выделением адресов и за большинством NAT-устройств. К недостаткам можно отнести ограничение по количеству компьютеров, подключаемых к одной сети, - зачастую при попытке подсоединения выясняется, что лимит уже исчерпан.
OpenVPN требует большего времени на установку и конфигурирование, но позволяет создать полностью независимую виртуальную сеть. Если требования к безопасности высоки, лучше избегать любых «третьих сторон», да и закрытость кода Hamachi внушает опасения. Благодаря богатым возможностям конфигурирования, OpenVPN больше подойдет любителям экспериментировать или системным администраторам, нежели пользователям, уважающим принцип Plug amp;Play во всем. Он прекрасно работает через файрволлы и NAT-устройства, но вот для случая, когда обе стороны используют динамические IP-адреса, изменяющиеся при каждом реконнекте с Интернетом, у OpenVPN нет встроенных возможностей. Для решения этой (кстати, весьма типичной для пользователей домашнего Интернета) проблемы FAQ на сайте предлагает использовать сторонние динамические DNS-сервисы вроде , то есть присвоить каждой из сторон доменные имена, выданные сервисом, и прописать их в конфигурационных файлах. При этом ответственность за корректное разрешение IP-адреса, вновь полученного другой стороной после реконнекта, возлагается на DNS-сервис.
Для тестирования скорости передачи через тоннели использовалась пара одинаковых 256 кбит/c ADSL-подключений («Стрим»), находящихся в пределах одного города. Оценка реальной пропускной способности исходного канала производилась онлайн-"спидометром" , который для подключения на стороне источника данных показал скорость передачи порядка 100 кбит/с (12,5 Кбайт/с).
Скорость передачи, измеренная на приемной стороне при закачке непрерывного файла через тоннель Hamachi, составила около 11 Кбайт/с, что всего на 12% меньше оцененной пропускной способности канала. Таким образом, накладные расходы на туннелирование и шифрование оказались практически незаметными. При передаче через OpenVPN тех же самых данных и оставленных по умолчанию параметрах шифрования в конфигурационных файлах результирующая скорость получилась несущественно (на 5-7 %) больше той, что показала Hamachi.