Как сделать свой vpn сервер ubuntu

Обновлено: 02.07.2024

Вы хотите получить безопасный и безопасный доступ в Интернет, используя открытые и ненадежные сети, такие как точки доступа Wi-Fi ?. OpenVPN — это полнофункциональное решение VPN с открытым исходным кодом Secure Socket Layer (SSL), которое поддерживает широкий спектр конфигураций. Используя виртуальную частную сеть (VPN), вы можете безопасно проходить через ненадежные сети, как если бы вы находились в локальной сети.

В этом руководстве я покажу вам простой способ установить сервер OpenVPN в Ubuntu 20.04 / 18.04 / 16.04 и подготовить клиентов к его использованию. Я знаю, что настройка OpenVPN вручную может быть сложной задачей, особенно для новых пользователей, не имеющих опыта работы с Linux и VPN.

Установите и настройте сервер OpenVPN в Ubuntu 20.04 / 18.04 / 16.04

Этот метод будет хорошо работать как с дистрибутивами семейства Debian, так и с семейством Red Hat. Это руководство предназначено для Ubuntu 20.04 / 18.04 / 16.04, но процесс установки будет аналогичен для других дистрибутивов. Это сценарий, поэтому любой, кто имеет базовые знания Linux, может следовать ему.

Необходимые условия для установки

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

Установка и настройка сервера OpenVPN в Ubuntu 20.04 / 18.04 / 16.04

После обновления системы мы можем начать установку и настройку сервера OpenVPN в системе Ubuntu 20.04 / 18.04 / 16.04. Мы будем использовать скрипт openvpn-install, который позволит вам настроить собственный VPN-сервер не более чем за минуту, даже если вы раньше не использовали OpenVPN. Он был разработан так, чтобы быть максимально ненавязчивым и универсальным.

Выполните следующие шаги, чтобы установить и запустить сервер OpenVPN:

Шаг 1. Установите git

Установите git, выполнив команду:

Шаг 2. Клонируйте репозиторий openvpn-install

Теперь клонируйте openvpn-install репозиторий с помощью инструмента git, установленного на первом шаге:

Шаг 3. Перейдите на openvpn-install установщик OpenVPN и запустите его.

cd в каталог, openvpn-install созданный клонированием, и запустите сценарий установки.

Вы получите несколько запросов на изменение или подтверждение настроек по умолчанию для установки.

Главный файл конфигурации сервера OpenVPN — /etc/openvpn/server.conf вы можете настроить и настроить его по своему вкусу.

tun0 Виртуальный интерфейс будет создан в процессе установки. Это используется подсетью клиентов OpenVPN. Подтвердите его присутствие, используя:

Подсеть по умолчанию для этого интерфейса. 10.8.0.0/24. Серверу OpenVPN будет присвоен 10.8.0.1 IP-адрес:

Чтобы проверить это, используйте:

Шаг 4. Создайте профиль пользователя OpenVPN (файл .ovpn)

После выполнения шагов с 1 по 3 ваш VPN-сервер готов к использованию. Нам нужно создать профили VPN, которые будут использоваться пользователями. Для этого будет использоваться тот же скрипт, который мы использовали для установки. Он управляет созданием и отзывом профилей пользователей.

Из вывода вы можете подтвердить местонахождение моего профиля, /root/josphat.mutai.ovpn вам необходимо скопировать этот профиль пользователю. Также предоставляется местоположение связанного закрытого ключа /etc/openvpn/easy-rsa/pki/private/josphat.mutai.key.8dsSsOTWPe

Шаг 5: Подключитесь к серверу OpenVPN с клиента

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

Для пользователей Linux вы можете использовать NetworkManager и плагин openvpn для подключения к серверу OpenVPN..

Сегодня в этой статье мы обсудим установку и настройку собственного OpenVPN сервера на Linux-дистрибутив Ubuntu 20.04.

Что такое и для чего вам нужен VPN?

Виртуальная Частная Сеть (Virtual Private Network) - сеть, в которой участвуют 2 и более устройства, между которыми происходит зашифрованный обмен данными. Авторизация клиента происходит по секретному слову (паролю), или же по специальному сертификату.

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

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

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

Подключаемся и устанавливаем OpenVPN

