Vpn подключение: что это такое, и для чего нужен vpn канал? Что такое VPN или как защитить сеть

В этой статье подробно рассмотрим процесс настройки VPN сервера в операционной системе Windows Server, а также ответим на вопросы: Что такое VPN и как настроить VPN соединение?

Что такое VPN соединение?

VPN (Virtual Private Network) – это виртуальная частная сеть, которая используются для обеспечения защищенного подключения к сети. Технология, позволяющая объединить любое количество устройств в частную сеть. Как правило, через интернет.

Хотя это технология не новая, но за последнее время она приобрела актуальность из-за желания пользователей сохранить целостность данных или приватность в режиме реального времени.

Такой способ соединения называется VPN туннель. Подключится к VPN можно с любого компьютера, с любой операционной системой, которая поддерживает VPN соединение. Либо установлен VPN-Client, который способен делать проброс портов с использованием TCP/IP в виртуальную сеть.

Что делает VPN

VPN обеспечивает удалённое подключение к частным сетям

Так же вы можете безопасно объединить несколько сетей и серверов

Компьютеры с ip адресами с 192.168.0.10 по 192.168.0.125 подключается через сетевой шлюз, который выполняет роль VPN сервера. Предварительно на сервере и маршрутизаторе должны быть прописаны правила для соединений по каналу VPN.

VPN позволяет спокойно использовать интернет при подключении даже к открытым wi-fi сетям в общедоступных зонах (в торговых центрах, отелях или аэропортах)

А так же обойти ограничения на показ контента в определенных странах

VPN предотвращает киберугорозы по перехвату злоумышленником информации на лету, незаметным для получателя.

Принцип работы VPN

Давайте рассмотрим, как в принципе работает VPN соединение.

