Как объединить две ЛВС: бюджетный вариант
Хотя в статье речь пойдет о том, как объединить две локальные сети при помощи специализированного бесплатного продукта, предназначенного для создания защищенных туннелей (openVPN), я начну издалека: сначала поговорим про локальные и глобальные сети (в общем) и про мосты (в частности). Вообще-то идея о связывании двух и более территориально разнесенных сетей совсем не нова: у предприятий есть филиалы, у банков — отделения, а у коммерческих структур — региональные подразделения. Разумеется, логично предполагать, что любому управляющему органу гораздо выгоднее видеть всю инфраструктуру сети как единое целое, прозрачное для любых действий и приложений пространство, объединенное, скажем, по адресному признаку и не зависящее от территориального расположения. Конечно, администратору может быть известно, что подсеть с адресом 10.0.0.ххх — это центральный офис, 10.0.1.ххх — областной филиал, а 10.0.2.ххх принадлежит производству в Сибири, но для сотрудников всего предприятия это останется за кулисами: они-то «видят» публичные каталоги на складском сервере у себя в папке «Сетевое окружение» и им необязательно знать, что физически до него — тысячи километров. Точно так же сотрудник филиала, например менеджер по продажам, открывая сессию «1С:Предприятие», даже не представляет, что напрямую работает с сервером в главном офисе.
Лет 15–20 назад такой режим работы реализовался посредством специальных аппаратных средств — в частности, модемов, которые могли связать по обычной коммутируемой телефонной линии (ТфоП) или специализированной выделенной две сети. Сейчас аренда подобного канала и невыгодна, и не нужна: в связи с распространением Интернета вполне достаточно организовать подключение каждой сети к своему региональному провайдеру, получить выделенный IP-адрес и связываться между собой напрямую. Но тут возникает вопрос: а как предотвратить попадание закрытой информации в общедоступную сеть? На помощь приходит туннелирование: соединение «точка-точка» между серверами обеспечивает виртуальную «трубу», внутри которой проходит трафик, требующий защиты. Такая «труба», именуемая каналом VPN, хорошо защищена протоколами шифрования, а конфиденциальность подключения обеспечивается специальными электронными уникальными сертификатами, которыми снабжены оба сервера.
В итоге мы связали два узла между собой, осталось только перенаправить данные, циркулирующие внутри «трубы», в локальные сети. Логически (реже физически) это решается на уровне двух адаптеров на одном сервере, например: один подсоединен к каналу VPN, второй — к ЛВС предприятия. Обычно используется только один физический адаптер, второй представляет собой программное устройство, перенаправляющее свои пакеты данных на один и тот же аппаратный сетевой контроллер.
Для того чтобы пакеты попадали с одного на другой, организуется объединение обеих адаптеров мостовым соединением, мостом, что позволяет перенаправлять одни и те же данные в оба адаптера. Соответственно, схема обмена данными между двумя компьютерами, разделенными территориально, выглядит так: компьютер в ЛВС филиала — ЛВС филиала — (адаптер сервера филиала — адаптер VPN филиала) — туннель через Интернет — (адаптер VPN главного офиса (ГО) — адаптер ЛВС ГО) — ЛВС ГО. Скобками здесь показаны собственно те самые мосты.
Осталось добавить, что виртуальный (программный, логический) адаптер создается посредством специальной программы (в данном случае — openVPN), а мост — средствами самой операционной системы Windows. Причем создание моста — процедура простейшая: в папке «Сетевые подключения» достаточно выбрать (удерживая Ctrl) оба адаптера, нажать правой кнопкой на любом из них и выбрать в меню пункт «Создать мост». Элементарно? Да. Но вот процедура настройки логического адаптера и создание туннеля уже не столь тривиальна, поэтому на ней остановимся подробнее.
Загрузив версию OpenVPN для Windows, следует скопировать ее на сервер, который будет применяться в качестве сервера VPN, и запустить программу установки. Выполнив все этапы данной процедуры (которая состоит в развертывании OpenVPN, программы настройки графического интерфейса OpenVPN и инструмента генерации запроса сертификата) и обязательно дав согласие на установку «несертифицированного» оборудования TAP (TAP-Win32 Adapter V9), получаем требуемый комплект ПО в папке C:\Program Files\OpenVPN и новый адаптер — в папке «Сетевые подключения». Сразу же можно связать его с существующим адаптером ЛВС в мост и больше к этому не возвращаться.
Следующий шаг — установка серверной части ПО. К сожалению, разработчики не стали делать полноценный интерфейс для конфигурирования параметров, а потому работать придется с текстовым редактором. Лично я предпочитаю Bred3, но это уже дело вкуса. Для начала открываем папку C:\Program Files\OpenVPN\sample-config\ и копируем оттуда файл server.ovpn в папку config. Лучше всего переименовать данный файл во что-то свое, но необязательно. Поскольку мы предполагаем работу в режиме «мост», в этом файле надо изменить параметр dev, выбрав строку dev tap. Порт (1194) и протокол (UDP) лучше оставить как есть, если ваш провайдер не блокирует трафик по указанному протоколу и порту — в противном случае этот вопрос придется решать с ним.
Затем настраиваем метод аутентификации соединения. Для соединений, требующих повышенной безопасности, следует настроить TLS с собственной парой сертификат/ключ на обоих концах соединения. В нашем примере для настройки VPN-соединения используется статический ключ: сервер будет принимать только соединения OpenVPN с таким же статическим ключом.
В меню Start, All Programs, OpenVPN следует щелкнуть на пункте Generate a static OpenVPN key. В результате запускается простая консольная программа, которая генерирует ключ и копирует его в файл C:\Program Files\OpenVPN\config\key.txt. Любой обладатель статического ключа сможет установить соединение с конечной точкой OpenVPN, поэтому его следует хранить в секрете, а передавать пользователям только по закрытым каналам. Статического ключа вполне достаточно, чтобы связать две удаленные сети через OpenVPN.
Если пример файла конфигурации .ovpn был предварительно скопирован, то придется закомментировать параметры
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem.
По умолчанию они относятся к шифрованию TLS/SSL и требуют предварительной генерации сертификатов как для клиентов, так и для сервера. Это придется проделать, если необходима повышенная безопасность соединения VPN.
Проверяем файл конфигурации OpenVPN: он должен содержать команду Secret, за которой следует имя файла ключа — secret key.txt. При желании полезно добавить в файл конфигурации следующие две команды:
verb 4
mute 5
Команда verb задает уровень детализации журнала OpenVPN, и администратор может задать значение от 0 до 11. Параметр 0 означает, что не отображается никаких выходных данных, кроме неисправимых ошибок, а параметр 11 отображает множество данных, полезных при отладке. Как правило, для большинства пользователей достаточно значения 4. Команда mute выдает множество сообщений об ошибках и статусе. Эта команда полезна, если повторные попытки клиента установить соединение заканчиваются неудачей и нужно, чтобы журнал не засоряли экземпляры одного и того же сообщения. Параметр 5 команды mute означает, что OpenVPN будет отображать не более пяти повторяющихся сообщений.
В принципе, после этого сервер можно запускать: если в конфигурационном файле не сделано ошибок, то в системном трее появится иконка OpenVPN GUI желтого цвета, что означает — сервер готов к приему входящих (клиентских) соединений.
Остается настроить клиент. Процесс его установки похож на процедуру для сервера: достаточно инсталлировать программу OpenVPN и создать файл конфигурации .ovpn из шаблона client.ovpn. Параметры этого файла изменяются в строгом соответствии с параметрами серверного, с немногими исключениями. Главное — не забыть передать сгенерированный ключ, подготовленный для сервера (key.txt), на клиентский компьютер и поместить его в каталог C:\Program Files\OpenVPN\config.
Конфигурация клиента OpenVPN, использующего выбираемый по умолчанию протокол UDP и порт с номером 1194, может выглядеть следующим образом:
remote <адрес нашего сервера>
dev tap
secret key.txt
verb 4
mute 5
Такая конфигурация прямо указывает на наш удаленный VPN-сервер, с которым установит соединение клиент, определяет сетевой протокол как dev tap (для работы с мостом). Если адреса локальной сети у сервера и клиента лежат в общем адресном пространстве, то после установки соединения (нажатия кнопки Connect) обе сети будут представлять единое целое.
Конечно, приведенный способ — один из самых простых и в силу простоты обладает минимальной защищенностью и умеет выполнять простейшие функции. Вообще, создание туннелей — процесс довольно сложный и требует хорошего знания предмета. Поэтому, если вы не уверены в своих силах и не готовы принять на себя ответственность за выполнение этой непростой работы — лучше обратите внимание на аппаратные решения или коммерческие продукты. Они, как правило, достаточно просты в управлении, имеют понятный графический интерфейс и относительно недороги. Но если вы все-таки решились на применение OpenVPN — лучше всего запускать его из-под нативной среды: любой unix-like ОС, например, Linux.
Опубликовано 25.05.2011