В данной статье мы рассмотрим объединение в сеть нескольких устройств и доступ к файлам на центральном устройстве (сервере)

Для начала нам необходим ПК или выделенный сервер в облаке с установленной на него Ubuntu 20.04 ( руководство по установке вы можете найти в интернете )

В качестве сервера я буду использовать вируальную машину с установленной Ubutnu 20.04 Server, выпущенную в сеть, и имеющую статический белый IP адрес и открытый извне порт 4321

Подключаемся к серверу по SSH (рекомендую под Windows использовать клиент Putty ) с использование логина-пароля пользователя с правами sudo

OpenVPN. Подключение к серверу по SSH

P.S. Если вы используете на сервере desktop-редакцию Ubuntu (с графической оболочкой), то все описанные ниже действия вы так же можете проводить в приложении “Терминал”, в меню приложений Ubuntu

Перед нами появляется запрос проверки подлинности сертификата SSH - соглашаемся, так как мы знаем, что это действительно наш сервер

Предупреждение о не сохраненном ключе

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

Установка обновлений

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

Установка пакетов OpenVPN

По завершении установки мы можем приступить к конфигурированию будущего сервера.

OpenVPN. Готовим среду для создания сертификатов

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

Для удобства создадим папку в /opt и поместим копию инструментария в отдельную подпапку, например /opt/ovpn/

Теперь переходим в папку и приступаем к созданию сертификатов

Команда выше подготавливает среду для создания ключей и сертификатов

Установка пакетов OpenVPN

После подготовки мы можем начать с генерации CA-ключа (Ключ центра сертификации сервера).

Создание ключа центра сертификации

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

При запросе Common Name - вводим имя сервера (в примере он указан как OVPN-SERVER1 )

Создание ключа центра сертификации

OpenVPN. Создаем сертификат сервера

После подготовки CA мы можем подать на него запрос о выпуске сертификата для нашего сервера - с его помощью мы в последствии и сможем выпустить сертификат, с которым клиенты смогут убедиться в подлинности данного сервера

У вас будет запрошено Common Name - вводим имя вашего будущего сервера

OpenVPN сертификат сервера

Далее вам следует подтвердить запрос на выпуск сертификата командой

У вас будет запрошено подтверждение выпуска - вводим “ yes ” и нажимает ENTER, после чего вводим пароль от CA сертификата

OpenVPN. Подтверждение запроса на выпуск
OpenVPN. Подтверждение запроса на выпуск

Далее нам необходим TLS (transport layer security, или HMAC) ключ для безопасной авторизации клиентов. Генерируем его следующей командой

После создания TLS ключа также создаем ключ DH (Диффи Хеллмана)

Эта процедура займет от 1 до 5 минут, в зависимости от мощности ЦП вашего сервера

OpenVPN. Генерирование ключа DH

Сертификаты сервера успешно созданы, теперь для удобства копируем их в папку /opt/ovpn/keys

Создаем сертификаты пользователей

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

Где user1 - имя нашего будущего пользователя

При запросе вводим пароль от вашего созданного ранее CA сертификат а

Настраиваем параметры сервера и производим первый запуск

Перед тем как запускать сервер необходимо правильно прописать в конфигурации пути до созданных сертификатов, IP адреса пула VPN а так же другие параметры, о которых будет сказано ниже. Для начала мы создадим базовую конфигурацию сервера. Создаем ее с помощью редактора Nano по пути /etc/openvpn/server.conf

sudo nano /etc/openvpn/server.conf

Копируем в созданный файл следующие строки

OpenVPN. Создание конфигурации сервера

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

Проверяем правильность всех параметров, сохраняем и выходим из Nano комбинацией ctrl+x

Теперь создадим папку для хранения логов, куда будет писаться журнал состояния сервера

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

И проверить его статус


Как мы видим из статуса Active - сервер запущен и готов принимать подключения от клиентов

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

После чего набор клиентских сертификатов будет сохранен в папку /opt/ovpn/cli_keys, откуда позже мы их можем скачать

Загрузка и установка клиента OpenVPN на систему Windows

Заходим в WinSCP и подключаемся к нашему серверу

Подключение к серверу по SFTP

Переходим в каталог /opt/ovpn/cli_keys и копируем содержимое в любую удобную для вас папку на клиентскую машину

