Андрей Смирнов
Время чтения: ~26 мин.
Просмотров: 135

Настраиваем серверную и клиентскую часть OpenVPN на Windows

Друзья, приветствую на fast-wolker.ru! Сегодняшний материал  жизненно необходим тем, кто задумывает организовать бесплатный и безопасный доступ к своей локальной сети из интернета для  удаленной работы из любого места. Существует  достаточно  решений — одни  сложные, требующие денежных вложений.

Другие бесплатны и вполне по силам для самостоятельного и бесплатного внедрения в любой организации. Сегодня мы и решим такую практическую задачу — организуем доступ сотрудников  к  обычной сети для удаленной работы с помощью программы Open VPN.

img_5d9b8e4981a5e.png

Имеется сеть с выделенным IP адресом от провайдера (это обязательное условие для решения нашей задачи!) и нам  нужно:

  • организовать безопасный  и регулярный  доступ к сети из другого филиала (со своей сетью)  для удаленной работы сотрудников с общей базой данных;
  • соединить между собой две разных локальные компьютерные сети;
  • компьютеры  обоих сетей (клиенты)  должны «видеть» друг друга;
  • обеспечить удаленным сотрудникам возможность печати документов из  общей базы данных на принтеры своего удаленного офиса;
  • Доступ к базе данных будет организован через удаленный рабочий стол (терминальный доступ).

Обе наших компьютерных сети не  используют домены,  Open VPN поэтому  — одно из подходящих решений. Мы самостоятельно «поднимем» сначала в нашей сети Openvpn сервер, затем сгенерируем сертификаты пользователей, которые будут подключаться к нему. Настроим наш сервер в соответствии с задачей.

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

Как настроить сервер openvpn на windows 10?

Что за программа — Open VPN и зачем она нужна? Данный продукт — бесплатное программное решение в течение многих лет предлагаемое разработчиками для организации бесплатных виртуальных частных сетей. Внутри вашего канала Интернет создается безопасный туннель  (в том числе и для решения нашей задачи).

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

Замечательной особенностью open vpn является то что генерация сертификатов производится через собственный  «авторизованный центр», и платить за выдачу и продление не нужно. Срок действия сертификата определяется самостоятельно. Изначально программа была разработана для Linux. Но для пользователей Windows так же есть решения на сайте разработчика.

Нужно выбирать версию подходящую для вашей операционной системы. В настоящее время актуальна версия для Windows 10. Ее мы и будем сегодня использовать.

Программа OPEN VPN не имеет обычного  механизма  автоматического обновления. Новые версии нужно  сначала скачивать с сайта разработчика, тестировать.  При установке новой версии «поверх» существующей сервер сломается и перестанет работать.

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

Забегая вперед скажу — лучше иметь в сети два таких  open vpn сервера — основной и резервный. И издеваться над резервным, а придет время- по образу и подобию обновить основной. Итак, для решения нашей задачи следует  сначала подготовить наш будущий сервер к работе. Скачиваем программу с сайта разработчика и устанавливаем на нужный компьютер.

img_5d99b78b86b87.png

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

После окончания установки идем в «Центр управления сетями и общим доступом» — «изменение параметров адаптера». Обнаруживаем, что установился виртуальный сетевой адаптер (через него будет идти соединение) под именем «Ethernet«.

img_5d99bc0952e51.png

Если название получилось на русском языке (зависит от версии) — переименовываем на английском . Это важно!  Имя адаптера придумываем любое — покороче.

Как настроить сетевой мост между двумя сетями для Open VPN сервера?

В моем случае необходимо, чтобы клиенты подключаясь  к нашей сети видели наши  доступные компьютеры,  а наши сервера «видели» бы нужные   сетевые принтеры в соседней сети. Для этого нам нужно  создать сетевой мост — объединить два сетевых устройство между собой.

В нашем случае  это наш сетевой адаптер, который «смотрит» в интернет и только что созданный адаптер TAP. Настройки IP обнуляем. Выделяем оба адаптера мышкой и объединяем в «мост»:

img_5d99bde8ac94b.png

После установки устройства «Сетевой мост» нужно сделать ему настройки через «свойства» IP адреса, шлюза, маски а так же адреса DNS -серверов (выданные провайдером) . Если IP не было — назначить постоянный, внутренний. Это важно, без этого наш сервер не заработает!

