Записки IT специалиста
Организация VPN каналов между офисами при помощи OpenVPN.
- Автор: Есартия Р.Б.
- 29.09.2011
Организация VPN каналов между филиалами компании имеет большое значение в работе любого IT-специалиста. В данной статье рассматривается один из способов реализации этой задачи на основе программного продукта OpenVPN.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Ниже мы рассмотрим топологию сети, в которой будем организовывать VPN-туннель, разберем особенности конфигурирования программы OpenVPN и пошагово настроим маршрутизацию для наших офисов. Статья написана из расчета, что OpenVPN будет устанавливаться на платформы Windows 7 и Windows Server 2008.
Топология сети.
Использованная нами сетевая топология стандартна. Имеется Сеть Центрального Офиса (назовем её СЦО) и Сеть Филиала (назовем её СФ). Стоит задача соединить офисы таким образом, чтобы конечный пользовательский компьютер (далее ПК1) офиса СЦО имел доступ к общим ресурсам пользовательского компьютера (далее ПК2) СФ.
![]()
CЦО имеет в своем составе:
- Интернет-шлюз (назовем его ИШ1) с двумя сетевыми интерфейсами:
- 111.111.111.111 — выдаётся провайдером, смотрит в интернет.
- 192.168.0.1 — назначается нами, смотрит в СЦО.
- 10.8.0.1 — адрес виртуального интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса назначается программой. Мы с вами не должны менять адрес самостоятельно из управления сетевыми адаптерами.
- 192.168.0.2 — физический интерфейс, параметры задаются нами, смотрит в СЦО.
СФ имеет в своем составе:
- Интернет-шлюз (далее ИШ2) с двумя сетевыми интерфейсами:
- 222.222.222.222 — выдаётся провайдером, смотрит в интернет.
- 192.168.1.2 — назначается нами, смотрит в СФ.
- 10.8.0.2 — адрес виртуального сетевого интерфейса (интерфейс устанавливается в процессе установки программы OpenVPN). Адрес для этого интерфейса так же назначается программой OpenVPN.
- 192.168.1.2 — физический интерфейс, параметры задаются нами, смотрит в СФ.
Настраиваем 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) ключ.
- Генерируем сертификат (server.crt) и ключ (server.key) сервера.
- Генерируем сертификат (office1.crt) и ключ (office1.key) для клиента.
- Генерация параметров DiffieHellman (dh1024.pem).
- Генерация ключа tls-auth (ta.key) для аутентификации пакетов.
Разберем каждый пункт более подробно.
Генерируем основной сертификат СА и СА ключ:
Заходим в Пуск — Выполнить набираем cmd, жмем OK, заходим в командную строку. Пишем:
Таким образом мы находимся в директории easy-rsa:

Во время выполнения всех пунктов генерации ключей вы должны находиться именно в ней. Выполняем команду:
Не закрывая командную строку, зайдем в C:\ProgramFiles\OpenVpn\easy-rsa и отредактируем файл vars.bat, заполнив следующие параметры (указав, естественно, свои данные):
Теперь создадим СА сертификат и СА ключ. Раскрываем командную строку, которая все это время висела где то на рабочем столе, и продолжаем вписывать команды:
Последняя команда как раз и выполняет генерацию СА сертификата и СА ключа. В процессе создания ключа вам будут задавать вопросы, на которые вы можете отвечать просто нажатием Enter’a (тогда значения будут браться из файла vars.bat который мы редактировали выше) или же вводить свои. Стоит обратить внимание на вопрос:
Здесь вы должны задать название для сервера — в примере мы ввели OpenVPNS.
Генерируем сертификат (server.crt) и ключ (server.key) сервера.
Не выходя из директории, в нашей командной строке продолжим вводить команды. Сгенерируем сертификат сервера и ключа командой:
На вопросы отвечаем так же как в первом пункте. На вопрос:
Введем: server. На вопросы:
надо дать положительный ответ: Y.
Генерируем сертификат (office1.crt) и ключ (office1.key) для клиента.
Очевидно, что клиентов может быть много, в нашем примере он один — office1. В зависимости от количества клиентов следующая команда в командной строке выполняется несколько раз, причем названия генерируемых ключей так же меняйте:
если требуется еще сертификаты и ключи, скажем для второго клиента, то вводим:
В процессе ответа на вопросы не забывайте, что каждый клиент на вопрос CommonName должен получить уникальное имя, например: office1, office2 и т.д.
Генерация параметров DiffieHellman (dh1024.pem).
Вводим в командной строке, находят во все той же директории easy-rsa:
Генерация ключа tls-auth (ta.key) для аутентификации пакетов
В конце создаем ключ для tls-аутификации командой:
Теперь разберемся с тем, какие файлы оставлять на сервере, а какие перенести клиенту. На сервере (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:
Стандартный порт для OpenVPN:
Режим работы программы L3-туннель. В данном режиме OpenVPN — роутер:
Данного топология доступна с версии 2.1 и заключается в том что каждому клиенту выдается по 1 адресу, без виртуальных портов маршрутизатора:
Маршруты добавляются через .exe — это важно:
Задержка при добавлении маршрута, можно уменьшить до 5:
Данная опция задает организацию сети. У нас появляется виртуальная сеть 10.8.0.0 /24. Первый адрес из этой сети, то есть 10.8.0.1 выдается серверу, последующие (10.8.0.2, 10.8.0.3 и т.д.) клиентам. DHPC сервер получает адрес 10.8.0.254:
Задаем шлюз в openvpn сеть:
Директория, в которой мы должны расположить файл с названием нашего клиента, то есть office1 без расширения, и в нем записать команды, которые будут выполнятся на клиенте:
Далее идут пути до файлов сертификатов и ключей сервера. Заметим, что пути обязательно пишутся с двойной чертой, а именно \\:
Задаем серверу ОС маршрут на всю сеть:
Выбираем метод сжатия:
Задаем сжатие трафика:
OpenVPN передает системе регистраций событий программы не критические ошибки сети. На практике это уменьшит содержимое статус-окна, появляющегося при запуске сервера OpenVPN:
Cервер пингует противоположную сторону с интервалом в 10 секунд и если сторона не отвечает за 60 секунд, то сервер запустит пересоединение:
Далее переходим в директорию ccd и создаем файл, в котором будут лежать команды, посылаемые клиенту от сервера. Назвать его надо так же как мы называли самого клиента, например office1. Файл не будет иметь расширения.

Редактируем его через блокнот. Все параметры, заданные ниже, будут автоматически переданы клиенту:
Задаем ip и маску для нашего клиента office1:
Передаем ему маршрут на всю сеть:
Задаем для него шлюз:
Эта команда говорит серверу ОС о том, что за данным клиентом, а именно ОК (office1) находится сеть 192.168.1.0:
Таким образом, мы закончили конфигурирование сервера на стороне ОС.
Настройка клиента.
Далее приступим к изменению параметров клиента. Зайдем на машине ОК в папку config. Создадим в ней файл office1.ovpn Приступим к его редактированию, ряд опций повторяет аналогичные на сервере, поэтому мы их пояснять не будем:
Указываем внешний адрес ИШ1:
Клиент будет в работать в режиме тлс-клиента:
Эта опция защищает от подмены сервера третьим лицом:
Эти опции аналогичны серверу:
Задаем маршрут к сети 192.168.0.0:
Этой командой разрешаем прием конфигурации клиента с сервера:
Остальные опции также аналогичны серверу:
На этом настройка программы на стороне клиента ОК закончена.
Настройка брандмауэра и маршрутизация.
И так, мы имеем настроенные конфиги на ОК и на ОС. Теперь разберем очень важные моменты. Заранее оговоримся, если вы использует 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. Делаем это одним из нескольких способов:
Либо задаем постоянный маршрут до этой сети на самом клиенте ОК:
Либо задаем этот маршрут в ccd конфиге клиента на сервер, а именно в файле office1 допишем:
Так же это можно сделать, добавив строку напрямую в конфиг клиента ОК:
Но мы бы не рекомендовали загружать его, а делать все на стороне сервера.
Затем необходимо обеспечить маршрут пакетов с сервера ОС до удаленной сети 192.168.1.0. делается это аналогично варианту выше за несколькими исключениями.
Добавляем команду в конфиг сервера ОС:
или же добавляем команду непосредственно в командной строке:
Так же необходимо на сервере ОС и клиенте ОК включить в службах службу Маршрутизации и удаленного доступа, таким образом обеспечив маршрутизацию на внутреннюю сеть (форвардинг). Без этого внутренние адреса в сетях СЦО И СФ клиента ОК и сервера ОС не будут пинговаться.

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

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Кому нужен 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 за 5 минут и $5
На фоне беспорядочных блокировок Роскомнадзора появилась необходимость в VPN — это такая технология, которая шифрует интернет-трафик и позволяет выходить в Интернет как бы из другой точки мира. Допустим, если купить сервер где-нибудь в Европе, то все сайты и сервисы, на которые мы будем заходить, будут думать, что к ним зашел русскоговорящий пользователь из, скажем, Нидерландов. А интернет-провайдер будет думать, что мы всегда делаем запросы к какому-то серверу в Нидерландах, но без каких-либо уточняющих подробностей. Провайдер не сможет узнать ни адрес сайта, на который мы зашли, ни название сервиса, которым мы пользуемся. Будь то пользование Телеграмом или просиживание в какой-нибудь онлайн-игре — этого наш провайдер не узнает. Для него мы всегда обращаемся к «какому-то» серверу в Нидерландах.
На фоне апрельских новостей 2018 года обзавестись собственным VPN особенно полезно, чтобы мочь хотя бы просто пользоваться интернетом: то Viber не работает, то онлайн-игры не работают, то что-то еще отвалилось из-за беспорядочных блокировок Роскомнадзора. Можно подождать, пока все придет в норму, а можно взять ситуацию в свои руки и вернуть доступ к любимым ресурсам и сервисам самостоятельно.
Этот мануал нацелен на самых настоящих чайников, но хорошо бы хоть чутка знать английский. Вы потратите больше времени на чтение этой статьи, чем на поднятие VPN — это действительно так просто. Если вы считаете себя неграмотным пользователем ПК, то я советую не опускать руки и попробовать разобраться с сабжем.
Что я предлагаю
Я не предлагаю вам покупать готовые платные прокси или VPN. Это менее безопасно, чем то, что я хочу предложить вам. Кстати, платные и бесплатные прокси в нашей стране активно блокируют, потому что всякий публичный VPN, который предоставляет доступ к заблокированным ресурсам, объявлен вне закона. Я рассказываю о том, как поднять частный (приватный) VPN. Вы сможете подключить любое свое устройство и по желанию подключать туда других людей: коллег, друзей, родственников, а также будет возможность выборочно удалять оттуда людей.
Программное обеспечение, которое мы будем использовать, является полностью бесплатным и с открытым исходным кодом. Это значит, что любой человек, знающий программирование, может посмотреть на внутреннее устройство этого ПО и сказать, что ничего плохого в нем нет (например, удостовериться, что это ПО не сливает ваши персональные данные).
Единственная оговорка: покупать сервер мы будем у американского облачного провайдера DigitalOcean. Стоимость сервера с лимитом трафика в 1000 гигабайт составляет $5 в месяц (если вы зарегистрируетесь по промо-ссылке, то сразу же получите $100 на счёт на 60 дней). Поэтому необходимо зарегистрироваться и иметь на счёту хотя бы 5 долларов.
VPN с используемым в этой статье ПО можно поднять не только на DigitalOcean, но и на любом другом сервере (чуть подробнее об этом в FAQ в конце статьи). Но в таком случае статья не будет оправдывать свой заголовок, потому что данная процедура будет требовать определенных навыков и знаний.
Поехали
Взаимодействие с VPN состоит из двух частей: VPN-сервер и VPN-клиент.
VPN-сервер — это серверное программное обеспечение, которое будет предоставлять возможность пропускать через сервер наш трафик.
VPN-клиент — это программное обеспечение, устанавливающееся на компьютеры и телефоны обычных пользователей, которое будет отвечать за отправку интернет-трафика на наш сервер.
Настраиваем VPN-сервер
Заголовок звучит страшно, но это самый простой шаг из всего процесса поднятия VPN. Нам надо зарегистрироваться в DigitalOcean, скачать одну программу на компьютер и нажать в этой программе пару кнопок. После этого VPN-сервер будет поднят.
Подразумевая, что у вас уже есть аккаунт в DigitalOcean с подтвержденным адресом электронной почты (это важно!) и с $5 на балансе, приступаем к настройке сервера.
В качестве серверного ПО будем использовать Outline — это разработка ребят из Google, которую они сделали для журналистов, чтобы те без каких-либо ограничений могли получать доступ к любой открытой информации. Outline был создан таким образом, чтобы сделать его максимально тупым и простым в использовании. Сервер разворачивается буквально в пару кликов! Outline не хранит никаких логов, сам обновляется и вообще не требует никакой поддержки.
Зайдите на сайт Outline, проскролльте вниз до секции «1. Get Outline Manager», выберите свою операционную систему и нажмите кнопку «GET OUTLINE MANAGER».
После того, как файл скачается, запустите его. Вам будет предложено создать аккаунт в DigitalOcean или авторизоваться в уже существующий. Нажмите «sign me in»:
Введите почту и пароль от DigitalOcean, и затем вам на почту будет отправлено письмо с подтверждением авторизации. Из этого письма скопируйте 6-значный код и вставьте его в приложение. После успешной авторизации приложение также запросит разрешение на управление вашим аккаунтом DigitalOcean, без которого ничего работать не будет.
Теперь приложение должно спросить, VPN в какой стране вы собираетесь поднимать. Тут уж решайте сами. Если не знаете, какую выбрать, то действуйте по следующему принципу: чем страна ближе к вашему городу, тем лучше (но хорошо бы, чтобы между вами не было морей или океанов). Но учтите, что не все сайты будут на основе языка вашего браузера понимать, что вы русскоговорящий пользователь. Многие будут подсовывать вам сайты на языке страны, в которой находится ваш сервер. Например, у меня сервер в Нидерландах и из-за этого нередко мне подсовываются сайты на нидерландском языке, что жутко бесит. Поэтому имеет смысл задуматься о покупке сервера в ближайшей англоговорящей стране.
Всё. Если пред вами появилась примерно такая картина, значит настройка сервера успешно завершена:
«My access key» — это ключ, который вы должны использовать для своих личных устройств. Выше вы можете нажать кнопку «Add key», чтобы подключить к вашему VPN других людей.
Нажмите кнопку «GET CONNECTED», чтобы получить свой ключ (строка, начинающаяся с ss:// ), с помощью которого вы будете подключаться к своему VPN. А теперь приступаем к настройке VPN-клиента.
Официальные клиенты Outline
Outline предоставляет свои клиенты почти под все операционные системы. Если не хотите возиться с тонкой настройкой, можете скачать клиент Outline, вставить в него свой ключ и всё будет работать по нажатию одной кнопки в приложении Outline. Скачать клиент Outline можно в секции «2. Get Outline» на официальном сайте.
Для более продвинутых пользователей я рекомендую воспользоваться сторонними Shadowsocks-клиентами, которые дают более гибкие возможности: автозапуск с ОС, возможность тихо сидеть в трее, а также возможность выборочно проксировать приложения.
Проверить работоспособность VPN можно на сайте 2ip.ru. В поле «Откуда вы» будет показано, из какого города идет соединение. Там должен быть указан город вашего сервера.
Если в браузере не работает VPN, но работает в других приложениях, зайдите в настройки браузера и отключите все расширения, которые предоставляют proxy. Также будет нелишним перезапустить браузер.
Настройка сторонних Shadowsocks-клиентов
Outline работает по протоколу Shadowsocks. Это значит, что к нашему VPN-серверу можно подключиться через любое приложение, поддерживающее протокол Shadowsocks. Широко применяется в Китае для обхода Великого Китайского Фаерволла.
В Outline Manager на компьютере нажмите кнопку «GET CONNECTED», выберите «This device» и скопируйте строку, начинающуюся с ss:// , а затем можно смело закрыть окно. Эта строка по-умному называется URI Schema, я ее буду называть просто «схема» — это и есть ключ, с помощью которого человек может подключиться к нашему VPN.
Android
Скачайте официальный Shadowsocks-клиент из Play Market. Отправьте схему куда-нибудь, чтобы вы потом смогли скопировать ее на своем мобильном устройстве.
Скопируйте на телефоне схему в буфер обмена и откройте Shadowsocks-клиент. Сверху есть иконка с плюсиком — тыкаем на нее и выбираем пункт «Import from Clipboard» (Импортировать из буфера обмена). После этого сервер VPN-сервер будет добавлен в приложение.
Выберите сервер, нажав на него (чтобы слева полоска стала зеленого цвета). Нажмите на иконку бумажного самолетика в приложении, чтобы он стал зеленого цвета, и всё — VPN работает.
Откройте настройки вашего Android-устройства, перейдите в настройки VPN, там выберите настройки Shadowsocks-клиента и сделайте переключатель «Always-on VPN» активным.
Путь до этой настройки может быть иным и он сильно зависит от версии Android и производителя устройства.
Делаем свой VPN-сервер с трафиком 32 ТБ одной командой
Судя по последним новостям, в ближайшее время Роскомнадзор заблокирует в России ещё семь VPN-сервисов, в том числе Windscribe, Proton VPN и VPN Proxy Master. Это очень популярные публичные сервисы, которые, увы, в ближайшее время работать не будут.
Чтобы иметь доступ к необходимым для вас сайтам, расскажу о простом способе настройки собственного VPN-сервера на базе OpenVPN при помощи всего одной команды. Я уже рассказывал про способы с Outline и Amnezia.
Так что теперь есть целых три рабочих и довольно простых способа сделать свой VPN, который никто не заблокирует. Но этот мой самый любимый.
В первую очередь, ваш сервер не смогут заблокировать. Во-вторых, VPN-подключение через свой сервер практически не отнимает заряд телефона, и никто извне не сможет получить доступ к вашей информации. Все максимально конфиденциально. И просто.
Учтите, что делать все операции мы будем по ssh-подключению к серверу. Не бойтесь, это несложно, нужно будет всего лишь копировать и вставлять команды приведённые в статье, их немного. Но перед этим установите следующий софт:
— Putty (для SSH-подключения на старых версиях Windows. На десятки, на macOS и Linux можно использовать встроенный терминал)
— OpenVPN Client (для установки соединения ваших устройств с вашим сервером)
— FileZilla (программа понадобится для загрузки полученных VPN-ключей для их последующей установки)
После этого переходим к следующему, пожалуй, самому важному шагу.
Сделать это вы можете где угодно, но имейте ввиду, что большинство платформ, вроде Amazon Web Services, Digitalocean и Google Cloud для граждан России не работают, так как не принимают оплату банковскими картами, выпущенными в РФ.
Поэтому я могу посоветовать провайдера VDSina (реф). Стоимость аренды составит порядка 200 рублей в месяц. Два года уже арендую у них сервера не только для VPN, но и для веб-проектов, и никаких проблем не было.
VDSina принимает российские банковские карты, криптовалюты и электронные кошельки, вроде WebMoney и QIWI. Но вы можете воспользоваться и другим хостингом.
Настраивайте сервер по следующим параметрам:
В качестве операционной системы выберите Ubuntu 20.04
Тип сервера: стандартный
Тариф: 6,6 рублей в день (около 200 рублей в месяц, это хватит для VPN)
Опционально можете включить резервное копирование, оно стоит сверху еще 6 рублей в день, но позволяет в случае возникновения неполадок откатить всю программную начинку сервера к рабочему состоянию. В таком случае аренда обойдётся вам 300 рублей в месяц.
На этом все, переходим к следующему этапу
Для этого открываем терминал или Putty и вводим следующие команды. После ввода каждой команды нужно нажимать Enter:
1. ssh [email protected]адрес сервера (его можно найти в Поддержка/Тикеты)
2. Согласитесь с подключением — yes
3. После введите пароль сервера (его также можно найти в тикете)
4. После вводим комманду wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh (исходный код утилиты можно найти на Github)
5. Выберите протокол подключения UDP — введите цифру 1
6. Согласитесь со стандартным портом. Просто нажмите enter
7. Выберите стандартные настройки сервера для DNS, введя цифру 1
8. Введите имя ключа клиента
9. Нажмите Enter
После того как ключ будет создан, открывайте FileZilla.
В строке хост введите IP-адрес сервера
Имя пользователя: root
Пароль тот же, что вы получили в тикете
Порт: 22 (если не подключается, тогда 21)
FileZilla обычно сразу открывает папку root, если нет, то в корневом разделе откройте её самостоятельно.
В ней вы найдете файл с расширением «.ovpn». Он нам и нужен, просто нажимаем на него правой кнопкой мыши и выбираем «Скачать». После этого файл вы можете передать на другое устройство и открыть его в приложении OpenVPN.
Ключ-файл вы можете использовать на всех своих устройствах. При желании можно предоставить его и другим пользователям.
Если вам будет нужно создать новый файл конфигурации, просто приделайте все команды, приведенные выше.
Рекомендую wireguard посмотреть, он побыстрее опенвпн, после разных впн сервисов я очень удивлён был мгновенными подключением.
В отличие от Wireguard, который детектится всем, чем угодно, есть защищенный и +- такой же быстрый shadowsocks
https://github.com/shadowsocks/shadowsocks-libevСпасибо! Изучу, тоже гайдик по нему пульну наверное, в качестве альтернативного вариант.
А shadowsocks ещё быстрее
бОльшая часть ДТФеров после этого перестали читать
SCP: Я что для тебя какая-то шутка?
Докинь в статью инструкцию по минимально безопасности сервера.
Оставлять систему как есть — очень плохая идея: будут боты долбиться на 22 порт под рутом.А вы знаете такую статью? Если да, киньте пожалуйста.
Покупал норд, так и не заработал у меня нормально. Через скрытые серверы только 1 из 20 раз запускался. Деньги на ветер.
Так что не стоит рекомендовать это в РФ. Его блочат, а в те моменты что работал скорость гавно.Тоже вариант, но с личным VPN сервером как-то поспокойнее
Лучше сёрфшарк или експрес. Норд сейчас активно блочат
Говно вариант. Я заебался «восстанавливать» эти брученные аккаунты. При этом они имеют тенденцию отваливаться в самый неподходящий момент. В итоге плюнул и настроил свой VPN.
здесь ты покупаешь стыренный акк, который в дальнейшем могут восстановить и тебе придется снова писать и просить выслать новый + Норд не всегда нормально работает. У меня так 3 акка виндскрайба и один норда восстановили прежние владельцы
Еще бы он работал нормально. Покупал уже 3 раза этот Норд ВПН, максимум проработал — 2 месяца. В следующие разы месяц, а потом вообще нахуй не запустился. Точнее как, он запускал, но интернет просто отваливался, стоило выключить VPN — все работало. Но даже если бы работало все, то к половине серверов не подключается, нужно настраивать через obfuscated сервера. Вообщем, я крайне не рекомендую покупать Норд VPN через плати.ру. Лучше уж разориться на платный какой-нибудь с другом.
уже сколько времени прошло, а до сих пор хуйней какой-то страдаете, ей богу
любой адекватный VPS-провайдер принимает оплату криптой, если что
И правда, осталось только сначала поебаться с покупкой крипты, потом поебаться с оплатой того же digitalocean, и повторять это каждый месяц. А в чем профит по сравнению с Vdsina, где оплата за 3 клика идёт?
Сделали бы хотя бы замеры по скоростям. ну и как уже тут писали wireguard выглядит интереснее сейчас.
Учту в будущей статье. Про Wireguard сделаю уже точно. Вон как выше товарищ подсказал про вариант с веб-интерфейсом
Поднял похожим способом wireguard и сверху блокировщика реклам = проблем нет. Стоит чуть дороже 312р у моего хостинга но не критично,(даю друзьям с какого по 50р/мес и вкусно)
скорость на уровне, дома по wifi 60мбит/сек без него и 55мбит/сёк с ним отлично, бесшовное подключение в отличии от других сервисов.
А те кто советуют на плати аккаунты покупать — дрочь это, у меня этих аккаунтов куплено штук 20 и все рано или поздно умирали,а сидеть писать продавцу и ждать ответа — не всегда время есть.
20×200=4000₽. За эти бабки на 2 года сервер оплатить можно.
А то что хост уйдёт так изначально выбирай тот что на территории РФ работает с сер
верами по миру и все.
И про безопасность тоже бред пишут, если ты ничем противозаконным не занимаешься- проблем офк не будетOutline в два клика
Народ, а как на iOS перенести файл конфигурации? Только через iTunes?
или в телегу себе кинь и скачай с мобилы
Там же есть "мои файлы" или как то так называется,туда перекидываешь и все
или на почту или airdrop
надеюсь вам нравится ваша операционная система на вашем смартфоне, когда у людей на других системах такие вопросы не вызывают проблем)
Ребят подскажите!
Застрял на этапе с "ssh [email protected]", чтобы я не использовал не дает вводить пароль в строке для подключение. Быть может я что-то делаю не так?Чел, ты видимо линуксом не пользовался никогда. Там когда вводитшь пароль, символы не печатаются, типа чтобы не подсматривали. Просто введи точно строку и нажми enter
У VDsina же ограничение в 32тб, почему тогда безлимитный?
Почти безлимит) Поменял заг, чтобы не дезить, спасибо!
Т.е. гонять вообще весь трафик через впн? Вот хрень полная. Я не спорю, работать будет, но натить всё это перебор. Уже много лет есть куда более подробные статьи на хабре и через списки заблокированных ресурсов, и через маркировку пакетов и вообще через приватную as с использованием bgp.
А разве для впн лучше udp протокол( если что обоссыте, но не бейте. Я нуб)
А как использовать openvpn вместе с stunnel? Где можно это узнать?
oracle cloud позволяет запустить 2 виртуалки на минималках, с внешним ip БЕСПЛАТНО!
НО. Нужна регистрация и привязка зарубежной карты. Например, турецкой, или предоплаченной.
Поднял по этой инструкции — работает, бесплатных мощностей хватает.Добавлю, что по этой инструкции, одновременно будет работать только одно устройство. Чтобы одним ключем могли подключиться несколько человек, нужно в конфиге опенвпн
/etc/openvpn/server/server.conf
Добавить строку
duplicate-cn
и перезагрузить сервер\сервисСоздал сервер. Мое местоположение определяется, как Амстердам. Facebook, Instagram и другие сайты работают.
Но Netflix выдает ошибку Not Available, как будто определяет, что я в России.
Поможете мне я купил это но как то не смог разбираться помогите пожалуйста
Я купил это но не разбираюсь в этом поможете пожалуйста
Ниасилил, пойду убьюсь.
Отваливается OpenVPN постоянно
Privatnet. Ru — мне подошел — цена крутая и 2 года без сбоев работает
Сделал всё как тут написано, сервер единственное выбрал другой. Интернет есть, но выход на заблокированные ресурсы не работает