Загружаем клиентские сертификаты

Загружаем OpenVPN на клинта

Устанавливаем OpenVPN

По окончании установки OpenVPN переходим в папку

и копируем туда ранее скачанные сертификаты клиента из папки cli_keys

Копируем клиентские ключи

Копируем клиентские ключи

В том же каталоге создаем файл config.ovpn и открываем его с помощью текстового редактора (например “Блокнот” или "Notepad++")

В этот файл копируем приведенную ниже базовую конфигурацию клиента

где 12.221.98.11 - IP адрес сервера, доступный из вне (белый IP адрес), а 4321 - порт, указанный в конфигурации сервера

Сохраняем файл и запускаем OpenVPN от имени администратора

Запускаем клиент

В трее появится значок OpenVPN, щелкаем по нему правой кнопкой и выбираем “Подключиться”

Подключаемся к серверу

Если все прошло успешно, то вы увидите лог подключения и уведомление о присвоении адреса VPN

Успешное подключение к серверу

Поздравляем! Теперь вы можете пользоваться удаленными ресурсами на сервере с вашего клиентского ПК, к примеру, подключаться к серверу по SSH для удаленного управления - сервером будет являться первый адрес из пула VPN - в данном примере - 10.11.12.1




Для доступа к локальной сети сервера, в конфиг OpenVPN ( /etc/openvpn/server.conf ) достаточно добавить

Где 10.11.12.0 - подсеть нашего VPN, а 192.168.111.0 - подсеть локальной сети сервера

OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек.

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

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

Локальная сеть 1

Локальная сеть 2

Установка

И на сервере и на клиенте ставим один и тот же пакет.

Создание сервера

Создание ключей и сертификатов

Защита соединения в OpenVPN в данном случае строится на использовании сертификатов и ключей для сервера и для клиентов.

Переходим в созданную директорию, где и займёмся генерацией ключей и сертификатов

Редактируем файл переменных

Здесь можно заполнить например так:

копируем конфиг openssl

Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей

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

Создаем ключ сервера

FIXME

A challenge password []: Если вы решили ввести challenge password, то необходимо убедиться, что сохранили этот пароль в безопасном месте. Если вам понадобится когда-нибудь переустановить этот сертификат, то потребуется ввести этот пароль снова.

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

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

Создаем ключ Диффи-Хеллмана

Cоздаем ключ для tls-аутификации

Создание файла конфигурации сервера

Создадим директорию для клиентских конфигов

Можно запускать наш сервер OpenVPN

Смотрим список интерфейсов

Если среди прочих видим

значит VPN-сервер завелся. Если нет, то смотрим лог

Настройка маршрутизации на стороне сервера

Создаем файл в каталоге ccd с тем же именем, что и ключ для клиента, т.е. /etc/openvpn/ccd/client

Включаем ipv4_forwarding

Создание клиента

Создание ключей и сертификатов

Переходим в созданную директорию, где и замёмся генерацией ключей и сертификатов

Создаем ключ клиента

Если хотим защитить ключ паролем, то генерируем его другой командой

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

Теперь нужно не забыть скопировать ключи (ca.crt, client.crt, client.key, ta.key) на клиента OpenVPN в /etc/openvpn/keys/

Если планируется на клиенте импортировать файл настроек .ovpn вместе с сертификатами и ключами, например, для Android, важно в конфигурации клиента исключить строку tls-auth, вместо нее добавить key-direction 1. В противном случае будет ошибка вида tls error: incoming packet authentication failed from [af_inet].

Создание файла конфигурации клиента

/etc/openvpn/client.conf

ИЛИ единый файл конфигурации клиента client.ovpn с сертификатами и ключами для импорта

Можно запускать наш клиент OpenVPN

Настройка маршрутизации на стороне клиента

Машина с openvpn уже готова работать с сервером в чём можно убедится

Но для того, чтобы пользоваться туннелем в другой офис могли другие устройства в локальной сети нужно указать им, чтобы доступ в подсеть 192.168.1.0/24 осуществляется через 192.168.0.100. Или, что часто проще и быстрее прописать это правило маршрутизации на роутере, который является шлюзом для устройств в сети.

