Привет хабр! В этой статье хочу рассказать, как развернуть свой собственный vpn сервис.
Тут будет только базовая настройка, рассчитанная только на личное пользование, но, ее хватит чтобы спокойно полистать youtube и прочие ресурсы, которых вам возможно не хватает.
Стартовая точка
Отправной точкой будет аренда виртуального сервиса. В рамках данной статьи я не буду рассказывать о том, как и где его арендовать, а просто оставлю приглянувшуюся статью.
Для написания статьи я арендовал VPS со следующими характеристиками:
OS: Ubuntu 24.04 LTS
HDD: 10 Гб (место на диске)
RAM: 0.5 Гб (оперативная память)
CPU: 1x2.2 ГГц (процессор)
Предположим, что у вас уже имеется арендованный сервер и пойдем дальше.
Обычно в личном кабинете после создания новой машины вам будет доступна следующая информация
IP: XXX.XXX.XXX.XXX (IPv4 адрес вашего сервера)
LOGIN: Имя пользователя, созданного на сервере (чаще всего это будет root)
PASSWORD: Пароль для созданного пользователя
Имея вышеуказанную информацию, вы можете зайти на свой сервер по SSH
.
Для тех, у кого Windows
С помощью CMD (информация с сайта)
Откройте «Параметры» — «Приложения».
Выберите подпункт «Дополнительные компоненты».
Найдите в списке «Клиент OpenSSH» и нажмите «Установить». Если этой кнопки нет, значит, служба уже включена.
После установки перезагрузите компьютер.
После включения нажмите Win+R, введите в поле «cmd» и Enter
Далее вы
Способ подключения через PowerShell можно посмотреть тут
Для того, чтобы это сделать, вам нужно открыть консоль и в ней выполнить следующую команды.
ssh <LOGIN>@<IP>
# В первый раз вы получите следующее сообщение
# ...
# Are you sure you want to continue connecting (yes/no/[fingerprint])?
# Пишем в консоли yes
yes
# Далее вам предложат ввести пароль
# <LOGIN>@<IP>'s password:
# Вводим пароль
<PASSWORD>
Теперь мы зашли на сервер.
Первоначальная настройка сервера
Важно: пока не закончится этот блок или не будет сказано обратного, не выходите из консоли
Примечание: Для вставки скопированного текста обычно можно либо нажать на колесико мышки внутри окна консоли, либо использовать комбинацию клавиш CTRL + SHIFT + V
.
Для начала добавим пользователя (вы можете выбрать любое имя, я далее буду использовать имя vpn
).
После ввода нижеуказанной команды, сначала вам предложат ввести пароль, а затем информацию о пользователе, вторую часть можно пропустить, нажимая ENTER
.
adduser vpn
Далее нам необходимо наделить нового пользователя административными правами, добавив в группу sudo
.
usermod -aG sudo vpn
Теперь давайте обновим установленные пакеты и установим фаервол.
sudo apt update && sudo apt install ufw -y
И разрешим подключение по ssh
.
sudo ufw allow OpenSSH
# Вывод должен быть следующим
# Available applications:
# OpenSSH
Если вы получили аналогичное сообщение, то можно спокойно включать фаервол.
sudo ufw enable
# Проверить статус можно следующей командой sudo ufw status
Далее вам нужно открыть новую консоль и попробовать подключиться от имени созданного пользователя.
ssh vpn@<IP>
Когда вы зайдете на сервер, необходимо также проверить, что вам доступно выполнение команд от имени администратора. Для этого попробуем переключиться на пользователя root.
sudo su
# Тут вас попросят ввести пароль
Если все получилось, то имя пользователя в консоли изменится на root, чтобы вернуться обратно, нажмите CTRL + D
и убедитесь, что вы снова под своим пользователем. Теперь можно смело закрывать первую консоль.
Рекомендую вам настроить SSH ключи вместо аутентификации по паролю. В контексте данной статьи этот пункт мы не будем рассматривать, но я оставлю вам инструкцию о том, как это сделать
DigitalOcean (На английском и может не работать без VPN)
timeweb (На русском, есть раздел для Windows)
Установка OpenVPN
Источник с альтернативными вариантами установки
Скачиваем установочный скрипт
Старайтесь всегда проверять содержание bash скриптов из неизвестных вам источников, да и вообще любых источников
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
Разрешаем выполнение скаченного файла
chmod +x openvpn-install.sh
Начинаем установку (возможно вам потребуется добавить sudo
перед следующей командой)
./openvpn-install.sh
# Вам будет предложен ряд вопросов, вы можете выбрать то, что вам нужно, если
# вы знаете, что делать, в противном случае можете оставить по умолчанию
# просто прокликав Enter
# После установки вам будет предложенно ввести имя первого клиента, я укажу vpn
# На остальные вопросы можно также прокликать Enter
После окончания выполнения скрипта, в вашей директории создастся файл с конфигурацией. В моем случае он будет называться vpn.ovpn
так как именем клиента я указал именно vpn.
Примечание: чтобы посмотреть, какие файлы лежат в текущей директории, используйте одну из следующих команд ls
, ls -l
, ll
Примечание: для того, чтобы создать нового клиента, вам необходимо повторно выполнить скрипт openvpn-install.sh
. Вам предложат, 4 варианта, введите цифру, под которой указано Add a new user
и нажмите ENTER
, укажите новое имя и выберите интересующие вас опции
Скачивание файла конфигурации
Далее, нам необходимо скачать файл с сервера
Вот статья о том, как это сделать с примером в том числе на windows
Открываем новое окно консоли на вашем устройстве и вводим следующую команду
# Копируем файл vpn.ovpn из домашней директории пользователя vpn на сервере
# в домашнюю директорию на вашем устройстве
scp vpn@<IP>:~/vpn.ovpn ~/
Возможные проблемы:
Permission denied (publickey) - скорее всего возникнет, если вы настроили ключ ssh и его имя отлично от id_rsa, в данном случае вам необходимо использовать флаг -i после команд ssh и scp указав путь до вашего ключа.
ssh -i /path/to/key <LOGIN>@<IP>
Также вашему пользователю может не хватить прав для скачивания файла, тогда на сервере вы можете изменить права на файл или директорию (если не хотите париться, то можете написать
sudo chmod 777 vpn.ovpn
, что не рекомендуется) но лучше понять, что вы делаетеВы можете находиться не в домашней директории, чтобы понять откуда скачивать файл, можно прописать команду
pwd
она выведет текущую директорию и тогда ваша команда по скачиванию файла будет выглядеть следующим образомscp <LOGIN>@<IP>:/path/from/pwd/vpn.ovpn ~/
Подключение VPN
Для большинства устройств есть официальное приложение OpenVPN для подключения клиента, поэтому тут расскажу, что нужно делать на ubuntu
Я работаю на Kubuntu 25.04. Поэтому пример подключения будет на нем.
Для того, чтобы у вас заработало подключение вам необходимо установить несколько модулей в вашей системе
sudo apt-get install openvpn network-manager-openvpn
# также вам может понадобиться установка network-manager-openvpn-gnome
# и перезагрузка
Далее нам нужно открыть настройки wifi и сети и добавить новую сеть

