Привет хабр! В этой статье хочу рассказать, как развернуть свой собственный 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 (информация с сайта)

  1. Откройте «Параметры» — «Приложения».

  2. Выберите подпункт «Дополнительные компоненты».

  3. Найдите в списке «Клиент OpenSSH» и нажмите «Установить». Если этой кнопки нет, значит, служба уже включена.

  4. После установки перезагрузите компьютер.

  5. После включения нажмите Win+R, введите в поле «cmd» и Enter

  6. Далее вы

Способ подключения через 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)


  1. Vindicar
    23.05.2025 17:50

    У вашего провайдера всё ещё работает OpenVPN до зарубежного хоста?


    1. Extralait Автор
      23.05.2025 17:50

      У меня и openvpn и amnezia работает на сервере в Хельсинки, провайдер интернета Домру. Мобильный МТС и Билайн


    1. Spyman
      23.05.2025 17:50

      Это зависит не от провайдера, а от региона


      1. Londo
        23.05.2025 17:50

        И от региона и от провайдера.


  1. grosm4n
    23.05.2025 17:50

    Под убунту православную есть отличная простая тулза - pivnp. Да, она под малинку, но на убунту работает великолепно. Достаточно только поставить через curl -L install.pivpn.io | bash, запустится интерактивный установщик который и предложит создать пользователя, и днс выбрать и другие параметры, в полуавтоматическом режиме. Главное в начале выбрать OpenVPN, но на выбор дается еще Wireguard. 5 минут и сервер поднят, а конфиги добавляются одним pivpn add. Все интуитивно просто и понятно


    1. php7
      23.05.2025 17:50

      Это и ранее было принято запускать с интернетов скрипты через | bash?


      1. grosm4n
        23.05.2025 17:50

        Никто не запрещал воспользоваться -o file.sh и посмотреть что там


  1. php7
    23.05.2025 17:50

    Ах-ах, в статье тоже скачивание установщика непонятно откуда.


    1. Extralait Автор
      23.05.2025 17:50

      Вы всегда можете использовать

      Источник с альтернативными вариантами установки

      Или просмотреть содержание скаченного скрипта


    1. HomeMan
      23.05.2025 17:50

      Ну в скрипте особого криминала нет.

      Easyrsa прибит гвоздями на версию по моему 3.1.2

      Unbound почему то хотят, ажно через apt install -y

      Ну и IPv6 тоже гвоздями прибит.

      На любителя вообще то.


      1. Black_Shadow
        23.05.2025 17:50

        Ну это сейчас нет. А что там будет через 5 минут? Каждый раз проверять? Нет уж, лучше нахер такие статьи с такими советами. В чём проблема поставить через apt install?


        1. HomeMan
          23.05.2025 17:50

          Я не про apt install, я про флаг -y.

          Т.е. поставит хочешь ли ты или нет.

          Фу такое делать.

          И по моему скромному мнению, скрипт должен иметь опцию uninstall которая удалит все, что установилось, включая правила файрвола и прочее.

          Но это там на зачаточном уровне.


  1. 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 вместо центра сертификации. Вот есть Пример на эту тему.


    1. Extralait Автор
      23.05.2025 17:50

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

      Не могу апнуть коммент из-за кармы, но хотелось бы почаще видеть конструктивные замечания


    1. SuAlUr
      23.05.2025 17:50

      Зачем ufw в новом сервере в 2025 году? Debian12Ubuntu 22.04-24.04 используют nftables.

      UFW использует nftables.

      А по поводу поста в целом – выбор openvpn в 2025 очень странный выбор.


      1. Extralait Автор
        23.05.2025 17:50

        Чем так плох OpenVPN для личного пользования? У меня например дома стоит ТВ на YaOS причем от tuvio я из VPN на него только его и могу поставить. А чтобы подружить ту же амнезию с роутером, мне во-первых нужен другой роутер, а во-вторых дополнительно с ним возиться. Я понимаю, что технология могла остаться в прошлом, но все мои, опять же подчеркну, личные потребности она более чем закрывает


        1. MountainGoat
          23.05.2025 17:50

          Много где его тупо отфильтровывает провайдер. Или в любой момент начнёт. А больше ничем.


          1. Extralait Автор
            23.05.2025 17:50

            Понял, не знал. Я думал, написать и о том как настроить ту же амнезию, но что-то уже сомневаюсь, в том, что оно того стоит


      1. VenbergV
        23.05.2025 17:50

        UFW использует nftables.

        Вот только приведенный скрипт использует iptables.

        выбор openvpn в 2025 очень странный выбор

        Вполне подходит для связи множества филиалов компании. И для подключения удаленных пользователей в периметр компании.
        Можно работать по tcp и udp.
        Можно выбирать много разных алгоритмов шифрования. Что позволяет использовать даже очень древнее оборудование.
        Можно работать со "своеобразным" MTU у конечных ISP.
        При работе с сервером сертификации можно производить отзыв сертификатов.
        При простом сценарии можно работать с отпечатками, без сервера сертификации.
        Новые версии OpenVPN имеют довольно приличную скорость и, как не странно, в версии 2.6.0 появилась возможность совместимости для старых версий. Сам ее использую для древних телефонов с OpenVPN 2.3.0
        Можно передавать параметры маршрутизации с сервера на клиенты.


    1. Heggi
      23.05.2025 17:50

      В openvpn пару лет уже можно использовать fingerprint вместо центра сертификации

      Если использовали/сталкивались, можете пояснить по использованию?

      Я правильно понимаю, что на стороне сервера нужно прописывать каждый fingerprint клиентского сертификата и после этого сервер нужно рестартануть?
      Если я меняю серверный сертификат (например, после истечения срока действия), придется редактировать все клиентские конфиги разом? (А если их сотни?)

      Если всё так, то использование fingerprint подходит только для небольших инсталляций, на пару-тройку клиентов.


      1. VenbergV
        23.05.2025 17:50

        Так это и есть упрощенная схема. Подобие как у WireGuard.
        Если вам нужно по взрослому, на сотни клиентов, то делайте как и ранее через отдельный CA.


  1. NekoYos
    23.05.2025 17:50

    Я редко захожу на хабр, и с каждым посещением убеждаюсь в том что это уже личный блог смузи-сисадминов, а не серезный ит ресурс. Меня убила линка на кастомный скрипт который сам за тебя установит openvpn. Еще менее но тоже что не понравилось - использование bash всместо универсального sh, который точно есть в docker apline образах а не вот эти ваши vps.


    1. Extralait Автор
      23.05.2025 17:50

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


  1. Kimimi
    23.05.2025 17:50

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


    1. Extralait Автор
      23.05.2025 17:50

      Хммм, разве это выглядит так запарно? Я потратил минут 15-20 чтобы настроить чистый сервер для примера из статьи и накидать черновик. Хотя, наверное, если делать это в первый раз, все может быть не так гладко, как я это вижу сейчас. Уже не помню, если честно, когда настраивал что-то на сервере впервые


      1. NekoYos
        23.05.2025 17:50

        А скольно Вы минут потратили на ответы в коментариях? Наверно достаточно чтоб черновик поевратить во чтото интересное :)


    1. Extralait Автор
      23.05.2025 17:50

      А про амнезию, я не согласен, ее если честно, прям геморойнее было ставить и она у меня не работала корректно с клиента для iOS и Ubuntu, хотя с windows и android проблем не было. Собственно поэтому дополнительно поднял и OpenVPN


  1. KyJIep-79
    23.05.2025 17:50

    Вы родились уже после того, как РКН несколько раз блокировал vpn протоколы, в т.ч. wireguard и openvpn, по всей России на пару-тройку суток? У многих операторов во многих регионах эти блокировки продолжаются. Этих статей тысячи, зачем плодить новые? Это было бы актуально лет 5 назад.


  1. AVX
    23.05.2025 17:50

    Ставил себе openvpn на арендованном сервере. В статье меня смущает что используется какой-то сторонний скрипт вместо штатного apt install, где-то предлагаются ставить права 777, что вообще небезопасно. При этом зачем-то упомянута настройка фаервола, но как-то очень коротко, а самое важное для безопасности не объяснили - что надо сделать подключение по ssh только по ключу, и желательно запретить логин root по ssh (хотя я хожу под рутом, но по ключу).

    Про nftables уже написали. Кстати, если ОС на арендованном сервере готовая предустановленная (не сами ставили со своего iso), то стоит подробнее изучить, что там где накручено. Мне попадалось, что стояли уже некоторые стартовые скрипты, какие-то настройки, добавлены учëтки для техподдержки (про учетки правда честно сразу сказали, что если убрать то ТП потом если что помочь не сможет).


    1. Extralait Автор
      23.05.2025 17:50

      Я упоминал, про подключение по ключу

      Рекомендую вам настроить SSH ключи вместо аутентификации по паролю. В контексте данной статьи этот пункт мы не будем рассматривать, но я оставлю вам инструкцию о том, как это сделатьВ

      Выше был хороший комментарий о том, какой ключ сейчас актуально использовать

      Про права, я тоже обратил внимание, что 777 не есть хорошо

      что не рекомендуется) но лучше понять, что вы делаете

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


  1. lex899
    23.05.2025 17:50

    Если вы согласны запускать "непонятные" скрипты на своей машине - качаете клиент амнезии любым способом, даёте ему доступ к vps и он сам все вам настроит (open/wg/amnezia), никаких ssh и консоли не надо.


  1. 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 минут. И, разумеется, прозрачная работа всех нужных сетей.


    1. VenbergV
      23.05.2025 17:50

      ЕМНИП чистую установку RouterOS сделать не выйдет. Можно будет развернуть только готовый образ Cloud Hosted Router, предварительно разобравшись в типе виртуализации у VDS.