Включаем ipv4_forwarding

Также как в случае с сервером.

Настройка выхода в интернет с IP сервера

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

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

Если же вы хотите организовать доступ из VPN сети в интернет с IP адреса сервера, то вам нужно настроить на сервере NAT. Сделать это можно следующей командой (на сервере):

Здесь мы указали, что сеть 10.8.0.0/24 будет выходить наружу через интерфейс eth0.

Для того что бы настройки iptables сохранились после перезагрузки нужно их дополнительно сохранить:

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

К конфиге клиента client.conf нужно добавить строчку

Отзыв сертификата

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

Скрипт revoke-full создаст CRL-файл (certificate revocation list, список отозванных сертификатов) с именем crl.pem в подкаталоге keys. Файл должен быть скопирован в каталог, в котором сервер OpenVPN может получить к нему доступ. Ранее в конфиге мы прописали, что этот файл должен находится в /etc/openvpn, туда и копируем.

Отключение автозапуска OpenVPN

Это бывает полезно, например для клиента с ключем защищенным паролем, т.к. всё равно при старте системы такое соединение не поднимется в виду отсутствия пароля для ключа. Да и в том случае, если вы сделали ключ с паролем, значит, скорее всего, вам не нужно постоянное соединение.

Тест производительности OpenVPN

Сеть гигабит (без шифрования последовательная скорость передачи 120 МБ/с). Скорость буду указывать в мегабайтах, НЕ в мегабитах!

Скорость всегда упиралась в ВМ, где процессор бы полностью занят. ЦП клиента был загружен не более 10% - 40% на 1/6 ядер.

Сжатие comp-lzo сжимает хорошо сжимаемые файлы в 2 раза хуже, чем zlib, зато почти не влияет не загрузку ЦП (в десятки раз быстрее). Проверял на копировании установленного в Windows Libreoffice 5. Сжатие в zip с помощью архиватора 7z дало результат около 35%, сжатие comp-lzo по статистике сетевого интерфейса - около 70%.

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

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

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

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

В тестовой среде в качестве сервера используется виртуальный сервер под управлением операционной системы Ubuntu Server 18.04. Брандмауэр на сервере отключен, так как его настройка не рассматривается в данной статье. Настройка клиентской части описана на примере Windows 10.

Подготовительные операции

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

Для включения форвардинга пакетов откроем файл “/etc/sysctl.conf” и изменим значение параметра “net.ipv4.ip_forward” на 1.

включение форвардинга пакетов для настройки VPN сервера

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

sudo sysctl -p /etc/sysctl.conf

Трансляция адресов настраивается средствами iptables. Предварительно уточним имя внешнего сетевого интерфейса, выполнив команду “ip link show”, оно понадобится на следующем шаге. В нашем случае имя интерфейса “ens3”.

ip link show

Включаем трансляцию адресов на внешнем интерфейсе для всех узлов локальной сети.

sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

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

По умолчанию все созданные правила iptables сбрасываются после перезагрузки сервера, для того, чтобы этого избежать, воспользуемся утилитой “iptables-persistent” Устанавливаем пакет.

sudo apt install iptables-persistent

В процессе установки откроется окно конфигурации, в котором система предложит сохранить текущие правила iptables. Так как правила уже настроены, соглашаемся и дважды нажимаем “Yes”. Теперь, после перезагрузки сервера правила будут восстанавливаться автоматически.

Включаем трансляцию адресов на внешнем интерфейсе для всех узлов локальной сети

1. PPTP сервер

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

sudo apt install pptpd

После завершения установки открываем в любом текстовом редакторе файл “/etc/pptpd.conf” и приводим его к следующему виду.

Далее редактируем файл “/etc/ppp/pptpd-options”, большинство параметров уже установлены по умолчанию.

proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd

На следующем этапе необходимо создать учетную запись для подключения клиентов. Предположим, мы хотим добавить пользователя “vpnuser”, с паролем “1” и разрешить для него динамическую адресацию. Открываем файл “/etc/ppp/chap-secrets” и добавляем в конец строку с параметрами пользователя.

vpnuser pptpd 1 *

Значение “pptpd” это имя сервиса, которое мы указали в файле “pptpd-options”. Вместо символа “*” для каждого клиента можно указать фиксированный ip-адрес. В результате содержимое файла “chap-secrets” будет таким.