Открывшееся окно пролистываем в самый низ и выбираем пункт "Импортировать VPN-соединение", ищем наш файл и нажимаем открыть. Новая конфигурация openvpn должна добавиться в список доступных.
Подключаем VPN и можем проверять, что наш IP изменился.
Комментарии (33)
grosm4n
23.05.2025 17:50Под убунту православную есть отличная простая тулза - pivnp. Да, она под малинку, но на убунту работает великолепно. Достаточно только поставить через curl -L install.pivpn.io | bash, запустится интерактивный установщик который и предложит создать пользователя, и днс выбрать и другие параметры, в полуавтоматическом режиме. Главное в начале выбрать OpenVPN, но на выбор дается еще Wireguard. 5 минут и сервер поднят, а конфиги добавляются одним pivpn add. Все интуитивно просто и понятно
php7
23.05.2025 17:50Ах-ах, в статье тоже скачивание установщика непонятно откуда.
HomeMan
23.05.2025 17:50Ну в скрипте особого криминала нет.
Easyrsa прибит гвоздями на версию по моему 3.1.2
Unbound почему то хотят, ажно через apt install -y
Ну и IPv6 тоже гвоздями прибит.
На любителя вообще то.
Black_Shadow
23.05.2025 17:50Ну это сейчас нет. А что там будет через 5 минут? Каждый раз проверять? Нет уж, лучше нахер такие статьи с такими советами. В чём проблема поставить через apt install?
HomeMan
23.05.2025 17:50Я не про apt install, я про флаг -y.
Т.е. поставит хочешь ли ты или нет.
Фу такое делать.
И по моему скромному мнению, скрипт должен иметь опцию uninstall которая удалит все, что установилось, включая правила файрвола и прочее.
Но это там на зачаточном уровне.
VenbergV
23.05.2025 17:50Если мы ставим новый OpenVPN сервер на современную Ubuntu 24.04, то:
1. Зачем ufw в новом сервере в 2025 году? Debian12, Ubuntu 22.04-24.04 используют nftables.
2. Зачем RSA ключи для новых систем в 2025 году? Они скорее понадобятся для старых систем и старого оборудования. Для остального есть ed25519. . Из простогоssh-keygen -o -a 100 -t ed25519 -C "Machine name"
.
3. И неплохо бы внимательно разобраться в работе чужого скрипта с помощью которого вы решили развернуть OpenVPN. Например там используются командыiptables
(deprecated во многих дистрибутивах уже пару лет), а неufw
, который вы предлагаете использовать. И там нет выбора без алгоритмов сжатия. С которыми не будет дружить напримерMikrotik
.
4. В openvpn пару лет уже можно использовать fingerprint вместо центра сертификации. Вот есть Пример на эту тему.Extralait Автор
23.05.2025 17:50Огромное спасибо, что рассказали об этом. На самом деле трудно найти актуальную информацию и разобраться в ней, если предмет не является одним из основных предметов деятельности. Почитаю обо всем, что вы написали!
Не могу апнуть коммент из-за кармы, но хотелось бы почаще видеть конструктивные замечания
SuAlUr
23.05.2025 17:50Зачем
ufw
в новом сервере в 2025 году?
Debian12
,
Ubuntu 22.04-24.04
используют
nftables
.
UFW использует nftables.
А по поводу поста в целом – выбор openvpn в 2025 очень странный выбор.
Extralait Автор
23.05.2025 17:50Чем так плох OpenVPN для личного пользования? У меня например дома стоит ТВ на YaOS причем от tuvio я из VPN на него только его и могу поставить. А чтобы подружить ту же амнезию с роутером, мне во-первых нужен другой роутер, а во-вторых дополнительно с ним возиться. Я понимаю, что технология могла остаться в прошлом, но все мои, опять же подчеркну, личные потребности она более чем закрывает
MountainGoat
23.05.2025 17:50Много где его тупо отфильтровывает провайдер. Или в любой момент начнёт. А больше ничем.
Extralait Автор
23.05.2025 17:50Понял, не знал. Я думал, написать и о том как настроить ту же амнезию, но что-то уже сомневаюсь, в том, что оно того стоит
VenbergV
23.05.2025 17:50UFW использует nftables.
Вот только приведенный скрипт использует iptables.
выбор openvpn в 2025 очень странный выбор
Вполне подходит для связи множества филиалов компании. И для подключения удаленных пользователей в периметр компании.
Можно работать по tcp и udp.
Можно выбирать много разных алгоритмов шифрования. Что позволяет использовать даже очень древнее оборудование.
Можно работать со "своеобразным" MTU у конечных ISP.
При работе с сервером сертификации можно производить отзыв сертификатов.
При простом сценарии можно работать с отпечатками, без сервера сертификации.
Новые версии OpenVPN имеют довольно приличную скорость и, как не странно, в версии 2.6.0 появилась возможность совместимости для старых версий. Сам ее использую для древних телефонов с OpenVPN 2.3.0
Можно передавать параметры маршрутизации с сервера на клиенты.
Heggi
23.05.2025 17:50В openvpn пару лет уже можно использовать fingerprint вместо центра сертификации
Если использовали/сталкивались, можете пояснить по использованию?
Я правильно понимаю, что на стороне сервера нужно прописывать каждый fingerprint клиентского сертификата и после этого сервер нужно рестартануть?
Если я меняю серверный сертификат (например, после истечения срока действия), придется редактировать все клиентские конфиги разом? (А если их сотни?)Если всё так, то использование fingerprint подходит только для небольших инсталляций, на пару-тройку клиентов.
VenbergV
23.05.2025 17:50Так это и есть упрощенная схема. Подобие как у WireGuard.
Если вам нужно по взрослому, на сотни клиентов, то делайте как и ранее через отдельный CA.
NekoYos
23.05.2025 17:50Я редко захожу на хабр, и с каждым посещением убеждаюсь в том что это уже личный блог смузи-сисадминов, а не серезный ит ресурс. Меня убила линка на кастомный скрипт который сам за тебя установит openvpn. Еще менее но тоже что не понравилось - использование bash всместо универсального sh, который точно есть в docker apline образах а не вот эти ваши vps.
Extralait Автор
23.05.2025 17:50Не уверен, что статьи с тегом "простой" и "туториал", как описано в рекомендациях "для неподготовленного читателя и широкую аудиторию" должен удовлетворять вашим требованиям в статье на 4 минуты. Я просто хотел поделиться решением, которое без лишней мароки прекрасно работает и я сам им пользуюсь более года. В целом, в этой предметной области я вряд ли являюсь хотябы среднячком, поэтому какого-то действительно образцового подхода, к моему великому сожалению, я продемонстрировать не могу. Я всегда рад любым замечаниям и предложениям по улучшению материала, был бы рад, если бы вы показали как что и где лучше сделать. Мне казалось что сообщества нужны чтобы помогать друг другу развивать компетенции, надеюсь, я не один такой. Если вы хотите почитать более квалифицированные статьи, буду рад, если вы откроете мои с пометкой "сложно" но, как я понимаю, моя предметная области не сильно соприкасается с вашей.
Kimimi
23.05.2025 17:50Я на самом деле не знаю кому эта статья пригодится. Те, кто зайдет настолько далеко до такой установки, сами разберутся и им ещё и интересно будет, да и гайдов полно. А тем кому действительно побыстрее и попроще надо, нужно ссылку на амнезию скинуть и инструкцию как и где сервер купить максимально выгодно.
Extralait Автор
23.05.2025 17:50Хммм, разве это выглядит так запарно? Я потратил минут 15-20 чтобы настроить чистый сервер для примера из статьи и накидать черновик. Хотя, наверное, если делать это в первый раз, все может быть не так гладко, как я это вижу сейчас. Уже не помню, если честно, когда настраивал что-то на сервере впервые
NekoYos
23.05.2025 17:50А скольно Вы минут потратили на ответы в коментариях? Наверно достаточно чтоб черновик поевратить во чтото интересное :)
Extralait Автор
23.05.2025 17:50А про амнезию, я не согласен, ее если честно, прям геморойнее было ставить и она у меня не работала корректно с клиента для iOS и Ubuntu, хотя с windows и android проблем не было. Собственно поэтому дополнительно поднял и OpenVPN
KyJIep-79
23.05.2025 17:50Вы родились уже после того, как РКН несколько раз блокировал vpn протоколы, в т.ч. wireguard и openvpn, по всей России на пару-тройку суток? У многих операторов во многих регионах эти блокировки продолжаются. Этих статей тысячи, зачем плодить новые? Это было бы актуально лет 5 назад.
AVX
23.05.2025 17:50Ставил себе openvpn на арендованном сервере. В статье меня смущает что используется какой-то сторонний скрипт вместо штатного apt install, где-то предлагаются ставить права 777, что вообще небезопасно. При этом зачем-то упомянута настройка фаервола, но как-то очень коротко, а самое важное для безопасности не объяснили - что надо сделать подключение по ssh только по ключу, и желательно запретить логин root по ssh (хотя я хожу под рутом, но по ключу).
Про nftables уже написали. Кстати, если ОС на арендованном сервере готовая предустановленная (не сами ставили со своего iso), то стоит подробнее изучить, что там где накручено. Мне попадалось, что стояли уже некоторые стартовые скрипты, какие-то настройки, добавлены учëтки для техподдержки (про учетки правда честно сразу сказали, что если убрать то ТП потом если что помочь не сможет).
Extralait Автор
23.05.2025 17:50Я упоминал, про подключение по ключу
Рекомендую вам настроить SSH ключи вместо аутентификации по паролю. В контексте данной статьи этот пункт мы не будем рассматривать, но я оставлю вам инструкцию о том, как это сделатьВ
Выше был хороший комментарий о том, какой ключ сейчас актуально использовать
Про права, я тоже обратил внимание, что 777 не есть хорошо
что не рекомендуется) но лучше понять, что вы делаете
А вот, про предусиановку чего-то как-то даже не задумывался никогда, в следующий раз, обращу на это внимание, спасибо, что рассказали об этом кейсе.
lex899
23.05.2025 17:50Если вы согласны запускать "непонятные" скрипты на своей машине - качаете клиент амнезии любым способом, даёте ему доступ к vps и он сам все вам настроит (open/wg/amnezia), никаких ssh и консоли не надо.
Belkogoth
23.05.2025 17:50Блин, вот всё руки никак не дойдут наклепать статью по созданию своего VPN на базе VPS с RouterOS для соединения как удаленных микротов (на работе, к примеру, дома и в прочих злачных местах) в одну сеть, так и для собственно доступа на забугорные ресурсы. У меня уже не первый год работает подобная личная сеть для кучи целей. Запущено два VPS, один в нашем сегменте сети, другой за пределами РФ.
Но я использую для соединения микротов исключительно SSTP, причем с проверкой сертификатов, что ограничивает использование этого протокола только микротами - для доступа к узлу, к примеру, с мобильного вне дома или работы у меня настроен IPSec. Только в такой реализации у меня, тьфу 3 раза, стабильный длительный аптайм всех соединений. Игрался в свое время и с Ovpn, и с Wireguard. До забугорного сервера оба протокола давно уже не работают, до российского - ну блин, может потерять коннект и не подыматься целыми днями.
Из сильных плюсов сего решения: во-первых, исключительно стабильная работа, во-вторых, плюсы самой RouterOS. Крайне низкие требования, она создана чисто для сетевых задач - все лишнее выкинуто из ядра и системы, так что летать она будет даже на самом дешманском тарифе VPS с 1 ядром, 0.5 RAM, 5-10 гигов HDD. Блин, она на допотопном MIPS ядре в 500 МГц, 16 Мб флэшки и 64 Мб оперативки нормально работает, прям 95-я винда, ейбогу. На лишнем пространстве, коего опосля установки системы остается примерно весь диск минус пара сотен мегабайт, можно создать SMB-шару для всякой мелочевки, ну и достаточно удобная работа, в Winbox перед глазами куча настроек, а не командная строка или web-интерфейс, где одновременно можно наблюдать только один раздел. Что в консоли ручками клацается полчаса - в винбоксе делается за 5 минут. И, разумеется, прозрачная работа всех нужных сетей.
VenbergV
23.05.2025 17:50ЕМНИП чистую установку RouterOS сделать не выйдет. Можно будет развернуть только готовый образ Cloud Hosted Router, предварительно разобравшись в типе виртуализации у VDS.
Vindicar
У вашего провайдера всё ещё работает OpenVPN до зарубежного хоста?
Extralait Автор
У меня и openvpn и amnezia работает на сервере в Хельсинки, провайдер интернета Домру. Мобильный МТС и Билайн
Spyman
Это зависит не от провайдера, а от региона
Londo
И от региона и от провайдера.