img_5d99bef3d143c.png

Настройки IP адаптеров включенных в мост не изменяем и ничего не трогаем!

Отключаем брандмауэр windows.  Дополнительно, там же идем в «Разрешение обмена данными с приложениями в брандмауэре  Windows,  добавляем наш установленный open vpn в список (C:Program FilesOpenVPVBinOpenVPNgui,exe).

img_5d99c0436361a.png

Сняли возможную блокировку соединения. Идем далее! Предварительная подготовка почти закончена. Теперь займемся непосредственно сервером. Идем в папку C:Program FilesOpenVPVeasy-rsa

img_5d99c2118dd24.png

В ней находятся программы  с которыми мы сейчас будем взаимодействовать. Открываем командную строку от имени Администратора. Переходим в папку easy-rsa, для чего в командную строку скопируем команду  cd C:Program FilesOpenVPNeasy-rsa

img_5d99f2be48dae.png

Все операции далее совершаем через командную строку. Для создания конфигурации сервера запустим файл init-config.bat

img_5d99f325871bc.png

Создастся файл vars.bat, в нем мы заполним информацию, которую будут содержать сертификаты безопасности и с их помощью будут шифроваться данные. Для этого в блокноте открываем файл vars.bat и произвольно заполняем значения (командную строку не закрываем!):

set KEY_COUNTRY=US set KEY_PROVINCE=CA set KEY_CITY=SanFrancisco set KEY_ORG=OpenVPN set KEY_EMAIL=mail@host.domain set KEY_CN=server set KEY_NAME=server set KEY_OU=OU set PKCS11_MODULE_PATH=changeme set PKCS11_PIN=1234

Значения «server»  не изменяем. Все значения (страна, регион, город, организация, почтовый адрес) проставляем произвольно английским шрифтом. Сохраняем файл. Переходим в командную строку снова. Набираем  первой команду Vars.bat  

Если OpenVPN устанавливался ранее -набираем команду clean-all.bat  Она удалит созданную до этого  папку с ключами (keys) со всем содержимым . При установе сервера  OpenVPN с нуля  делать эту команду необязательно.

img_5d99ffcdb2548.png

Если у вас так как на фото, нормально. Идем далее

Теперь с помощью проводника перейдем в каталог C:Program FilesOpenVPNbin и скопируем файлы библиотек (*.dll) , файл openssl.exe в каталог, где лежат наши исполняемы файлы и который открыт сейчас   в командной строке (C:Program FilesOpenVPNeasy-rsa):

img_5d99fc99dad6f.png

Библиотеки нужны в этом каталоге, чтобы не возникало ошибок при создании сертификатов центра авторизации и файла  Диффи-Хеллмана. Начнем с последнего. Файл Диффи-Хеллмана  препятствует расшифровке информации (если файлы ключей были похищены), а так же отвечает за шифрование. Создадим его для нашего сервера в командной строке набрав команду build-dh.bat

img_5d99ff70e65b3.png

Ждем, пока файл генерируется на основании информации указанной в vars.bat Далее, сгенерируем сертификат нашего удостоверяющего центра. Он будет необходим для  дальнейшей выдачи серверного и клиентских сертификатов. Наберем в командной строке команду build-ca.bat Последовательно и не спеша нажимаем клавишу Enter…

img_5d9a009dde5a7.png

…после появления очередной строчки; данные в сертификате будут скопированы по значениям указанным в файле vars.bat Следующий этап —  создадим сертификат нашего сервера. В командной строке набираем команду build-key-server.batserver (server -имя серверного сертификата):

img_5d9a0284df58a.png