Настройка VPN сервера - создание учетной записи для подключения клиентов

Для применения настроек перезагружаем службу pptpd и добавляем её в автозагрузку.

sudo systemctl restart pptpd
sudo systemctl enable pptpd

Настройка сервера завершена.

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

Открываем “Пуск” - “Параметры” - “Сеть и интернет” - “VPN” и нажимаем “Добавить VPN-подключение”

Настройка клиента для VPN подключения

В открывшемся окне вводим параметры подключения и нажимаем “Сохранить”

  • Поставщик услуг VPN: “Windows (встроенные)”
  • Имя подключения: “vpn_connect” (можно ввести любое)
  • Имя или адрес сервера: (указываем внешний ip адрес сервера)
  • Тип VPN: “Автоматически”
  • Тип данных для входа: “Имя пользователя и пароль”
  • Имя пользователя: vpnuser (имя, которое указано в файле “chap-secrets” на сервере)
  • Пароль: 1 (так же из файла “chap-secrets”)

После сохранения параметров, в окне VPN появится новое подключение. Щелкаем по нему левой кнопкой мыши и нажимаем “Подключиться”. При успешном соединении с сервером, на значке подключения появится надпись “Подключено”.

Добавляем VPN подключение

В свойствах подключения отображаются внутренние адреса клиента и сервера. В поле “Адрес назначения” указан внешний адрес сервера.

В свойствах подключения отображаются внутренние адреса клиента и сервера. В поле “Адрес назначения” указан внешний адрес сервера.

При установленном соединении внутренний ip-адрес сервера, в нашем случае 172.16.0.1, становится шлюзом по умолчанию для всех исходящих пакетов.

Проверка внешнего адреса компьютера при настройке VPN-соединения

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

2. OpenVPN сервер

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

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

Устанавливаем необходимые пакеты. Пакет “Easy-RSA” нужен для управления ключами шифрования.

apt install openvpn easy-rsa

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

ln -s /usr/share/easy-rsa/openssl-1.0.0.cnf /usr/share/easy-rsa/openssl.cnf

Переходим в рабочий каталог утилиты easy-rsa, загружаем переменные и очищаем старые конфигурации.

cd /usr/share/easy-rsa/
source ./vars
./clean-all

Приступаем к созданию ключей. Генерируем ключ Диффи-Хеллмана, процесс может занять некоторое время.

Генерируем ключи

Генерируем центр сертификации.

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

Генерируем ключи для сервера, в качестве аргумента указываем произвольное название, в нашем случае это “vpn-server”

Как и на предыдущем шаге отвечаем на вопросы или оставляем значения по умолчанию. На завершающем этапе дважды нажимаем “y”.

Генерация ключей

Генерация ключей сервера завершена, все файлы находятся в папке “/usr/share/easy-rsa/keys”.

все файлы находятся в папке “/usr/share/easy-rsa/keys”

Создадим в рабочем каталоге OpenVPN папку “keys” для хранения ключей и скопируем туда необходимые файлы.

mkdir /etc/openvpn/keys
cp ca.crt dh2048.pem vpn-server.key vpn-server.crt /etc/openvpn/keys/

Копируем и распаковываем в каталог “/etc/openvpn/” шаблон конфигурационного файла.

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

Открываем на редактирование файл “/etc/openvpn/server.conf” и убеждаемся в наличии следующих строк, при необходимости корректируем.

Остальные параметры оставляем без изменений.
Перезапускаем службу OpenVPN для применения конфигурации.

systemctl restart openvpn

Настройка сервера завершена!

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

Скачиваем клиент OpenVPN с официального сайта проекта

и скачиваем инсталлятор для своей версии операционной системы. В нашем случае это Windows 10.

скачиваем инсталлятор для своей версии операционной системы

Устанавливаем приложение, оставляя все параметры по умолчанию.

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

  • публичный и приватный ключи;
  • копия ключа центра сертификации;
  • шаблон конфигурационного файла.

Подключаемся к серверу, повышаем права,переходим в рабочий каталог утилиты “easy-rsa” и загружаем переменные.

sudo -s
cd /usr/share/easy-rsa/
source ./vars