Представим, что передача это движение пакета по автомобильной дороге из точки А в точку Б, на пути движения пакета встречаются контрольные пункты пропуска пакета данных. При использовании VPN, этот маршрут дополнительно защищён системой шифрования и аутентификацией пользователя, что бы обезопасить трафик, в котором содержится пакет данных. Такой метод называется «Туннелированнем» (tunneling – использование туннеля»

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

VPN обеспечит приватность вашей информации вместе с комплексным антивирусом.

VPN поддерживает такие сертификаты как OpenVPN, L2TP, IPSec, PPTP, PPOE и получается вполне защищенный и безопасный способ передачи данных.

VPN туннелирование применяется:

  1. Внутри корпоративной сети.
  2. Объединение удалённых офисов, а так же мелких филиалов.
  3. Доступ к внешним it-ресурсам.
  4. Для построения видеоконференций.

Создание VPN выбор и настройка оборудования.

Для корпоративной связи в крупных организациях или объединения удаленных друг от друга офисов используется аппаратное оборудования способное поддерживать бесперебойную работу и защищенность в сети.

Для использования vpn-сервиса, в роли сетевого шлюза могут выступать: сервера linux/Windows, маршрутизатор и сетевой шлюз на котором поднят VPN.

Маршрутизатор должен обеспечивать надёжную работу сети без «зависаний». Встроенная функция VPN позволяет изменять конфигурация для работы дома, в организации или филиале офиса.

Настройка VPN сервера.

Если вы хотите установить и использовать VPN сервер на базе семейства Windows , то необходимо понимать, что клиенские машины Windows XP/7/8/10 данную функцию не поддерживают, вам необходима система виртуализации, либо физический сервер на платформе Windows 2000/2003/2008/2012/2016, но мы рассмотрим данную функцию на Windows Server 2008 R2.

1. Для начала необходимо установить роль сервера "Службы политики сети и доступа" Для этого открываем диспетчер сервера и нажимаем на ссылку "Добавить роль":

Выбираем роль "Службы политики сети и доступа" и нажимаем далее:

Выбираем "Службы маршрутизации и удаленного доступа" и нажимаем Далее и Установить.

2. После установки роли необходимо настроить ее. Переходим в диспетчер сервера, раскрываем ветку "Роли", выбираем роль "Службы политики сети и доступа", разворачиваем, кликаем правой кнопкой по "Маршрутизация и удаленный доступ" и выбираем "Настроить и включить маршрутизацию и удаленный доступ"

После запуска службы считаем настройку роли законченной. Теперь необходимо разрешить пользователям доступ до сервера и настроить выдачу ip-адресов клиентам.

Порты которые поддерживает VPN. После поднятие службы они открываются в брендмауэре.

Для PPTP: 1723 (TCP);

Для L2TP: 1701 (TCP)

Для SSTP: 443 (TCP).

Протокол L2TP/IpSec является более предпочтительным для построения VPN-сетей, в основном это касается безопасности и более высокой доступности, благодаря тому, что для каналов данных и управления используется одна UDP-сессия. Сегодня мы рассмотрим настройку L2TP/IpSec VPN-сервера на платформе Windows Server 2008 r2.

Вы же можете попробовать развернуть на протоколах: PPTP, PPOE, SSTP, L2TP/L2TP/IpSec

Переходим в Диспетчер сервера: Роли - Маршрутизация и удалённый доступ , щелкаем по этой роли правой кнопкой мыши и выбираем «Свойства» , на вкладке «Общие» ставим галочку в полях IPv4-маршрутизатор, выбираем «локальной сети и вызова по требованию», и IPv4-сервер удаленного доступа:

Теперь нам необходимо ввести предварительный ключ. Переходим на вкладку Безопасность и в поле Разрешить особые IPSec-политики для L2TP-подключения поставьте галочку и введите Ваш ключ. (По поводу ключа. Вы можете ввести туда произвольную комбинацию букв и цифр главный принцип, чем сложнее комбинация - тем безопаснее, и еще запомните или запишите эту комбинацию она нам еще понадобиться). Во вкладке «Поставщик службы проверки подлинности» выберите «Windows - проверка подлинности».

Теперь нам необходимо настроить Безопасность подключений . Для этого перейдем на вкладку Безопасность и выберем Методы проверки подлинности , поставьте галочки на Протокол EAP и Шифрованная проверка (Microsoft, версия 2, MS-CHAP v2):

Далее перейдем на вкладку IPv4 , там укажем какой интерфейс будет принимать подключения VPN, а так же настроим пул выдаваемых адресов клиентам L2TP VPN на вкладке IPv4 (Интерфейсом выставьте «Разрешить RAS выбирать адаптер»):

Теперь перейдем на появившуюся вкладку Порты , нажмем правой кнопкой мыши и Свойства , выберем подключение L2TP и нажмем Настроить , в новом окне выставим Подключение удаленного доступа (только входящие) и Подключение по требованию (входящие и исходящие) и выставим максимальное количество портов, число портов должно соответствовать или превышать предполагаемое количество клиентов. Неиспользуемые протоколы лучше отключить, убрав в их свойствах обе галочки.

Список портов, которые у нас остались в указанном количестве.

На этом настройка сервера закончена. Осталось только разрешить пользователям подключатся к серверу. Перейдите в Диспетчере сервера Active Directory пользователи – находим пользователя которому хотим разрешить доступ нажимаем свойства , заходим в закладку входящие звонки

Обратите внимание, что здесь не стоит задача объяснить все досконально технически правильно, задача – объяснить «на пальцах» так, чтобы поняли даже начинающие пользователи. Надеюсь, что это получилось. Если есть вопросы – задавайте их в комментариях.

Суть работы VPN-сервера в следующем . Например, вы хотите зайти на сайт yandex.ru. Точнее, подключиться к серверу с IP 77.88.21.11 (жители восточных регионов России могут быть отправлены на сервер с другим IP, но не в этом суть). При работе без VPN ваш компьютер посылает пакет (можно сказать, запрос) напрямую на сервер с адресом 77.88.21.11 и получает от него ответ. При работе через VPN ваш компьютер посылает пакет на VPN-сервер, VPN-сервер точно этот же пакет отсылает на 77.88.21.11, 77.88.21.11 отсылает ответ VPN-серверу (потому что изначально запрос прислал именно VPN-сервер), а VPN-сервер отправляет этот пакет вашему компьютеру.

Что имеем? Запросы на адрес 77.88.21.11 отсылает не ваш компьютер, а VPN, соответственно, сервер 77.88.21.11 фиксирует именно IP-адрес VPN-сервера, а не вашего компьютера.

Одна из возможных причин применения VPN – необходимость скрыть свой IP адрес .

Другое применение – необходимость изменить маршрут трафика . Возьмем пример из жизни. Автор этой статьи живет в городе Орле (Центральная Россия) и хочет подключиться к серверу yunpan.360.cn, расположенному в Пекине. Автор пользуется (точнее, пользовался на тот момент) услугами интернет-провайдера «Билайн». Как показала команда tracert yunpan.360.cn, введенная в командной строке Windows, исходящий интернет-трафик к этому китайскому серверу идет через США. Как трафик идет обратно, трассировка не показывает, но, судя по пингу, он идет примерно тем же маршрутом. Ниже скриншот из программы VisualRoute 2010.

Такая маршрутизация связана с тем, что «Билайн» не заплатил магистральным интернет-провайдерам за более прямой канал в Китай.

При таком маршруте происходят большие потери пакетов, скорость низкая, пинг огромный.

Что делать? Использовать VPN. Такой VPN-сервер, до которого у нас прямой маршрут, и от которого до yunpan.360.cn прямой маршрут. Я (автор статьи) очень долго искал приемлемое решение и в итоге его нашел. Был арендован виртуальный сервер (что это такое, речь пойдет позже) в Красноярске (сразу представляйте, где находится город Красноярск) у хостинг-провайдера . Трассировка до сервера показала, что трафик идет по России, пинг 95 мс (у меня был мобильный LTE (4G) интернет, на проводном интернете пинг будет на 5-10 мс пониже).

Пинг – это задержка интернет-сигнала. Измеряется задержка на прохождение интернет-трафика в обе стороны (туда и обратно). Измерить задержку только в одну сторону стандартными средствами невозможно, поскольку ваш компьютер отправляет запрос на пингуемый сервер и засекает время, за которое придет ответ.

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

Часто бывает так, что в разные стороны маршрут разный.

Далее была сделана трассировка с красноярского сервера до yunpan.360.cn. Пинг в районе 150 мс. Трассировка показала, что трафик от красноярского сервера до китайского идет через прямой пиринг (межсетевое взаимодействие) провайдера «Транстелеком» и «China Telecom».

Вот эта самая трассировка (сделана из-под Linux):

tracepath yunpan.360.cn
1?: pmtu 1500
1: srx.optibit.ru 0.361ms
1: srx.optibit.ru 0.381ms
2: border-r4.g-service.ru 0.392ms
3: kyk02.transtelecom.net 0.855ms asymm 5
4: 10.25.27.5 112.987ms asymm 8
5: ChinaTelecom-gw.transtelecom.net 125.707ms asymm 7
6: 202.97.58.113 119.092ms asymm 7
7: 202.97.53.161 120.842ms asymm 8
8: no reply
9: 220.181.70.138 122.342ms asymm 10
10: 223.202.72.53 116.530ms asymm 11
11: 223.202.73.86 134.029ms asymm 12
12: no reply

Что мы видим? Красноярский сервер находится на хостинге (хостинг – услуга размещения и аренды серверных мощностей) optibit.ru, подключен к интернет-провайдеру «Игра-Сервис» (g-service.ru). «Игра-Сервис», в свою очередь, трафик до yunpan.360.cn пускает через крупного российского магистрального провайдера «Транстелеком» (за что платит ему деньги). ТТК трафик направляет через свое прямое включение в сеть китайского магистрального провайдера China Telecom, об этом нам говорит домен хопа ChinaTelecom-gw.transtelecom.net.

Давайте вспомним, в чем была наша проблема. У нас трафик до того китайского сервера шел через США, скорость была низкой. Что я сделал? На этот красноярский сервер поставил VPN. И настроил свой компьютер на работу через этот VPN-сервер. Что получилось? Теперь трафик до yunpan.360.cn шел не по старому маршруту Орел-Москва-США-Китай, а вот так:

сначала до VPN-сервера – Орел-Красноярск,

затем от VPN-сервера до Пекина – Красноярск-Пекин.

Уловили суть? Мы развернули маршрут. Что это дало? Скорость исходящего соединения от меня до yunpan.360.cn возросла. Пинг был уменьшен. Результат был достигнут.

Как определить ваш маршрут? Для новичков самый простой способ это сделать – воспользоваться программой VisualRoute, которую можно найти в интернете как в лицензионном, так и взломанном видах.

Нужно запустить эту программу и выставить следующие настройки:

Получится вот так:

По этой таблице вы увидите, через какие страны проходит трафик. Еще раз обращаю внимание на то, что трассировка показывает маршрут только исходящего трафика (то есть трафика от вашего компьютера к серверу). Маршрут в обратную сторону может показать только трассировка, сделанная с сервера до вашего компьютера. У VisualRoute есть небольшой глюк: она часто показывает Australia (?) в качестве страны, когда не может определить настоящую геопозицию узла.

VPN – Virtual private network – виртуальная частная сеть – это, можно сказать, своя сеть поверх интернета, весь трафик внутри которой шифруется. Подробно изучить эту технологию можно и . Если объяснить совсем на пальцах, то:

  • ваш компьютер и VPN-сервер соединяются по интернету
  • весь трафик между вами и VPN-сервером шифруется
  • VPN-сервер его отправляет в место назначения
  • ваш IP скрывается, вместо него виден IP-адрес VPN-сервера

VPN рекомендуется использовать при работе через бесплатный (или просто чужой) WiFi, поскольку существует возможность перехвата всего трафика, проходящего через WiFi-роутер. А при использовании VPN весь трафик будет зашифрован. Более того, если вы зайдете на yandex.ru, vk.com и google.ru без VPN, то на уровне роутера и вашего интернет-провайдера зафиксируются подключения к yandex.ru, vk.com и google.ru. При использовании VPN все подключения идут на адрес VPN сервера.

Существует множество платных сервисов VPN. К их преимуществам можно отнести разве что только простоту использования. Из недостатков следует выделить высокую стоимость, отсутствие 100% конфиденциальности (написать можно многое, а что на самом деле происходит на VPN-сервере, не перехватывается ли трафик, гарантировать невозможно). Невозможность сменить IP адрес в пару кликов также следует отнести к недостаткам платных сервисов.

Сравним стоимость нашего самостоятельно настроенного решения и платных VPN-сервисов. Последние стоят в районе 300 руб. в месяц. Наше решение будет стоить 0,007 долларов в час. Не используем VPN прямо сейчас – не платим. При использовании по 2 часа каждый день в течение 30 дней это удовольствие нам обойдется в 30-50 рублей.

Мы сделаем следующее:

  1. Арендуем сервер для VPN.
  2. Настроим на нем VPN.
  3. Будем ими пользоваться и платить только за каждый час реального использования VPN.

Шаг №1. Аренда сервера.

Нет, арендовать полноценный сервер мы не будем. Мы арендуем виртуальный сервер – VPS (virtual private server). В очень многих случаях для размещения сайтов в интернете или для других целей (в т. ч. для организации VPN) не требуется больших серверных мощностей, но необходимо «под себя» настроить операционную систему сервера. Одновременно на одном компьютере (и сервере в том числе, ведь это тот же компьютер, только обычно более мощный) сразу несколько операционных систем работать не может. Как быть? На помощь приходят виртуальные машины. Эта технология позволяет запускать операционную систему внутри операционной системы, что называется виртуализацией. В случае с серверами тоже создаются аналоги виртуальных машин – виртуальные сервера.

Существует несколько распространенных технологий виртуализации. Самые распространенные – это OpenVZ, KVM, Xen. Грубо говоря, у Xen и KVM для каждой виртуальной машины создаются своя «имитация железа», своя ОС и т.д. В случае с OpenVZ используется общее ядро ОС, в результате чего некоторые функции (например, внесение правок в ядро ОС) становятся недоступными, или их можно включать и отключать только для всех VPS сразу. VPS на Xen и KVM, как правило, более стабильны в работе, однако разница существенна только для крупных проектов, для которых критична отказоустойчивость серверов.

VPS на OpenVZ всегда дешевле, поскольку один виртуальный сервер требует меньше ресурсов. Из-за более низкой цена мы обратим свой взор именно на VPS на базе OpenVZ.

Внимание! Некоторые хостинги (компании, предоставляющие услуги аренды серверов) намеренно блокируют работу VPN на серверах на базе OpenVZ! Поэтому перед арендой такого сервера нужно уточнять в службе поддержки (у хорошего хостинга она должна отвечать в течение 15 минут, максимум часа), будет ли работать VPN.

Для работы на сервере персонального VPN хватит минимальной конфигурации – 256 МБ ОЗУ и 0,5-1 ГГц процессора. Однако не все хостинги предоставляют VPS с 256 МБ ОЗУ: у многих минимальный тариф– 512 МБ ОЗУ. Такого VPS нам и подавно хватит.

Какие еще критерии выбора VPS существуют? Как вы уже поняли, интернет-трафик будет постоянно «ходить» от вас к VPS и обратно. Поэтому у магистральных каналов должна быть достаточная пропускная способность в обе стороны. Иначе говоря, скорость интернет-соединения между вашим компьютером и VPS должна быть достаточной для выполнения требуемых вам задач. Для повседневной комфортной работы хватит и 15 МБит/сек, а если вы собираетесь скачивать торренты через VPN, то вам могут понадобятся и все 100 Мбит/сек. Но! Если вы и VPS находитесь в сетях разных интернет-провайдеров (особенно в разных городах), вряд ли магистральные сети «вытянут» более 70 Мбит/сек внутри России (или вашей страны) и более 50 Мбит/сек с серверами в Европе.

Большинство хостингов требует помесячную оплату. Стоит сразу отметить, что разброс цен очень большой при примерно одинаковом качестве. Мы же будем пользоваться услугами с почасовой оплатой: 0,007 долларов за час работы нашего сервера. Таким образом, если мы будем пользоваться VPN по 2 часа каждый день, то в месяц мы заплатим около 30 рублей. Согласитесь, это не 350 руб/мес за платный VPN-сервис!

Первым делом нужно перейти на сайт и зарегистрироваться:

Далее откроется страница, на которой нужно указать данные своей банковской карты. Без этого система не будет работать и не даст возможности воспользоваться бонусными 10 долларами (об этом позже). Данные можно указать любые, система «съест» ненастоящие.

При этом на вашей карте может быть заблокирована сумма в несколько рублей, которая затем будет возвращена. Списания с вашей карты будут только по факту использования серверов.

Что делать, если банковской карты нет? Заведите себе , он автоматически дает виртуальную карту, баланс которой равен балансу кошелька. Пополнять кошелек можно почти везде, см. .

Однако, если вы введете в DigitalOcean данные карты Киви, то система ее «выплюнет», сославшись на то, что DigitalOcean не работает с предоплаченными и виртуальными картами. В таком случае вам нужно пополнить баланс на 5 долларов через систему PayPal, заплатив картой Киви.

После всего этого на той же странице в личном кабинете DigitalOcean вводим промо-код DROPLET10 , начисляющий нам 10 долларов, которые мы сможем полноценно использовать на сервера, не опасаясь дополнительных списаний с нашей карты.

Готово! Теперь перейдем к созданию VPS. Смотрим видео-урок:

При создании сервера выбирайте ОС Ubuntu версии 14.04, а не какой-либо более новой, в т.ч. не выбирайте 16.04.

Расположение сервера

Домен для пинга

Франкфурт, Германия

http://speedtest-fra1.digitalocean.com/

speedtest-fra1.digitalocean.com

Амстердам-1, Нидерланды

http://speedtest-ams1.digitalocean.com/

speedtest-ams1.digitalocean.com

Амстердам-2

http://speedtest-ams2.digitalocean.com/

speedtest-ams2.digitalocean.com

Нью-Йорк-1, США

http://speedtest-ny1.digitalocean.com/

speedtest-ny1.digitalocean.com

Нью-Йорк-2

http://speedtest-ny2.digitalocean.com/

speedtest-ny2.digitalocean.com

Нью-Йорк-3

http://speedtest-ny3.digitalocean.com/

speedtest-ny3.digitalocean.com

Сан-Франциско, США

http://speedtest-sfo1.digitalocean.com/

speedtest-sfo1.digitalocean.com

Лондон, Великобритания

http://speedtest-lon1.digitalocean.com/

speedtest-lon1.digitalocean.com

Сингапур

http://speedtest-sgp1.digitalocean.com/

Speedtest-sgp1.digitalocean.com

Примечание. Большинству жителей России и стран СНГ подойдет Амстердам или Франкфурт (пинг до Франкфурта в большинстве случаев будет немного меньше, чем до Амстердама). Жителям Дальнего востока России рекомендую протестировать Сингапур и сравнить показатели с европейскими серверами.

Расположение серверов за рубежом позволит с помощью VPN обходить запреты государственных органов на посещение определенных сайтов (если это актуально для вас).

У DigitalOcean в стоимость включено 1 терабайт (1024 ГБ) трафика (см. ). Большинству этого хватит с головой. У остальных хостингов трафик формально безлимитный, однако он становится нерентабельным для них при достижении порога 1-2 ТБ/мес.

Всё, мы заказали VPS. Поздравляю. Теперь пора перейти к его настройке.

Шаг №2. Настройка VPN.

Не пугайтесь, процесс настройки своего собственного VPN прост, как дважды-два!

В видео-уроке выше мы подключились к нашему серверу с помощью Putty. Теперь продолжим.

Копируем и вставляем (нажатием правой кнопки мыши, как мы делали в видео-уроке) команду:

Теперь копируем и вставляем в открывшееся окно редактирования файла следующее:

Нажимаем Ctrl+O, затем Enter.

Нажимаем Ctrl+X.

Копируем и вставляем команду:

Вводим 1 и нажимаем Enter. Ждем. Согласно запросам системы, вводим желаемый логин и нажимаем Enter. Аналогично с паролем. На вопросы “[Y]/[N]” вводим Y и нажимаем Enter. После завершения настройки будут показаны наши логин и пароль и IP адрес сервера.

Готово! VPN настроен!

Теперь открываем «Центр управления сетями и общим доступом» Windows:

Выбираем настройку нового подключения:

Выбираем «Подключение к рабочему месту»:

Ждем немного. Теперь мы работаем через VPN! Чтобы в этом удостовериться, идем на и убеждаемся в том, что показываемый нам наш IP адрес совпадает с IP адресом нашего VPS.

Теперь внимание! Через личный кабинет DigitalOcean мы можем выключить наш VPS (droplet в терминологии DigitalOcean), однако даже за сервер в выключенном состоянии идет списание денежных средств по стандартному тарифу. Поэтому мы сделаем резервную копию нашего сервера, удалим его, а когда нам снова понадобится VPN, мы его восстановим из резервной копии!

Перейдем в управление сервером (панель управления DigitalOcean находится по адресу cloud.digitalocean.com, вход в нее возможен через кнопку Sign In на главное странице digitalocean.com в правом верхнем углу).

Нам нужно создать резервную копию (снимок, snapshot) нашего VPS. Но для этого его сначала нужно выключить.

Ждем около минуты, пока сервер выключится. Затем переходим в раздел Snapshots, вводим произвольное имя снимка и создаем его:

За каждый гигабайт «веса» нашего VPS при создании снимка спишется по 2 цента. Создание резервной копии (снимка) займет несколько минут.

Теперь удаляем сервер:

Все! Больше ни за что с нас деньги не списываются.

Что делаем, когда VPN понадобится снова

Нам нужно создать новый VPS из той резервной копии, которую мы сделали до этого.

Нажимаем «создать дроплет»:

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

Чуть ниже нажимаем на название снимка, который мы сделали (был серым, а должен стать синим):

…и нажимаем большую зеленую кнопку «Create droplet».

Ждем около минуты.

Смотрим, совпадает ли IP адрес нашего сервера с прежним. Если да, то в Windows просто возобновляем уже ранее созданное подключение:

Если нет, то нажимаем правой кнопкой мыши на название нашего подключения и меняем IP адрес на новый:

Вводим новый IP и нажимаем «ОК»:

Внимание! Теперь, чтобы выключить VPN, нам не нужно делать резервную копию, просто сразу удаляем сервер, а в следующий раз все восстановим из старого снимка. Перед удалением сервер выключать необязательно. На всякий случай такой порядок действий в скриншотах:

Это мы удалили VPS на время неиспользования VPN. Теперь его восстановим из старого снимка:

Опять проверяем, сохранился ли старый IP и продолжаем работу.

На том же самом сервере (или еще одном) можно поднять свой личный прокси, например, на базу ПО 3proxy, однако это не тема этой статьи.

Нашли опечатку? Нажмите Ctrl + Enter

Организация VPN каналов между филиалами компании имеет большое значение в работе любого IT-специалиста. В данной статье рассматривается один из способов реализации этой задачи на основе программного продукта OpenVPN.

Ниже мы рассмотрим топологию сети, в которой будем организовывать VPN-туннель, разберем особенности конфигурирования программы OpenVPN и пошагово настроим маршрутизацию для наших офисов. Статья написана из расчета, что OpenVPN будет устанавливаться на платформы Windows 7 и Windows Server 2008.

Топология сети.

Использованная нами сетевая топология стандартна. Имеется Сеть Центрального Офиса (назовем её СЦО) и Сеть Филиала (назовем её СФ). Стоит задача соединить офисы таким образом, чтобы конечный пользовательский компьютер (далее ПК1) офиса СЦО имел доступ к общим ресурсам пользовательского компьютера (далее ПК2) СФ.

CЦО имеет в своем составе:

  • Интернет-шлюз (назовем его ИШ1) с двумя сетевыми интерфейсами:
    • 111.111.111.111 - выдаётся провайдером, смотрит в интернет.
    • 192.168.0.1 - назначается нами, смотрит в СЦО.
  • OpenVPN Сервер (далее ОС) на котором будем поднимать OpenVPN с одним виртуальным и одним физическим интерфейсом:
    • 10.8.0.1 - адрес виртуального интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса назначается программой. Мы с вами не должны менять адрес самостоятельно из управления сетевыми адаптерами.
    • 192.168.0.2 - физический интерфейс, параметры задаются нами, смотрит в СЦО.
  • ПК1 - пользовательский компьютер 1, с сетевым интерфейсом 192.168.0.3, смотрит аналогично в СЦО.

СФ имеет в своем составе:

  • Интернет-шлюз (далее ИШ2) с двумя сетевыми интерфейсами:
    • 222.222.222.222 - выдаётся провайдером, смотрит в интернет.
    • 192.168.1.2 - назначается нами, смотрит в СФ.
  • OpenVPN Клиент (далее ОК) на котором будем поднимать OpenVPN с одним виртуальным и одним физическим интерфейсом:
    • 10.8.0.2 - адрес виртуального сетевого интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса так же назначается программой OpenVPN.
    • 192.168.1.2 - физический интерфейс, параметры задаются нами, смотрит в СФ.
  • ПК2 - пользовательский компьютер 2, с сетевым интерфейсом 192.168.1.3, смотрит в СФ.

Настраиваем OpenVPN сервер.

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

Сам процесс инсталлирования не вызовет никаких проблем. Единственное, стоит отключить антивирус на время установки, дабы избежать дополнительных проблем. На момент написания статьи, к примеру, продукты Лаборатории Касперского не блокировали установку, а лишь выводили подозрение на некоторые устанавливаемые компоненты.

В процессе установки в систему инсталлируется виртуальный сетевой адаптер TAP-Win32 Adapter V9 и, соответственно, драйвер к нему. Этому интерфейсу программа OpenVPN как раз и будет назначать ip адрес и маску виртуальной сети OpenVPN. В нашем случае ему назначен адрес 10.8.0.1 с маской 255.255.255.0 на сервере ОС и 10.8.0.2 с аналогичной маской на клиенте ОК.

По стандарту программа устанавливается в C:\ProgramFiles\OpenVPN . В этой директории следует сразу же создать дополнительно папку keys (здесь мы будем хранить ключи аутентификации) папку ccd (здесь будут находится конфиги настроек сервера для клиента).

В директории C:\ProgramFiles\OpenVPN\sample-config представлены стандартные конфиги. Конфиги, которые мы будем создавать, должны размещаться в директории C:\Program Files\OpenVPN\config .

Настройка OpenVPN начинается с генерации ключей. Генерируемые ключи делятся на:

  • главный CertificateAuthority (CA) сертификат и ключ, используемый для подписывания каждого сертификата сервера и клиента.
  • публичный и приватный ключи для сервера и каждого (это важно) клиента отдельно.

Последовательность создания ключей следующая (названия файлов сертификатов и ключей указаны в скобках):

  • Генерируем основной CA (ca.crt) сертификат и CA (ca.key) ключ.
  • Генерация ключа tls-auth (ta.key) для аутентификации пакетов.

Разберем каждый пункт более подробно.

Генерируем основной сертификат СА и СА ключ:

Заходим в Пуск - Выполнить набираем cmd , жмем OK, заходим в командную строку. Пишем:

Cd C:/Program Files/OpenVPN/easy-rsa

Таким образом мы находимся в директории easy-rsa :

Во время выполнения всех пунктов генерации ключей вы должны находиться именно в ней. Выполняем команду:

Init-config

Не закрывая командную строку, зайдем в C:\ProgramFiles\OpenVpn\easy-rsa и отредактируем файл vars.bat , заполнив следующие параметры (указав, естественно, свои данные):

KEY_COUNTRY=RF
KEY_PROVINCE=MO
KEY_CITY=Malinino
KEY_ORG =Organization
[email protected]

Теперь создадим СА сертификат и СА ключ. Раскрываем командную строку, которая все это время висела где то на рабочем столе, и продолжаем вписывать команды:

Vars
clean-all
build-ca

Последняя команда как раз и выполняет генерацию СА сертификата и СА ключа. В процессе создания ключа вам будут задавать вопросы, на которые вы можете отвечать просто нажатием Enter"a (тогда значения будут браться из файла vars.bat который мы редактировали выше) или же вводить свои. Стоит обратить внимание на вопрос:

Common Name (eg, your name or your server"s hostname) : OpenVPNS

Здесь вы должны задать название для сервера - в примере мы ввели OpenVPNS.

Генерируем сертификат (server.crt) и ключ (server.key) сервера.

Не выходя из директории, в нашей командной строке продолжим вводить команды. Сгенерируем сертификат сервера и ключа командой:

Build-key-server server

На вопросы отвечаем так же как в первом пункте. На вопрос:

Common Name *: server

Введем: server . На вопросы:

Sign the certificate?

1 out of 1 certificate requests certified, commit?

надо дать положительный ответ: Y .

Генерируем сертификат (office1.crt) и ключ (office1.key) для клиента.

Очевидно, что клиентов может быть много, в нашем примере он один - office1 . В зависимости от количества клиентов следующая команда в командной строке выполняется несколько раз, причем названия генерируемых ключей так же меняйте:

Build-key office1

если требуется еще сертификаты и ключи, скажем для второго клиента, то вводим:

Build-key office2

В процессе ответа на вопросы не забывайте, что каждый клиент на вопрос CommonName должен получить уникальное имя, например: office1, office2 и т.д.

Генерация параметров DiffieHellman (dh1024.pem).

Вводим в командной строке, находят во все той же директории easy-rsa:

Build-dh

Генерация ключа tls-auth (ta.key) для аутентификации пакетов

В конце создаем ключ для tls-аутификации командой:

Openvpn --genkey --secret ta.key

Теперь разберемся с тем, какие файлы оставлять на сервере, а какие перенести клиенту. На сервере (OC) должны находиться в созданной нами папке keys только следующие файлы:

  • ca.crt
  • ca.key
  • dh1024.pem
  • server.crt
  • server.key
  • ta.key

На клиенте OK аналогично серверу ОС создадим так же папочку keys, там должны быть:

  • ca.crt
  • office1.crt
  • office1.key
  • ta.key

Все файлы с расширением.key являются секретными. Передавать их стоит только по защищенным каналам, лучше на физическим носителе.

Далее приступим к созданию конфига для нашего сервера ОС и клиента ОК. В директории config создаем файл со следующим названием и расширением: server.ovpn Открываем его блокнотом и начинаем писать конфиг:

Выбираем протокол для передачи данных - в данном случае upd:

Proto udp

Стандартный порт для OpenVPN:

Port 1194

Режим работы программы L3-туннель. В данном режиме OpenVPN - роутер:

Режим клиент-сервер:

Tls-server

Данного топология доступна с версии 2.1 и заключается в том что каждому клиенту выдается по 1 адресу, без виртуальных портов маршрутизатора:

Topology subnet

Маршруты добавляются через.exe - это важно:

Route-method exe

Задержка при добавлении маршрута, можно уменьшить до 5:

Route-delay 10

Данная опция задает организацию сети. У нас появляется виртуальная сеть 10.8.0.0 /24. Первый адрес из этой сети, то есть 10.8.0.1 выдается серверу, последующие (10.8.0.2, 10.8.0.3 и т.д.) клиентам. DHPC сервер получает адрес 10.8.0.254:

Server 10.8.0.0 255.255.255.0

Задаем шлюз в openvpn сеть:

Route-gateway 10.8.0.1

Директория, в которой мы должны расположить файл с названием нашего клиента, то есть office1 без расширения, и в нем записать команды, которые будут выполнятся на клиенте:

Client-config-dir "C:\\Program Files\\OpenVPN\\ccd"


cert "C:\\Program Files\\OpenVPN\\keys\\server.crt"
key "C:\\Program Files\\OpenVPN\\keys\\server.key"
dh "C:\\Program Files\\OpenVPN\\keys\\dh1024.pem"
tls-auth "C:\\Program Files\\OpenVPN\\keys\\ta.key" 0

Задаем серверу ОС маршрут на всю сеть:

Route 10.8.0.0 255.255.255.0

Выбираем метод сжатия:

Cipher BF-CBC

Задаем сжатие трафика:

Comp-lzo

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

Cервер пингует противоположную сторону с интервалом в 10 секунд и если сторона не отвечает за 60 секунд, то сервер запустит пересоединение:

Keepalive 5 60

Далее переходим в директорию ccd и создаем файл, в котором будут лежать команды, посылаемые клиенту от сервера. Назвать его надо так же как мы называли самого клиента, например office1 . Файл не будет иметь расширения.

Редактируем его через блокнот. Все параметры, заданные ниже, будут автоматически переданы клиенту:

Задаем ip и маску для нашего клиента office1:

Ifconfig-push 10.8.0.2 255.255.255.0

Передаем ему маршрут на всю сеть:

Push "route 10.8.0.0 255.255.255.0"

Задаем для него шлюз:

Push "route-gateway 10.8.0.1"

Эта команда говорит серверу ОС о том, что за данным клиентом, а именно ОК (office1) находится сеть 192.168.1.0:

Iroute 192.168.1.0 255.255.255.0

Таким образом, мы закончили конфигурирование сервера на стороне ОС.

Настройка клиента.

Далее приступим к изменению параметров клиента. Зайдем на машине ОК в папку config . Создадим в ней файл office1.ovpn Приступим к его редактированию, ряд опций повторяет аналогичные на сервере, поэтому мы их пояснять не будем:

Dev tun
proto udp
port 1194

Указываем внешний адрес ИШ1:

Remote 111.111.111.111

Клиент будет в работать в режиме тлс-клиента:

Tls-client

Эта опция защищает от подмены сервера третьим лицом:

Remote-cert-tls server

Эти опции аналогичны серверу:

Route-method exe
route-delay 10

Задаем маршрут к сети 192.168.0.0:

Этой командой разрешаем прием конфигурации клиента с сервера:

Пути к ключам:

Ca "C:\\Program Files\\OpenVPN\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\keys\\office1.crt"
key "C:\\Program Files\\OpenVPN\\keys\\office1.key"
tls-auth "C:\\Program Files\\OpenVPN\\keys\\ta.key" 1

Остальные опции также аналогичны серверу:

Cipher BF-CBC
comp-lzo
verb 1
keepalive 5 60

На этом настройка программы на стороне клиента ОК закончена.

Настройка брандмауэра и маршрутизация.

И так, мы имеем настроенные конфиги на ОК и на ОС. Теперь разберем очень важные моменты. Заранее оговоримся, если вы использует KIS 2011 или подобные антивирусные программы, то в настройках сетевого экрана следует разрешить прохождение ICMP пакетов. Это позволит беспрепятственно пинговать хосты в наших сетях.

Так же стоит добавить наш виртуальный интерфейс программы OpenVPN в список доверенных сетей.

На ИШ1 должны быть проделаны следующие действия:

  • Настроено перенаправление порта 1194 протокола UDP с интерфейса 111.111.111.111 на интерфейс сервер ОС 192.168.0.2
  • В файерволе должна быть разрешена передача по порту 1194 протокола UDP, иначе пинг не будет проходить даже между ОС и ОК.

На ИШ2 надо предпринять аналогичные действия:

  • Настроить перенаправление порта 1194 протокола UDP с интерфейса 222.222.222.222 на интерфейс клиента ОК 192.168.1.2
  • Проверить, открыт ли порт 1194 протокола UDP в файерволе.

В Usergate 5.2, к примеру, настройка форвардинга пакетов по порту 1194 протокола UDP выглядит так:

На этом этапе мы уже пингуем ОК и ОС по их OpenVPN адресам, то есть 10.8.0.1 и 10.8.0.2. Далее нам необходимо обеспечить правильный маршрут пакетов с клиента ОК до удаленной сети 192.168.0.0. Делаем это одним из нескольких способов:

Либо задаем постоянный маршрут до этой сети на самом клиенте ОК:

Route -p add 192.168.0.0 mask 255.255.255.0 10.8.0.1

Либо задаем этот маршрут в ccd конфиге клиента на сервер, а именно в файле office1 допишем:

Push "route 192.168.0.0 255.255.255.0"

Так же это можно сделать, добавив строку напрямую в конфиг клиента ОК:

Route 192.168.0.0 255.255.255.0

Затем необходимо обеспечить маршрут пакетов с сервера ОС до удаленной сети 192.168.1.0. делается это аналогично варианту выше за несколькими исключениями.

Добавляем команду в конфиг сервера ОС:

Route 192.168.1.0 255.255.255.0 10.8.0.2

или же добавляем команду непосредственно в командной строке:

Route -p add 192.168.1.0 mask 255.255.255.0 10.8.0.2

Так же необходимо на сервере ОС и клиенте ОК включить в службах службу Маршрутизации и удаленного доступа , таким образом обеспечив маршрутизацию на внутреннюю сеть (форвардинг). Без этого внутренние адреса в сетях СЦО И СФ клиента ОК и сервера ОС не будут пинговаться.

На этом этапе мы уже свободно можем пинговать внутренние адреса наших ОС и ОК, т.е. набирая на сервере ОС ping 192.168.1.2 и на клиенте ОК ping 192.168.0.2 мы получаем положительный результат в виде:

Таким образом ОК и ОС взаимно пингуются по своим OpenVPN и внутренним СЦО и СФ адресам. Дальше нам надо прописать маршрут в командной строке в сеть 10.8.0.0 на наших ПК1 и ПК2. Делается это следующими командами:

Route -p add 192.168.1.0 mask 255.255.255.0 192.168.0.2

Route -p add 192.168.0.0 mask 255.255.255.0 192.168.1.2

В результате расшаренные ресурсы в ПК1 и ПК2 будут доступны по их внутрисетевому адресу:

  • Теги:

Please enable JavaScript to view the
  • Сетевые технологии
  • Кому нужен VPN?

    На март 2017 г. доля вакансий о работе с удаленным доступом, размещенных на hh.ru составляла 1,5% или 13 339 вакансий. За год их число удвоилось . В 2014 г. численность удаленных сотрудников оценивалась в 600 тыс. чел или 1% от экономически-активного населения (15–69 лет). J"son & Partners Consulting прогнозирует , что к 2018 г. около 20% всех занятых россиян будут работать удаленно. Например, до конца 2017 г. Билайн планирует перевести на удаленное сотрудничество от 50% до 70% персонала.


    Зачем компании переводят сотрудников на удаленку:

    • Сокращение затрат компании на аренду и содержание рабочих мест.
    • Отсутствие привязки к одной локации дает возможность собирать команду
      проекта, которую никогда нельзя было бы собрать в пределах одного города. Дополнительный плюс – возможность использования более дешевой рабочей силы.
    • Удовлетворение потребности сотрудников в связи с их семейными обстоятельствами.

    Мы для себя открыли потребность в VPN более 10 лет назад. Для нас мотиватором предоставления VPN доступа сотрудникам была возможность оперативного доступа в корпоративную сеть из любой точки мира и в любое время дня и ночи.

    Путь выбора идеального VPN решения

    Вариантов решений достаточно много. Зачастую решение стоит принимать исходя из того, какое оборудование и софт уже используются в компании, навыком настройки какого ПО обладает системный администратор. Начну с того от чего мы отказались сразу, а затем расскажу что мы попробовали в на чем мы в итоге остановились.

    VPN в роутерах

    Так называемых “китайских решений” на рынке много. Практически любой роутер имеет функциональность встроенного VPN сервера. Обычно это простое вкл/выкл функционала и добавление логинов паролей для пользователей, иногда интеграция с Radius сервером. Почему мы не стали рассматривать подобное решение? Мы прежде всего думаем о своей безопасности и непрерывности работе сервиса. Подобные же железки не могут похвастаться ни надежной защитой (прошивки выходят обычно очень редко, или не выходят в принципе), да и надежность работы оставляет желать лучшего.

    VPN Enterprise класса

    Если посмотреть на квадрат Гартнера то на VPN рынке уже давно лидирующие позиции занимают компании, которые производят сетевое оборудование. Juniper, Cisco, Check Point: все они имеют комплексные решения решения, в составе которых есть и VPN сервис.



    Минусов у подобных решений, пожалуй, два. Первый и главный - высокая стоимость. Второй - скорость закрытия уязвимостей оставляет желать лучшего, а если не платить ежегодные взносы за поддержку, то обновлений безопасности ждать не стоит. Не так давно появился и третий момент - закладки, встроенные в ПО крупных сетевых вендоров.

    Microsoft VPN

    10 лет назад мы были компанией, ориентированной прежде всего на Windows. Microsoft предлагает бесплатное решение для тех, у кого вся инфраструктура построена на их базе. В простых случаях настройка не вызывает сложностей даже у начинающего системного администратора. В нашем случае мы хотели выжать из VPN все с точки зрения безопасности, соответственно, использование паролей было исключено. Мы естественно хотели использовать сертификаты вместо паролей и для хранения ключевой пары использовать свой продукт Рутокен ЭЦП . Для реализации проекта нам нужно было: контроллер домена, радиус сервер и правильно поднятая и настроенная инфраструктура PKI. Подробно на настройке я останавливаться не буду, в интернете есть достаточно много информации по данным вопросам, а правильная настройка PKI вообще может потянуть на десяток статей. Первым протоколом, который мы использовали у себя, был протокол PPTP. Долгое время данный вариант VPN нас устраивал, но в конечном итоге нам пришлось отказаться от него по двум причинам: PPTP работал далеко не везде и мы начинали пользоваться не только Windows, но и другими операционными системами. Поэтому мы стали искать альтернативы. Замечу, что поддержка PPTP не так давно была прекращена apple . Для начала мы решили посмотреть, что еще из протоколов может предложить на Microsoft. SSTP/L2TP. SSTP нас устраивал всем, за исключением того, что он работал только на Windows. L2TP данным недостатком не обладал, но его настройка и поддержание его в работе показались нам достаточно затратными и мы решили попробовать альтернативы. Хотелось более простого решения, как для пользователей, так и для администраторов.

    OpenVPN

    Мы в компании “Актив” искренне любим open source. Выбирая замену Microsoft VPN мы не могли обойти стороной решение OpenVPN. Основным плюсом для нас было то, что решение "из коробки" работает на всех платформах. Поднять сервер в простом случае достаточно просто. Сейчас, используя docker и, к примеру готовый образ , это можно сделать за несколько минут. Но нам хотелось большего. Нам хотелось добавить в проект интеграцию с Microsoft CA, для того, чтобы использовать выданные ранее сертификаты. Нам хотелось добавить поддержку используемых нами токенов. Как настраивать связку OpenVPN и токены описано к примеру вот в этой . Сложнее было настроить интеграцию Microsoft CA и OpenVPN, но в целом тоже вполне реализуемо. Получившимся решением мы пользовались около трех лет, но все это время продолжали искать более удобные варианты. Главной возможностью, которую мы получили, перейдя на OpenVPN, был доступ из любой ОС. Но остались еще две претензии: сотрудникам компании нужно пройти 7 кругов ада Microsoft CA для выписывания сертификата, а администраторам по-прежнему приходилось поддерживать достаточно сложную инфраструктуру VPN.

    Рутокен VPN

    У нас есть знание, как использовать токены в любых операционных системах, у нас есть понимание, как правильно готовить инфраструктуру PKI, мы умеем настраивать разные версии OpenVPN и мы имеем технологии, которые позволяют управлять всем этим удобным для пользователя образом из окна браузера. Так возникла идея нового продукта.



    Настройка Рутокен VPN

    Мы действительно постарались сделать настройку простой и понятной. Вся настройка занимает всего несколько минут и реализована как мастер начальной настройки. На первом шаге нужно настроить сетевые настройки устройства, думаю комментарии здесь будут лишними.




    На втором шаге нужно ввести название компании и подождать несколько минут, пока устройство произведет настройку встроенного центра сертификации.







    Третьим шагом необходимо настроить сам VPN сервис. Указать внешний IP, на который будет происходить подключение. Выбрать тип шифрования и адресацию сети.




    Четвертым шагом настройки мы создаем локальных пользователей, или добавляем их из AD




    Личный кабинет сотрудника




    В зависимости от операционной системы и браузера сотрудника, понадобится установить плагин и расширение для браузера, которые необходимы для работы с токенами.




    После установки плагина/расширения нам остается лишь сгенерировать сертификат себе на Рутокен ЭЦП.







    И установить клиент под нужную операционную систему:



    Как все это работает?

    Немного об аппаратной части. Изначально мы долго думали, какую “базу” использовать для нашего решения, так как нужно было соблюдать баланс между стоимостью, удобством, производительностью. После исследований, что предлагается на рынке, мы остановились на двух вариантах реализации и дальнейшего распространения решения:

    • x86 (Enterprise) – программное решение, которое предоставляется конечному потребителю в виде образа виртуальной машины, который можно развернуть в рамках своей ит-инфраструктуры.
    • Raspberry Pi – уже достаточно известный микрокомпьютер, который обладает вполне неплохой производительностью при не самой высокой стоимости и который можно начать использовать как VPN-сервер уже через 10 минут после того, как его в прямом смысле вынули из коробки.

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


    Но изначально, нам все же нужно осуществить настройку сервисов, которые требуются для корректной работы продукта. Настройка сервисов осуществляется на текущий момент специалистами нашей компании в полуавтоматическом режиме. Это значит, что автоматизирован процесс деплоя программного обеспечения и первичных настроек, но инициализация данного процесса пока остается привилегией человека. Во время первичной настройки устанавливаются системные пакеты, python, django, OpenVPN, supervisor, OpenSSL и пр.


    А что же дальше? Далее необходимо настроить всю инфраструктуру, которая собственно и отвечает в целом за безопасность. А именно: CA (центр сертификации), PKI (инфраструктура открытых ключей), выписать необходимые ключи и сертификаты.


    Создание PKI и CA, а также формирование файла конфигурации OpenVPN-сервера, генерация ключей и выписывание сертификатов осуществляется уже после передачи продукта клиенту. Но это не значит, что для этого необходимо иметь какие-то специфические знания и прямой доступ к операционной системе. Все реализовано в бизнес-логике бэкенда системы администрирования, доступ к которой предоставляется через Web-интерфейс. От клиента требуется только ввести минимальный набор атрибутов (описано выше), после чего стартует процесс инициализации PKI и создания СА. Описывать конкретные вызовы системных команд смысла особого нет, так как уже давно все описано и разжевано до нас. Главное, что мы сделали - это автоматизировали данный процесс, избавив пользователя от необходимости обладать специфическими знаниями в администрировании.


    Для работы с ключами и сертификатами мы решили не изобретать велосипед (хотя очень хотелось и до сих пор вынашиваем мысль его изобрести исходя из наших дальнейших планов развития продукта) и используем easy-rsa.


    Самый долгий процесс при настройке инфраструктуры – это генерация файла Diffie-Hellman. Мы долго экспериментировали с параметрами и пришли к балансу “качество-производительность”. Хотя были мысли вообще избавиться от данного шага, нагенерировать таких файлов заранее, используя наши серверные мощности и просто “раздавать” их во время первичной инициализации. Тем более, что данные, содержащиеся в этом файле не являются приватными. Но пока мы оставили эти мысли для дальнейших “изысканий”.


    Далее необходимо предоставить конечному пользователю механизм самостоятельного создания ключевых пар, формирования запросов на выписку сертификата в CA и собственно получение данного сертификата с записью на токен. А так же необходим клиент, позволяющий установить VPN-соединение с предварительной аутентификацией на токене.


    Первую задачу мы решили благодаря нашему плагину который реализует функциональность электронной подписи, шифрования и двухфакторной аутентификации для Web- и SaaS-сервисов. Для того, чтобы выписать сертификат и записать его на токен, пользователь должен установить данный плагин, перейти по ссылке чтобы попасть в личный кабинет сервиса RutokenVPN, предварительно подключив токен к компьютеру (подробнее о плагине можно прочитать на нашем ресурсе)


    При инициализации процесса выписывания сертификата, осуществляется запрос на токен для генерации ключевой пары а также запрос на выписку сертификата в CA. Приватный ключ записывается на токен, а запрос на выписку сертификата отправляется в СА, который в свою очередь осуществляет его выписывание и возвращает в ответе. После чего сертификат так же записывается на токен.


    Почти все готово для установления VPN-соединения. Не хватает клиента, который “знает”, как работать с сервером и нашими токенами.




    Наш клиент реализован на Electron. Кто не в курсе, что это за зверь, то если совсем кратко – возможность реализовать десктопное приложение, используя js, css и html. Не вдаваясь в подробности, клиент является неким “враппером” над OpenVPN-клиентом, позволяющим осуществлять его вызовы с нужными параметрами. Почему именно так? На самом деле нам было так удобней, хотя выбранное решение и накладывает определенные ограничения.


    Так как мы используем токен как носитель ключевой информации, необходимой для аутентификации при установлении VPN-сессии, то нам нужно сконфигурировать OpenVPN-клиент для работы с ним. Провайдером PKCS#11 является библиотека собственной разработки для работы с нашими токенами, путь к которой и прописывается в настройках OpenVPN клиента. Подробнее о ней можно почитать .


    При запросе на установку VPN-соединения, запрашивается PIN-код ключа, при корректном вводе извлекается сертификат для аутентификации клиента, осуществляется хэндшейк клиента с сервером и устанавливается VPN-соединение. Знающие люди могут возразить, что не все так просто, но целью данного описания не является рассказать все тонкости работы OpenVPN, а только осветить основные моменты нашей реализации.


    Немного о наших планах. Основное, над чем сейчас мы работаем - это реализация ГОСТ-шифрования. Уже пройден достаточно большой путь исследований, позволивший нам максимально приблизиться к ее реализации. В ближайшее время сможем удовлетворить интерес потенциальных клиентов в данной функциональности.

    Теги:

    • vpn
    • openvpn
    • raspberry pi
    • рутокен
    • openssl
    Добавить метки

    Интернет прочно вошел в нашу жизнь, и если ранее, в годы господства аналоговых модемов, для выхода в Интернет приходилось учитывать и объем трафика, и время соединения, то сегодня нормой стало безлимитное подключение к Интернету. То есть если Интернета нет в любое время и в любом «объеме», то это уже что-то из ряда вон выходящее. Причем если раньше наличие безлимитного Интернета считалось стандартом де-факто для корпоративных сетей, то сегодня это уже стало нормой для конечных пользователей. Вместе с развитием Интернета меняется и концептуальная модель его использования. Появляются все новые сервисы, например видео по запросу и VoIP, развиваются пиринговые файлообменные сети (BitTorrent) и пр. В последнее время очень популярной стала организация виртуальных частных сетей (VPN) через Интернет с возможностью организации удаленного доступа к любому компьютеру в составе этой сети. О том, как это можно сделать, и пойдет речь в настоящей статье.

    Зачем это нужно

    Организация VPN-сетей через Интернет или внутри локальной сети имеет много сценариев использования: сетевые игры в Интернете в обход игровых серверов (точно так же, как игры по локальной сети), создание закрытой от посторонних сети для передачи конфиденциальной информации, возможность удаленного и безопасного управления компьютерами (полный контроль над удаленным ПК), организация защищенного доступа для сотрудников, находящихся в командировке, к ресурсам корпоративной сети, связь по виртуальной сети отдельных офисов (локальных сетей).

    Традиционный подход к развертыванию такой виртуальной частной сети заключается в том, что в корпоративной сети поднимается и конфигурируется VPN-сервер (обычно на базе ОС Linux) и удаленные пользователи заходят в корпоративную сеть по VPN-соединениям.

    Однако такой подход неприменим в случае, когда пользователю необходимо получить удаленный доступ к своему домашнему компьютеру. Вряд ли ситуацию, когда дома поднимается отдельный VPN-сервер, можно считать обычной. Впрочем, не стоит отчаиваться. Задача создания VPN-сети решаема и под силу даже начинающему пользователю. Для этой цели существует специальная программа Hamachi, которую можно свободно скачать из Интернета (http://www.hamachi.cc/download/list.php). Что особенно радует, так это наличие ее русифицированной версии, так что освоить программу сможет любой пользователь.

    Hamachi 1.0.2.2

    Итак, Hamachi (текущая версия - 1.0.2.2) - это программа, позволяющая создать виртуальную частную сеть (VPN) через Интернет и объединить в ней несколько компьютеров. После создания такой сети пользователи могут устанавливать VPN-сессии между собой и работать в этой сети точно так же, как в обычной локальной (LAN) сети с возможностью обмена файлами, удаленного администрирования компьютеров и т.д. Преимущество VPN-сети заключается в том, что она полностью защищена от несанкционированного вмешательства и невидима из Интернета, хотя и существует в нем.

    Программа Hamachi должна быть установлена на всех компьютерах, которые предполагается объединить в виртуальную частную сеть.

    Виртуальная сеть создается с помощью специализированного сервера Hamachi в Интернете. Для соединения с этим сервером используются порты 12975 и 32976. Первый порт (12975) применяется только для установки соединения, а второй - во время работы. Впрочем, обычным пользователям вряд ли потребуется столь подробная информация.

    После того как с помощью сервера Hamachi создается виртуальная сеть между выбранными компьютерами, обмен информацией между клиентами VPN-сети происходит уже напрямую, то есть без участия сервера Hamachi. Для обмена данными между клиентами VPN-сети используется протокол UDP.

    Установка программы

    Программа Hamachi устанавливается на компьютеры с операционной системой Windows 2000/XP/2003/Vista. Существуют также консольные версии программы для Linux и Mac OS X. Далее мы рассмотрим установку и настройку программы на примере операционной системы Windows XP.

    Установка программы Hamachi достаточно проста и не вызывает проблем (особенно учитывая, что интерфейс запускаемого мастера установки русский). После начала установки программы на компьютере запускается мастер установки, который предложит согласиться с лицензионным соглашением, выбрать папку для установки программы (рис. 1), создать иконку на рабочем столе и т.д.

    Среди полезных опциональных возможностей, которые можно активировать в процессе установки программы, - автоматический запуск Hamachi при загрузке компьютера и блокирование уязвимых служб для соединений Hamachi (рис. 2). В последнем случае будет заблокирована служба Windows File Sharing для виртуального сетевого адаптера Hamachi. В результате другие пользователи VPN-сети не получат доступа к имеющимся в вашем компьютере файлам и папкам, открытым для совместного использования. При этом данные файлы и папки останутся доступными для обычных пользователей локальной сети, для соединения с которыми не применяется VPN-соединение.

    Рис. 1. Мастер установки программы Hamachi позволяет указать папку
    для размещения программы, создать иконку на рабочем столе
    и выбрать опциональную возможность автоматического запуска программы
    при загрузке компьютера

    Кроме блокирования службы Windows File Sharing, блокирование уязвимых служб для соединений Hamachi также приводит к блокированию удаленного доступа к определенным службам Windows, которые часто подвергаются атакам. Соответственно если вы используете программу Hamachi для соединения с надежными клиентами, которым вы доверяете, то опцию блокирования уязвимых служб лучше отключить.

    Рис. 2. Мастер установки программы Hamachi позволяет заблокировать
    уязвимые службы для соединений Hamachi

    На последнем этапе мастер установки предложит выбрать, какой вариант программы установить: базовую версию или Premium. Программа Hamachi существует в двух версиях. Базовая версия является бесплатной, а версия Premium, обладающая более широкими возможностями, - платной. Отметим, что для большинства пользователей вполне достаточно бесплатной базовой версии программы (о детальных отличиях базовой версии от версии Premium мы расскажем чуть позже), но стандартный поход следующий: сначала устанавливается Premium-версия на 45 дней (бесплатно), а по истечении этого периода автоматически происходит переход к базовой версии.

    После установки и запуска программы Hamachi на компьютере в том случае, если программа устанавливалась впервые, запустится краткий путеводитель по Hamachi, в котором описывается, как работать с программой.

    Первый запуск программы

    При первом запуске программы будет создана ваша учетная запись. На этом этапе необходимо задать имя компьютера, под которым он будет виден другим пользователям VPN-сети (рис. 3).

    Рис. 3. Задание имени компьютера, под которым
    он будет виден другим пользователям VPN-сети

    Когда имя компьютера задано, программа устанавливает соединение с сервером базы данных Hamachi и запрашивает IP-адрес, который будет присвоен виртуальному сетевому адаптеру Hamachi и будет использоваться в дальнейшем для установления VPN-соединения. Каждому клиенту Hamachi присваивается IP-адрес из диапазона 5.0.0.0/8 (маска подсети 255.0.0.0), который в принципе не относится к зарезервированным для применения в Интернете диапазонам адресов. К таким зарезервированным для частного использования в локальных сетях относятся следующие диапазоны: 10.0.0.0/8 (диапазон от 10.0.0.0 до 10.255.255.254), 172.16.0.0/12 (диапазон от 172.16.0.0 до 172.31.255.254) и 192.168.0.0/16 (диапазон от 192.168.0.0 до 192.168.255.254). Однако диапазон 5.0.0.0/8 на протяжении уже более 10 лет зарезервирован организацией IANA (Internet Assigned Numbers Authority - американская организация, управляющая пространствами IP-адресов) и не используется в качестве публичных (внешних) адресов Интернета. Таким образом, диапазон 5.0.0.0/8, с одной стороны, относится к диапазону внешних (публичных) адресов Интернета, то есть исключена вероятность, что присвоенный вам IP-адрес уже применяется в вашей локальной сети (в локальных сетях используются только зарезервированные для частного применения IP-адреса), а с другой - эти адреса еще никем не заняты.

    После присвоения вам IP-адреса из диапазона 5.0.0.0/8 он становится своеобразным идентификатором вашего компьютера в виртуальной частной сети. Этот IP-адрес присваивается виртуальному сетевому адаптеру Hamachi. Так, если набрать в командной строке команду ipconfig/all, то кроме настроек сетевого интерфейса реального сетевого адаптера (который физически присутствует в вашем ПК) можно обнаружить, что появился еще один виртуальный Ethernet-адаптер Hamachi с присвоенными ему MAC-адресом, IP-адресом, маской подсети, IP-адресом шлюза и т.д. (рис. 4).

    Рис. 4. После первого запуска программы виртуальному сетевому адаптеру
    Hamachi присваивается IP-адрес из диапазона 5.0.0.0/8 и производится настройка
    сетевого интерфейса

    Итак, после того как программа Hamachi сконфигурировала виртуальный сетевой адаптер, можно приступать к работе с программой.

    На этом этапе ваш компьютер еще не является членом какой-либо виртуальной частной сети, поэтому первым делом нужно подключиться к уже существующей виртуальной частной сети или создать новую VPN-сеть.

    Работа с программой

    Интерфейс программы очень прост (рис. 5). Имеется всего три функциональных кнопки: «включить/выключить», кнопка сетевого меню и кнопка системного меню.

    Рис. 5. Интерфейс программы
    Hamachi очень простой -
    всего три функциональные кнопки

    Для создания новой VPN-сети или присоединения компьютера к уже существующей нажмите на кнопку сетевого меню и выберите соответствующий пункт (рис. 6).

    Рис. 6. Кнопка сетевого меню позволяет
    создать новую VPN-сеть или присоединить
    компьютер к уже существующей

    Присоединение ПК к существующей виртуальной сети и выход из нее

    Если требуется подсоединить компьютер к уже существующей виртуальной сети и известно ее название и пароль (в случае, если он используется), то в сетевом меню выберите пункт Войти в существующую сеть… Далее откроется окно, в котором необходимо задать имя сети и пароль (рис. 7).

    Рис. 7. Добавление компьютера
    в существующую виртуальную сеть

    После этого в окне программы появятся название сети и список присоединенных к ней компьютеров (кроме вашего) - рис. 8.

    Рис. 8. После присоединения компьютера
    к виртуальной сети в окне программы
    отображается список присоединенных
    к ней компьютеров

    Если рядом с названием компьютера стоит зеленая точка или звезда, то это означает, что связь с компьютером установлена. Мигание зеленой точки свидетельствует о том, что связь находится в процессе установки. Светлый круг вокруг зеленой точки указывает на то, что с данным компьютером идет обмен информацией.

    Хуже всего, когда рядом с названием компьютера стоит желтая точка - это означает, что прямое соединение с ним по каким-то причинам установить не удалось. Если желтым цветом отображается название компьютера, то это означает, что связь с ним потеряна.

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

    Если название компьютера и точка около его имени отображаются серым цветом, то это означает, что компьютер хотя и присоединен к данной виртуальной сети, но недоступен (например, ПК выключен, нет соединения с Интернетом или не запущена программа Hamachi).

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

    Создание новой сети и удаление созданной сети

    Если требуется создать новую виртуальную сеть, то в сетевом меню выберите пункт Создать новую сеть… Откроется окно, в котором необходимо задать имя создаваемой сети и пароль, который будут использовать другие пользователи для присоединения к этой сети (рис. 9).

    Рис. 9. Создание новой VPN-сети

    После создания новой сети к ней можно присоединять компьютеры пользователей. Если сеть создана вами, то вы являетесь ее администратором и получаете полный контроль над нею, которого лишены другие пользователи. При этом важно помнить, что управлять созданной сетью можно только с того компьютера, на котором она была создана. Если точнее, то управлять сетью можно только с компьютера, которому присвоен точно такой же виртуальный IP-адрес, как тот, что использовался при создании виртуальной сети. Почему это замечание так важно? Представьте себе ситуацию: вы установили программу Hamachi и создали новую VPN-сеть. Потом вы полностью удалили (включая все конфигурационные файлы) программу Hamachi и через некоторое время установили ее вновь. Вам будет присвоен новый виртуальный IP-адрес, но, используя его, вы уже не сможете контролировать созданную вами ранее VPN-сеть.

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

    Другие действия с компьютерами сети

    Если вы присоединились к сети, то можете совершать над присоединенными к ней компьютерами следующие действия:

    • проверка доступности;
    • просмотр папок;
    • отправка сообщения;
    • копирование адреса;
    • блокирование;
    • установка метки.

    Для того чтобы выполнить одно из них, щелкните на имени компьютера правой кнопкой мыши и в ниспадающем меню выберите соответствующий пункт (рис. 10).

    Рис. 10. Список возможных действий
    с выбранным компьютером сети

    При выборе пункта Проверить доступность будет выполнена обычная команда ping по адресу соответствующего компьютера.

    Пункт Просмотреть папки позволяет получить доступ к открытым для совместного доступа (Sharing) папкам на компьютере.

    Пункт Отправить сообщение дает возможность обмениваться сообщениями между отдельными компьютерами сети наподобие тому, как это делается в ICQ.

    Пункт Копировать адрес вставляет в буфер обмена IP-адрес выбранного компьютера, что удобно, если требуется использовать этот адрес в других программах (например, удаленного администрирования).

    Пункт Блокировать позволяет временно заблокировать выбранный компьютер, то есть ваш с ним VPN-канал окажется заблокированным и обмен информацией будет невозможен.

    Пункт Установить метку позволяет выбрать формат отображения атрибутов компьютера в сети. По умолчанию отображается IP-адрес компьютера и его название. Можно задать отображение только имени компьютера или только IP-адреса.

    Настройка программы

    Для того чтобы получить доступ к настройке программы, необходимо нажать на кнопку системного меню и выбрать пункт Установки… (рис. 11).

    Рис. 11. Получение доступа к настройкам
    программы

    После этого откроется окно Статус и конфигурация , позволяющее произвести детальную настройку программы (рис. 12).

    Рис. 12. Окно детальной конфигурации программы

    Собственно, здесь все достаточно просто, и вряд ли нужны подробные комментарии, поэтому просто перечислим возможности, которые можно реализовать в окне конфигурации. Итак, в этом окне можно изменить имя компьютера, произвести детальную настройку соединения, задать тип запуска программы, заблокировать или разблокировать уязвимые службы Windows, заблокировать новых членов сети и реализовать другие, менее значимые опции. Среди важных возможностей отметим отключение шифрования при передаче данных между отдельными компьютерами сети. Для того чтобы сделать это, необходимо нажать на иконку Окно и в группе Внешний вид отметить пункт Show «Advanced…» per menu item (рис. 13).

    Рис. 13. Добавление пункта Advanced…
    в ниспадающее меню

    После этого, если на имени компьютера, присоединенного к сети, щелкнуть правой кнопкой мыши, в ниспадающем меню появится пункт Advanced… Если выбрать его, то откроется окно Tunnel Configuration , позволяющее изменить настройки VPN-туннеля. Для отключения шифрования в пункте Encryption необходимо выбрать значение Оff . В этом случае данные с вашего компьютера будут передаваться на выбранный ПК в незашифрованном виде. Однако в обратном направлении данные будут передаваться зашифрованными. Для того чтобы полностью отключить шифрование для VPN-туннеля между двумя компьютерами, его нужно отключить на обоих компьютерах.

    Отметим, что отключать шифрование следует только в исключительных случаях, поскольку сама процедура шифрования вряд ли отразится на трафике. Дело в том, что трафик будет определяться пропускной способностью вашего интернет-канала, а отнюдь не применением или отсутствием шифрования. Только в том случае, если VPN-туннель образуется между компьютерами в пределах одной локальной сети и его пропускная способность составляет порядка 100 Мбит/с, использование шифрования может немного снизить максимальную скорость передачи (до 70-80 Мбит/с).

    Заключение

    Программа Hamachi - это мощный инструмент, позволяющий очень быстро создавать VPN-сети. Отметим, что изначально она была создана для того, чтобы пользователи могли играть в сетевые игры в обход игровых серверов. Однако возможные сценарии применения этой программы значительно шире. Так, создав виртуальную сеть и присоединив к ней компьютеры, можно, воспользовавшись стандартными программами удаленного администрирования, получить удаленный доступ к любому компьютеру виртуальной сети, поскольку каждый компьютер такой сети имеет свой выделенный IP-адрес.

    В то же время нужно отметить, что далеко не всегда удается установить прямое соединение между отдельными компьютерами. И несмотря на то, что на сайте производителя утверждается, что программа легко «пробивает» маршрутизаторы и NAT-устройства, на самом деле все не столь оптимистично. В документации к программе утверждается, что в 5% случаев прямое соединение между отдельными компьютерами установить не удается, однако, как нам кажется, эта цифра явно занижена. Реальная ситуация такова: если речь идет о соединении двух компьютеров, которым присваивается динамический или статический публичный IP-адрес, то проблем не возникает. То есть если у вас дома имеется всего один компьютер с выходом в Интернет и вам нужно соединиться с пользователем, у которого также один компьютер с выходом в Интернет, то никаких проблем не будет. Как показывает практика, не возникает проблем установления соединения и между компьютером пользователя с присвоенным ему динамическим или статическим публичным IP-адресом и компьютером в составе локальной сети, защищенной маршрутизатором. Однако если связь устанавливается между двумя компьютерами, принадлежащими разным локальным сетям, защищенным маршрутизаторами, то возможны проблемы и не факт, что прямое соединение будет установлено. То есть соединение может быть установлено, но с большой вероятностью оно будет не прямое, а через сервер Hamachi. Соответственно скорость такого канала связи окажется очень низкой и проку от такого соединения будет не много. К примеру, у вас дома выход в Интернет реализован с использованием беспроводного маршрутизатора, то есть ваш компьютер находится в составе домашней локальной сети и ему присваивается IP-адрес из диапазона зарезервированных для частного применения адресов, а публичный адрес присваивается WAN-порту маршрутизатора, через который вы выходите в Интернет. Если вы пытаетесь установить соединение с другим компьютером, который также находится в составе локальной сети (например, с рабочим компьютером в офисе или с компьютером пользователя, у которого дома развернута локальная сеть и используется маршрутизатор), то в большинстве случаев появляются проблемы.

    В руководстве пользователя программы Hamachi описывается, каким образом можно избежать подобных проблем. Для этого предлагается использовать фиксированный (а не динамический) UDP-порт и реализовать функцию перенаправления портов на маршрутизаторе. Однако, как показывает практика, перенаправление портов или применение демилитаризованной зоны в маршрутизаторе далеко не всегда помогает.