Так же последовательно и не спеша нажимаем Enter пока не дойдем до строчки Common Name(eg, your name or your servers hostname Здесь нужно обязательно указать имя сервера ( можно имя компьютера) и нажать Enter. Далее будут оставшиеся поля и запрос на создание пароля от сертификата. Просто нажимаем Enter. На вопросы записи сертификата и добавления его в базу данных  нажимаем Y и Enter

img_5d9a050e5cd9d.png

Срок действия сертификата — 10 лет.

Если нужно поменять сроки действия открываем файл openssl 1.00.cnf и в строке default_days редактируем сроки действия серверного и клиентских сертификатов.

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

В папке sample-config лежит пример файла server.ovpn, находим его, открываем блокнотом( от имени администратора!):

Openvpn клиенты не видят друг друга, как настроить файл конфигурации сервера?

Очищаем  содержимое server.ovpn и вставляем текст:

# Поднимаем L4-туннель dev tap #dev tune # Имя устройства (указывается имя адаптера openvpn): dev-node Ethernet

# Протокол, который использую:tcp #proto udpproto tcp

# Порт который «слушает» впн (должен быть открыт, не из списка «известных») port 13359

#server 10.8.0.0 255.255.255.0

#Укажем пулл незанятых  разрешенных адресов из нашей локальной сети; укажем IP «моста», его маску а так же диапазон адресов

# Пул разрешенных адресовserver-bridge 192.168.0.1 255.255.255.0 192.168.0.111 192.168.0.121

# Разрешаю клиентам видеть друг другаclient-to-client

#назначаю каждому клиенту свой постоянный IP

ifconfig-pool-persist ipp.txt

# Указал ключи и сертификаты ( должны находитьcя в папке с конфигом)ca ca.crtcert server.crtkey server.key dh dh2048.pem

# Метод шифрованияcipher AES-256-CBC

# Немного улучшит пингmssfix 1450

# Уровень отладки

verb 3

# максимальное количество клиентов

max-clients 10

status openvpn-status.log

Жирным выделил то, что можно менять. Ненужные строки можно закомментировать. Сохраняем файл под именем server.ovpn в  папке C:Program  FilesOpenVPNconfig  Если не получается сохранить —  запускаем блокнот (или программу NotePad++) от имени администратора, редактируем и сохраняем файл куда нужно.

Из папки Key скопируем сгенерированные нами файлы ключей и  сертификатов,  файл dh2048.pem в папку Config  — там же уже должен лежать наш файл server.ovpn

Операции с сервером можно считать почти законченными. Давайте стартуем и проверим наш сервер. На рабочем столе запустим ярлык OpenVPNgui в виде оранжевой замочной скважины (от имени Администратора!) На панели задач рядом с основным значком появиться еще один значок подключения. Кликнув по нему мышкой  обнаруживаем, что устанавливается соединение. Если сервер стартовал успешно —  значок подключения станет зеленым

Как сделать автоматический старт OpenVPN соединения при запуске Windows? 

Каждый раз запускать вручную соединение  неудобно. В ярлыке OpenVPNgui  (свойствах объекта) дописываем аргумент —connect server.ovpn, Ярлык помещаем в «автозагрузку». Я настраивал автозапуск быстро с помощью glary utilites

Вот так это выглядит Команда —connect дает соединение, а настройки его берутся из файла  нашего server.ovpn

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

С сервером закончили. Не забываем открыть порт (указанный в конфиге сервера) на роутере, чтобы предоставить доступ к  нашему серверу извне.

Как настроить openvpn клиент на Windows10

Теперь нужно закончить с клиентскими машинами. Для начала сгенерируем клиентские сертификаты. Командная строка еще не закрыта? Набираем команду build-key client (сlient — имя сертификата клиента, можно использовать фамилию, инициалы)

Генерация сертификата происходит как обычно. Доходим до строки Common Name(eg, your name or your servers hostname) и вводим имя сертификата клиента. Оно должно совпадать с введеным ранее! После заполняем строки по умолчанию даем согласие на запись сертификата и добавление его в базу данных.

База данных на сервере обновлена . Таким же образом изготавливаем необходимое количество сертификатов.

Устанавливаем программу Open VPN на компьютере клиента.

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

Можно редактировать конфигурацию нажав на значок подключения через меню «Редактировать конфигурацию»

Скопируем туда следующий текст:

client

#имя сетевого адаптера ovpn

dev tap

#протокол соединенияproto tcp #IP Адрес и порт сервераremote ВАШ IP  ВАШ порт # Ключи должны лежать в папке с конфигомca ca.crtcert client.crtkey client.key cipher AES-256-CBC nobind comp-lzo persist-key persist-tun verb 3

Сохраняем файл в папку с программой по пути C:Program FilesOpenVPNconfig Сертификат центра авторизации (ca.crt), сертификат и закрытый ключ (client.key,client.crt) мы копируем с сервера и помещаем в папку с файлом client.ovpn.

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

Если сотрудник уволился — удаляем файлы  его сертификата и ключа с сервера. Программа позволяет генерить список отзыва недействительных сертификатов —  простая но полноценная программа. Запускаем соединение на клиенте аналогично — через замочную скважину.

Если все сделано правильно — в панели клиента тоже будет зеленый значок. Соединение установлено, можно работать, устанавливать сетевые принтеры. Знатоков прошу в комментариях выкладывать свои версии конфигов сервера — чтобы не читать документацию на английском. Удачи!

OpenVPN – один из вариантов VPN (virtual private network или частных виртуальных сетей), позволяющих реализовать передачу данных по специально созданному зашифрованному каналу. Таким образом можно соединить два компьютера или построить централизованную сеть с сервером и несколькими клиентами. В этой статье мы научимся создавать такой сервер и настраивать его.

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

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

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

Установка OpenVPN на машину-сервер

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

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

    Скачать OpenVPN

  2. Далее запускаем установщик и доходим до окна выбора компонентов. Здесь нам потребуется поставить галку возле пункта с названием «EasyRSA», что позволит создавать файлы сертификатов и ключей, а также управлять ими.
  3. Следующий шаг – выбор места для инсталляции. Для удобства поместим программу в корень системного диска С:. Для этого просто удалим лишнее. Должно получиться

    C:OpenVPN

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

  4. После всех настроек устанавливаем программу в штатном режиме.

Настройка серверной части

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

  1. Идем в каталог «easy-rsa», который в нашем случае находится по адресу

    C:OpenVPNeasy-rsa

    Находим файл vars.bat.sample.

    Переименовываем его в vars.bat (удаляем слово «sample» вместе с точкой).

    Открываем этот файл в редакторе Notepad++. Это важно, так как именно этот блокнот позволяет правильно редактировать и сохранять коды, что помогает избежать ошибок при их выполнении.

  2. В первую очередь удаляем все комментарии, выделенные зеленым цветом – они нам будут только мешать. Получим следующее:
  3. Далее меняем путь к папке «easy-rsa» на тот, который мы указывали при установке. В данном случае просто удаляем переменную %ProgramFiles% и меняем ее на C:.
  4. Следующие четыре параметра оставляем без изменений.
  5. Остальные строки заполняем произвольно. Пример на скриншоте.
  6. Сохраняем файл.
  7. Требуется также отредактировать следующие файлы:
    • build-ca.bat
    • build-dh.bat
    • build-key.bat
    • build-key-pass.bat
    • build-key-pkcs12.bat
    • build-key-server.bat

    В них нужно поменять команду

    openssl

    на абсолютный путь к соответствующему ей файлу openssl.exe. Не забываем сохранять изменения.

  8. Теперь открываем папку «easy-rsa», зажимаем SHIFT и кликаем ПКМ по свободному месту (не по файлам). В контекстном меню выбираем пункт «Открыть окно команд».

    Запустится «Командная строка» с уже осуществленным переходом в целевой каталог.

  9. Вводим команду, указанную ниже, и нажимаем ENTER.

    vars.bat

  10. Далее запускаем еще один «батник».

    clean-all.bat

  11. Повторяем первую команду.
  12. Следующий шаг – создание необходимых файлов. Для этого используем команду

    build-ca.bat

    После выполнения система предложит подтвердить данные, которые мы вносили в файл vars.bat. Просто несколько раз нажимаем ENTER, пока не появится исходная строка.

  13. Создаем DH-ключ с помощью запуска файла

    build-dh.bat

  14. Готовим сертификат для серверной части. Здесь есть один важный момент. Ему нужно присвоить то имя, которое мы прописали в vars.bat в строке «KEY_NAME». В нашем примере это Lumpics. Команда выглядит следующим образом:

    build-key-server.bat Lumpics

    Здесь также необходимо подтвердить данные с помощью клавиши ENTER, а также два раза ввести букву «y» (yes), где потребуется (см. скриншот). Командную строку можно закрыть.

  15. В нашем каталоге «easy-rsa» появилась новая папка с названием «keys».
  16. Ее содержимое требуется скопировать и вставить в папку «ssl», которую необходимо создать в корневом каталоге программы.

    Вид папки после вставки скопированных файлов:

  17. Теперь идем в каталог

    C:OpenVPNconfig

    Создаем здесь текстовый документ (ПКМ – Создать – Текстовый документ), переименовываем его в server.ovpn и открываем в Notepad++. Вносим следующий код:

    port 443 proto udp dev tun dev-node "VPN Lumpics" dh C:\OpenVPN\ssl\dh2048.pem ca C:\OpenVPN\ssl\ca.crt cert C:\OpenVPN\ssl\Lumpics.crt key C:\OpenVPN\ssl\Lumpics.key server 172.16.10.0 255.255.255.0 max-clients 32 keepalive 10 120 client-to-client comp-lzo persist-key persist-tun cipher DES-CBC status C:\OpenVPN\log\status.log log C:\OpenVPN\log\openvpn.log verb 4 mute 20

    Обратите внимание, что названия сертификатов и ключей должны совпадать с расположенными в папке «ssl».

  18. Далее открываем «Панель управления» и переходим в «Центр управления сетями».
  19. Нажимаем на ссылку «Изменение параметров адаптера».
  20. Здесь нам нужно найти подключение, осуществляемое через «TAP-Windows Adapter V9». Сделать это можно, нажав по соединению ПКМ и перейдя к его свойствам.
  21. Переименовываем его в «VPN Lumpics» без кавычек. Это название должно совпадать с параметром «dev-node» в файле server.ovpn.
  22. Заключительный этап – запуск службы. Нажимаем сочетание клавиш Win+R, вводим строку, указанную ниже, и жмем ENTER.

    services.msc

  23. Находим сервис с названием «OpenVpnService», кликаем ПКМ и идем в его свойства.
  24. Тип запуска меняем на «Автоматически», запускаем службу и нажимаем «Применить».
  25. Если мы все сделали правильно, то возле адаптера должен пропасть красный крестик. Это значит, что подключение готово к работе.

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

Перед началом настройки клиента необходимо совершить несколько действий на серверной машине – сгенерировать ключи и сертификат для настройки подключения.

  1. Идем в каталог «easy-rsa», затем в папку «keys» и открываем файл index.txt.
  2. Открываем файл, удаляем все содержимое и сохраняем.
  3. Переходим обратно в «easy-rsa» и запускаем «Командную строку» (SHIFT+ПКМ – Открыть окно команд).
  4. Далее запускаем vars.bat, а затем создаем клиентский сертификат.

    build-key.bat vpn-client

    Это общий сертификат для всех машин в сети. Для повышения безопасности можно сгенерировать для каждого компьютера свои файлы, но назвать их по-другому (не «vpn-client», а «vpn-client1» и так далее). В этом случае необходимо будет повторить все действия, начиная с очистки index.txt.

  5. Заключительное действие – перенос файлов vpn-client.crt, vpn-client.key, ca.crt и dh2048.pem клиенту. Сделать это можно любым удобным способом, например, записать на флешку или передать по сети.

Работы, которые необходимо выполнить на клиентской машине:

  1. Устанавливаем OpenVPN обычным способом.
  2. Открываем каталог с установленной программой и переходим в папку «config». Сюда необходимо вставить наши файлы сертификатов и ключей.
  3. В этой же папке создаем текстовый файл и переименовываем его в config.ovpn.
  4. Открываем в редакторе и прописываем следующий код:

    client resolv-retry infinite nobind remote 192.168.0.15 443 proto udp dev tun comp-lzo ca ca.crt cert vpn-client.crt key vpn-client.key dh dh2048.pem float cipher DES-CBC keepalive 10 120 persist-key persist-tun verb 0

    В строке «remote» можно прописать внешний IP-адрес серверной машины – так мы получим доступ в интернет. Если оставить все как есть, то будет возможно только соединение с сервером по зашифрованному каналу.

  5. Запускаем OpenVPN GUI от имени администратора с помощью ярлыка на рабочем столе, затем в трее находим соответствующую иконку, жмем ПКМ и выбираем первый пункт с названием «Подключиться».

На этом настройка сервера и клиента OpenVPN завершена.

Заключение

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

Помогла ли вам эта статья?

OpenVPN-internet-gateway-000.pngВ наших прошлых материалах мы рассматривали применение OpenVPN исключительно для организации каналов связи между подразделениями организации. Но современный мир приносит новые вызовы, на которые следует реагировать. Один из них — общественные сети с низкой безопасностью, для работы в которых желательно иметь защищенный канал, препятствующий доступу третьих лиц к вашему трафику. Традиционно эта задача решается использованием VPN-сервисов и в данной статье мы расскажем, как организовать собственный сервис на базе OpenVPN.

Кроме общественных сетей в последние годы стала приобретать повышенную актуальность проблема ограничения доступа к некоторым ресурсам исходя из географического расположения клиента. Это могут быть как ограничения регионального характера, например, популярный поставщик видеоконтента Netflix, так и блокировки со стороны органов власти, как яркий пример которых «ковровые блокировки» РКН в его борьбе с Телеграм, когда под ограничения попало большое количество совершенно легальных ресурсов.

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

Что нужно для создания собственного VPN-сервиса? Прежде всего потребуется VPS (виртуальный выделенный сервер) расположенный в регионе, из которого возможен неограниченный доступ к требуемым ресурсам. В большинстве случаев можно выбирать Европу или Штаты, но во втором случае задержки будут выше. На наш взгляд, выбирать Штаты имеет смысл, если вам требуется доступ к американским ресурсам, тому же Netflix или покупкам у американских продавцов на Amazon и Ebay.

Для поиска недорогих VPS можно воспользоваться специальными сайтами, такими как Low End Box или бесплатными предложениями от облачных провайдеров. Так у Amazon и Microsoft можно бесплатно получить виртуальную машину на год, а Oracle предлагает две VPS бесплатно и навсегда.

В нашем примере мы будем использовать бесплатный VPS от Oracle с Ubuntu 18.04, но данная инструкция подойдет для любых deb-based систем и с некоторыми поправками для любого другого Linux-дистрибутива.

Настройка сервера OpenVPN

Прежде всего установим OpenVPN и Easy-RSA для управления ключами:

apt install openvpn easy-rsa

Скопируем файлы easy-rsa в конфигурационную директорию OpenVPN и создадим символическую ссылку на файл настроек OpenSSL:

cp -r /usr/share/easy-rsa /etc/openvpnln -s /etc/openvpn/easy-rsa/openssl-1.0.0.cnf  /etc/openvpn/easy-rsa/openssl.cnf

Затем откроем файл /etc/openvpn/easy-rsa/vars и изменим в нем следующие строки, указав собственные данные для сертификатов, например, так:

export KEY_COUNTRY="US"export KEY_PROVINCE="Wild West"export KEY_CITY="Uncle Tom's Cabins"export KEY_ORG="Uncle Tom"export KEY_EMAIL="tom@example.com"export KEY_OU="Cabin"

Сохраним файл и перейдем к созданию собственного центра сертификации (CA). Для этого перейдем в директорию нашего CA и загрузим переменные:

cd /etc/openvpn/easy-rsasource ./vars

Очистим любые имеющиеся данные и инициализируем центр сертификации:

./clean-all./build-ca

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

OpenVPN-internet-gateway-001-thumb-600xauto-10599.pngПосле чего в директории /etc/openvpn/easy-rsa/keys появится сертификат CA, содержащий публичный ключ, ca.crt, который должен присутствовать на каждом VPN-клиенте, и закрытый ключ центра сертификации ca.key, этот файл является секретным и не должен покидать пределы сервера.

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

./build-dh

Данная операция, в зависимости от производительности вашего VPS, может занять достаточно много времени.

И, наконец, создадим ключевую пару для сервера:

./build-key-server server

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

На этом формирование необходимых ключей и сертификатов закончено, перейдем к настройке OpenVPN, прежде всего создадим директорию для хранения ключей. Можно, конечно, использовать ключи прямо из директории easy-rsa, но лучше отделить CA от остальных служб.

mkdir /etc/openvpn/keys

Теперь скопируем туда необходимые серверу ключи и сертификаты:

cd /etc/openvpn/easy-rsa/keyscp ca.crt dh2048.pem server.crt server.key /etc/openvpn/keys

Распакуем и скопируем в директорию /etc/openvpn шаблон серверной конфигурации:

gzip -d /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gzcp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn

Откроем файл /etc/openvpn/server.conf и внесем в него необходимые изменения, в большинстве случаев вам придется раскомментировать нужны строки или убедиться в их наличии. Опции указаны в порядке их следования в файле:

port 1194proto udpdev tun

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

Затем зададим топологию сети:

topology subnet

Укажем пути к ключам и сертификатам, допускаются относительные пути, в этом случае корнем будет считаться директория /etc/openvpn:

ca keys/ca.crtcert keys/server.crtkey keys/server.keydh keys/dh2048.pem

Зададим диапазон OpenVPN-сети:

server 10.88.0.0 255.255.255.0

И укажем файл для хранения адресов клиентов, которые будут автоматически выдаваться сервером:

ifconfig-pool-persist /var/log/openvpn/ipp.txt

Автоматически сконфигурируем клиентов на доступ в интернет через OpenVPN-подключение:

push "redirect-gateway def1 bypass-dhcp"

И передадим им собственные DNS-сервера:

push "dhcp-option DNS 208.67.222.222"push "dhcp-option DNS 208.67.220.220"

Укажем параметры проверки активности:

keepalive 10 120

Сервер будет проверять клиента каждые 10 секунд и при отсутствии ответа через 120 секунд клиент будет считаться неактивным.

Обязательно закомментируйте строку:

#tls-auth ta.key 0

Для сценария доступа в интернет дополнительная TLS-аутентификация будет излишней.

В последних версиях OpenVPN включен механизм автоматического согласования протоколов шифрования между клиентом и сервером, по умолчанию будет выбран шифр AES-256-GCM, но так как вычислительные возможности VPS обычно ограничены и большого смысла шифровать канал доступа в интернет сложными шифрами нет, то отключим соглассование и укажем достаточно простой AES-шифр:

ncp-disablecipher AES-128-CBC

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

compress lz4-v2push "compress lz4-v2"

Данная опция будет автоматически отправлена на клиент, что облегчает его конфигурирование.

Если у вас есть старые версии клиентов (ниже 2.4), то можно использовать простое lzo-сжатие, для этого закомментируйте вышеприведенные строки и добавьте:

comp-lzo

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

В целях безопасности понизим права запущенного сервера:

user nobodygroup nogroup

После чего проконтролируем наличие опций, отвечающих за правильные права к некоторым ресурсам после их понижения:

persist-keypersist-tun

Укажем путь к файлам логов:

status /var/log/openvpn/openvpn-status.loglog  /var/log/openvpn/openvpn.log

И укажем его подробность:

verb 3

Во время отладки можно поднять уровень логов до 5-6.

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

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

Создадим файл правил:

touch /etc/nat 

и внесем в него следующие строки, обратите внимание на имя сетевого интерфейса вашего VPS, в нашем случае это ens3:

#!/bin/sh# Включаем форвардинг пакетовecho 1 > /proc/sys/net/ipv4/ip_forward# Сбрасываем настройки брандмауэраiptables -Fiptables -Xiptables -t nat -Fiptables -t nat -X# Разрешаем инициированные нами подключения извнеiptables -A INPUT -i ens3 -m state --state ESTABLISHED,RELATED -j ACCEPT# Разрешаем подключения по SSHiptables -A INPUT -i ens3 -p tcp --dport 22 -j ACCEPT# Разрешаем подключения к OpenVPNiptables -A INPUT -i ens3 -p udp --dport 1194 -j ACCEPT#Запрещаем входящие извнеiptables -A INPUT -i ens3 -j DROP# Разрешаем инициированные нами транзитные подключения извнеiptables -A FORWARD -i ens3 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT# Запрещаем транзитный трафик извнеiptables -A FORWARD -i ens3 -o tun0 -j DROP# Включаем маскарадинг для локальной сетиiptables -t nat -A POSTROUTING -o ens3 -s 10.88.0.0/24 -j MASQUERADE

Не забудем сделать файл исполняемым:

chmod +x /etc/nat

Данный файл требуется запускать после создания туннельного интерфейса tun0, поэтому откроем конфигурационный файл сервера OpenVPN /etc/openvpn/server.conf и в его конце добавим опцию:

up /etc/nat

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

ip a

OpenVPN-internet-gateway-002-thumb-600xauto-10602.pngТакже проверим применение правил брандмауэра:

iptables -L -vn

OpenVPN-internet-gateway-003-thumb-600xauto-10605.pngСледующий шаг касается только виртуальных машин в облаке Oracle Cloud, вам потребуется дополнительно разрешить входящий трафик на порт OpenVPN. Для этого перейдите в Сети » Виртуальные облачные сети » VirtualCloudNetwork-20191008-0144 » Сведения о списках безопасности, где вместо VirtualCloudNetwork-20191008-0144 будет имя вашей виртуальной сети. Затем добавьте новое правило для входящего трафика:

OpenVPN-internet-gateway-004-thumb-600xauto-10608.pngУкажите: Тип источника — CIDR, Исходный CIDR — 0.0.0.0/0, IP-протокол — UDP, Диапазон исходных портов — Все, Диапазон конечных портов — 1194.

Настройка клиента начинается на сервере с получения ключей и сертификатов клиента, для этого перейдем в директорию центра сертификации и загрузим переменные:

cd /etc/openvpn/easy-rsasource ./vars

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

./build-key client

где client -имя клиента, мы также рекомендуем давать им осмысленные имена.

Теперь скопируем файлы, которые необходимо передать на компьютер клиента в домашнюю директорию и изменим их владельца (по умолчанию владелец — root), чтобы вы смогли их скопировать с помощью любого FTP или SFTP клиента. В нашем случае имя пользователя ubuntu:

cd /etc/openvpn/easy-rsa/keyscp ca.crt client.crt client.key ~cd ~chown ubuntu:ubuntu ca.crt client.crt client.key

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

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

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client.ovpn

После чего скопируйте все эти файлы на клиент и установите на нем OpenVPN, в Windows системах советуем изменить путь установки OpenVPN на более короткий и без пробелов, скажем, C:OpenVPN.

Затем откроем файл client.ovpn, который в Windows системах должен быть расположен в C:OpenVPNconfig, а в Linux в /etc/openvpn, и внесем в него следующие изменения:

clientdev tunproto udp

Данные опции задают клиентский режим работы, тип туннеля и используемый протокол UDP.

Затем укажем адрес сервера:

remote 111.222.333.444 1194

Следующая опция предписывает клиенту постоянно разрешать имя OpenVPN-сервера, имеет смысл если мы указываем сервер по FQDN-имени, а не IP-адресу.

resolv-retry infinite

Для Linux систем обязательно укажите:

user nobodygroup nogroup

В Windows данные опции следует обязательно закомментировать.

Проконтролируем наличие следующих опций:

persist-keypersist-tun

Укажем пути к ключам и сертификатам, для Linux систем подразумеваем их нахождение в /etc/openvpn/keys:

ca keys/ca.crtcert  keys/client.crtkey  keys/client.key

Для Windows систем предположим их нахождение в C:OpenVPNkeys:

ca C:\OpenVPN\keys\ca.crtcert C:\OpenVPN\keys\client.crtkey C:\OpenVPN\keys\client.key

Также обязательно закомментируем опцию:

#tls-auth ta.key 1

Включим защиту от атак типа «человек посередине»:

remote-cert-tls server

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

cipher AES-128-CBC

Остальные опции можно оставить без изменений. Сохраним файл и запустим OpenVPN-клиент.

Убедиться, что вы выходите в интернет через VPN-канал можно при помощи любого сервиса, показывающего ваш IP-адрес, например, 2ip.ru:

OpenVPN-internet-gateway-005-thumb-600xauto-10611.pngОбращаем внимание на национальную принадлежность адреса, в данном случае мы выходим в интернет из Штатов.

Самое время провести замер скорости доступа, мы будем использовать для этого популярный сервис SpeedTest. Первый замер без VPN:

OpenVPN-internet-gateway-006-thumb-600xauto-10614.pngВторой через OpenVPN-канал:

OpenVPN-internet-gateway-007-thumb-600xauto-10617.pngСразу обращаем внимание на выросший пинг — это последствия размещения сервера в Штатах, а также скорость скачивания не выше 10 Мбит/с — ограничение бесплатного тарифа Oracle, хотя в большинстве случаев этого вполне достаточно для комфортного серфинга.

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

route-nopull

После чего клиент будет игнорировать передаваемые с сервера опции маршрутизации и DHCP-опции, такие как DNS-сервера и т.п.

Используемые источники:

  • https://fast-wolker.ru/kak-polzovatsya-openvpn.html
  • https://lumpics.ru/configuring-openvpn-server-on-windows/
  • https://interface31.ru/tech_it/2019/10/nastroyka-openvpn-servera-dlya-dostupa-v-internet.html

Рейтинг автора
5
Подборку подготовил
Андрей Ульянов
Наш эксперт
Написано статей
168
Ссылка на основную публикацию
Похожие публикации