Генерируем ключевую пару для клиента, в качестве аргумента указываем произвольное имя, в нашем случае “client1”.

Отвечая на вопросы вводим свои данные или просто нажимаем “ENTER”, оставляя значения по умолчанию. После этого дважды нажимаем “y”

Установка и настройка OpenVPN

Сгенерированные ключи клиента также находятся в папке “/usr/share/easy-rsa/keys/” Для удобства создадим в домашнем каталоге папку “client1” и скопируем в нее все файлы предназначенные для переноса на клиентский компьютер.

cd /usr/share/easy-rsa/keys/
mkdir ~/client1
cp client1.crt client1.key ca.crt ~/client1/

Скопируем в эту же папку шаблон клиентского конфигурационного файла. При копировании меняем расширение файла на “ovpn”.

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

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

chown -R mihail:mihail ~/client1

Переходим на клиентский компьютер и копируем с сервера содержимое папки “~/client1/” любым доступным способом, например с помощью утилиты “PSCP”, которая входит в состав клиента Putty.

PSCP -r [email protected][IP_сервера]:/home/mihail/client1 c:\client1

Файлы ключей “ca.crt”, “client1.crt”, “client1.key” можно хранить в любом месте, в нашем случае это папка “c:\Program Files\OpenVPN\keys”, а конфигурационный файл “client.ovpn” переносим в директорию “c:\Program Files\OpenVPN\config”.

Приступаем к конфигурированию клиента. Открываем в блокноте файл “c:\Program Files\OpenVPN\config\client.ovpn” и отредактируем следующие строки

cipher AES-256-CBC
comp-lzo
auth-nocache
verb 3

Остальные параметры оставляем без изменений.

Сохраняем файл и запускаем клиентское приложение “OpenVPN GUI”.

VPN setup finished


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

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

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

Разрабатываются новые технологии для VPN, появляются новые механизмы обхода блокировок типа SmartDNS. Как раз такой услугой воспользовался недавно. Работает хорошо, удобно было добавить DNS в роутер, но адреса обхода очень ограничены. В моем случае поддержка пошла на встречу и вместе мы смогли добавить сервис Кинопоиск от Яндекса. Правда, почти сразу я понял, что хочется большего, хочется самому управлять трафиком. Плюс лично мне не интересны VPN, направляющие весь трафик. Они снижают скорость, не так удобны для просмотра местных сайтов. К тому же мне надо этот трафик пропустить через роутер (в первую очередь для полной работы Яндекс Станции). Сейчас нахожусь в Молдове, здесь сайты не блокируют, но некоторые российские сервисы недоступны.

Какой VPS сервер выбрать и как подключиться к серверу

Само создание OpenVPN сервера займет меньше 5 минут, но сначала мы рассмотрим аренду сервера и подключение к нему.

Аренда сервера VPS

В первую очередь нужно арендовать VPS сервер. VPS сервер – виртуальный выделенный сервер, который соответствует физическому серверу, т.е пользователь получает root-доступ к операционной системе, IP-адресам и т.д.
Тут зависит от ваших целей, стоимости сервера, и того какие именно услуги этот сервер может поддерживать (например, не все хостинг-провайдеры разрешают использование VPN-серверов, поэтому перед заказом услуги предварительно у тех. поддержки узнайте разрешают ли они использование VPN сервера). Если вы хотите получить доступ к российским сайтам, то вы, конечно, можете выбрать европейские сервера, но на мой взгляд, стоит выбрать российские сервера, для получения полного доступа к сервисам. В таком случае (повторюсь, для доступа к российским серверам) рекомендую обратить внимание на следующую статью, в которой были протестированы некоторые российские хостинг-провайдеры: Обзор дешевых VPS-серверов. Я же воспользовался услугами хостинг-провайдера VDS.SH. С учетом того, что не все провайдеры разрешают использование VPS в качестве VPN сервера, перечислю тех, кто точно разрешает:

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

Для тех, кому нужен доступ к заблокированным в РФ сайтам, нужно брать сервер за пределами России. Это может быть DigitalOcean или linode – из недорогих хостингов.

Если вы собираетесь использовать сервер только в качестве VPN сервера, то вам не нужны дополнительные панели управления, типа ISPmanager. Не заказывайте их.

Подключение к серверу VPS

Выбрав сервер, на электронную почту вы получили необходимые данные для доступа к нему.

Подключаться к серверу будем с помощью ssh клиента PuTTY, а скачивать нужные файлы (клиентские ovpn файлы) с помощью ftp-клиента FileZilla.

Запускаем приложение PuTTY, в графе Host Name вводим ip адрес нашего сервера (эти данные мы получили сразу после регистрации сервера), порт 22.


Далее нажимаем на Open и в появившемся окне нажмите на ДА. Откроется новое окно, в котором нужно ввести имя пользователя и пароль, которые мы получили на электронный адрес. Процесс ввода пароля не будет отображаться, но введя его все равно нажмите на Enter. Теперь мы подключились к нашему серверу.


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

Подключение с помощью FileZilla. Открываем FileZilla: Файл > Менеджер сайтов > Новый сайт > Протокол указываем SFTP, Хост – IP адрес сервера, а также Имя пользователя и пароль, полученные по почте.


Как создать OpenVPN сервер за 5 минут

На самом деле на установку OpenVPN сервера уйдет меньше 5 минут. Установка сервера будет рассматриваться на VPS с операционной системой Ubuntu, для Debian команды идентичны, но скорее всего без sudo (как правило он не предустановлен).

Устанавливаем утилиты, которые нам пригодятся:

Для операционных систем, версии которых не ниже Ubuntu 18.04, Debian 9, CentOS 7. Допускаются данные версии и выше. Скрипт автоматической установки OpenVPN:

Во время установки будет задано несколько вопросов с уже готовым по умолчанию ответом. Можно соглашаться, можно отредактировать и выбрать свой вариант. Протокол соединения, рекомендую, использовать udp. В качестве DNS использую Яндекс DNS (77.88.8.8). Последним вопросом будет предложено задать имя клиентского файла ovpn, который затем будет расположен в директории Root.

Повторный запуск скрипта позволяет:

  1. Добавить клиентский файл ovpn для подключения
  2. Анулировать клиентский файл ovpn, выданный ранее.
  3. Удалить сервер OpenVPN
  4. Выйти


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

Этот скрипт подойдет для операционных систем не выше, но в том числе, Ubuntu 16.04, Debian 8, Centos 6.

Являясь обладателем роутера ASUS RT-AC59U, который поддерживает клиентские VPN, меня интересовало подключение через роутер. Опытным путем выяснил, что OpenVPN клиент роутера поддерживает подключение, созданное на сервере версии только Ubuntu 16.04.

После установки скрипта VPN уже готов и запущен. Можно с помощью FileZilla скачать файл ovpn и импортировать в нужное устройство. Как импортировать ovpn можно посмотреть на примере статьи: Настройка OpenVPN. Подключение к бесплатным серверам VPN Gate.

По умолчанию через VPN будет проходить весь трафик.

Настройка OpenVPN для фильтрации только заблокированных сайтов

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

Подключившись по PuTTY к серверу, открываем ранее установленный файловый менеджер mc (запускается командой: mc). Переходим к директории: /etc/openvpn/server/


Нас интересует файл server.conf , нажимаем на него и жмём F4 для редактирования, затем номер 1 для выбора редактора nano. Редактирование файла можно сразу запустить командой:

Добавим строчку duplicate-cn . Она позволит использовать один сертификат на нескольких устройствах.

Затем нам нужно добавить ip адреса, которые будут идти через VPN. Узнать IP адрес сайта можно с помощью Командной строки, командой:

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

Адреса без букв, будут являться адресами IPv4, которые нам нужны. Добавлять адреса в конце файла server.conf нужно следующим образом:

где 5.45.192.0 добавленный нами ip адрес.

Добавив адреса, нажимаем ctrl+O, затем ctrl+ X, для сохранения внесенных изменений и закрытия редактора.

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


Скриншот моего файла server.conf.

После внесения изменений в server.conf нужно перезапустить VPN сервер. Для Ubuntu 18.04, Debian 9, Centos 7 и выше:

Для Ubuntu 16.04, Debian 8, Centos 6 и ниже:

Существует еще один скрипт для автоматической установки OpenVPN сервера:

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

Читайте также: