Делаем свой VPN в 3 клика

Они блокируют нам VPN-сервисы? Тогда мы сделаем свой, с адблоком и плюшками!

Бендер из Футурамы
Талисман self-hosted VPN-ов
Делаем свой VPN в 3 клика
🔗 Ссылка на видео 🔗

Введение

Если без шуток, то в очень непростое время мы живём.

Дисклеймер:
Я не собираюсь давать никаких оценок и мнения касаемо происходящей в мире ситуации, рассмотрим лишь способ обхода ограничений доступа к интернет-ресурсам.

Это касается не только любимого “инстаграмчика” (чёрт бы с ним, но предпринимателей, потерявших платформу, действительно жаль)

Это касается практически каждого из нас. Конкретно могу судить только по сфере IT, но я уверен, что ограничения испытывают как журналисты, так и научные сотрудники.

Вначале некоторые зарубежные сервисы блокировали российские IP. Кто-то из идеологических побуждений, кто-то из регуляторных норм.
Затем некоторые компании и их сервисы за определённые действия начали ограничиваться российскими ведомствами (Meta, как очевидный пример).
А теперь блокируют и публичные VPN-сервисы.

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

Делаем свой VPN в 3 клика
Компания Dell
Делаем свой VPN в 3 клика
Analog Devices и дочерние
Делаем свой VPN в 3 клика
Компания NXP
Делаем свой VPN в 3 клика
Компания Texas Instruments

Безусловно, можно было скачать всё заранее, или сейчас воспользоваться ещё доступными VPN-сервисами. А если понадобится какая-то дополнительная информация, откуда её брать?

Если кто-то пользуется Qt — то установить его ныне можно тоже только через VPN.

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

Выбор VPS

Что же делать в данной ситуации?
Давайте подойдём к ней прагматично. Если блокируют именно публичные VPN-сервисы, то на ум сразу приходят выделенные серверы, VPS или VDS они называются. На них и развернём VPN.

VPS — кусочек производительности и памяти, выделенный на основном сервере.

Почему такой сервер не заблокируют?
Логика простая. Кому какая разница, чем вы на этих серверах в рамках закона занимаетесь.
У кого-то на них висят веб-сервисы для личных или корпоративных задач, например, буча поднимется нехилая, если безосновательно блокировать начнут.

Теперь дело за малым. Найти правильного хостинг-провайдера.
Критерии для поиска очень простые: сервера есть вне РФ, есть возможность оплаты без гемора.
Вспоминаем, что MasterCard и VISA за рубежом больше не принимаются, поэтому все сугубо иностранные провайдеры отпадают.

Среди наших сервисов есть RuVDS. Помимо РФ, сервера предоставляются в: Швейцарии, Германии, Британии, Нидерландах.
Не выбрал я его только потому, что в своё время был не очень позитивный опыт.

В поиске альтернатив нашёлся PQ Hosting. Ссылка реферальная — покупка услуг поддержит мой сайт.
У них более широкая география серверов: 16 стран, а также возможность оплаты криптовалютой, например.

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

Делаем свой VPN в 3 клика
Санкция от поддержки на установку

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

  1. https://whatismyipaddress.com/vpn-comparison — Общий сводный список. На цены не смотрим, это офферы при оплате на год.
  2. https://order.surfshark.com/ — EUR 12 за 1 мес. Без лимита устройств.
  3. https://nordvpn.com/ru/pricing/ — USD 12 за 1 мес. 6 устройств.
  4. https://protonvpn.com/ru/getvpn — EUR 10 за 1 мес. 10 устройств.
  5. https://rus.privateinternetaccess.com/buy-vpn-online — USD 12 за 1 мес. 10 устройств.

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

Делаем свой VPN в 3 клика

Ключевое отличие от “покупных” сервисов — фиксированная геолокация. Это может быть как недостатком — невозможность быстро сменить регион в специфических обстоятельствах, так и преимуществом — IP белый, статический, привязанный только к Вам. Если какая-то авторизация завязана на это — ничего не слетит.

А ещё не ограничены трафик и время подключения, выбор любой удобной технологии.

Есть небольшой нюанс — скорость подключения зависит напрямую от тарифа. Хоть и указан гигабитный порт ­— это значит, что гигабит заходит на стойку в дата-центре, а дальше всё зависит от приоритета по тарифу.
Пример:

# Тариф за 5.27 Евро (Argentum-[NL]):
speedtest
Retrieving speedtest.net configuration...
Testing from PQ HOSTING S.R.L (91.242.хх.хх)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by 31173 Services AB (Amsterdam) [94.29 km]: 25.654 ms
Testing download speed...
Download: 38.27 Mbit/s
Testing upload speed...
Upload: 61.09 Mbit/s

# Тариф за 8.27 Евро (Ruthenium-[NL]):
speedtest
Retrieving speedtest.net configuration...
Testing from Netassist Limited (94.131.xx.xx)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by 31173 Services AB (Amsterdam) [5862.40 km]: 4.567 ms
Testing download speed...
Download: 125.57 Mbit/s
Testing upload speed...
Upload: 156.84 Mbit/s

Что сказать… Маркетинг, плюс дорогой интернет в этих ваших Европах.
Сотки вполне себе должно хватать для комфортного сёрфинга, учитывая скорость мобильного интернета.
Да, 8 Евро может быть дорого, но если брать с кем-то в складчину — то вполне себе норм.

Регистрируемся, не забывая про рефералку. Пополняем счёт любым удобным способом, заказываем сервер.

Делаем свой VPN в 3 клика
Нажмите для увеличения

Выбираем Ubuntu, панель управления нам не нужна.

Делаем свой VPN в 3 клика
Нажмите для увеличения

Оплачиваем, через 15 минут будет выдан IP и запущен процесс установки. Если что-то не так — смело стучимся в поддержку.
Проследить за выполнением установки можно перейдя в панель управления услугой, затем открыть инстанс VNC.

Делаем свой VPN в 3 клика
Делаем свой VPN в 3 клика
Делаем свой VPN в 3 клика
Увидим прогресс установки

Процесс установки ОС занимает примерно 15-17 минут. Вводим пароль, который можно найти в кабинете биллинга, или меняем на свой, в панели управления услугой.

Делаем свой VPN в 3 клика
Проверяем, что всё окей.

UPD 2023:
pq-hostng начал ставить новую панель управления, в ней какие-то проблемы с подключением к встроенному VNC, подключайтесь сразу по SSH.

Дополнительно [опционально!] я делегировал домен. Описано это в FAQ.
Нужно внести 2 записи:
Первую в DNS домена, который обслуживает доменный брокер. У меня это reg.ru. (Ссылка реферальная, на покупку домена)
МОЙ ПРОМОКОД на 5% скидки: 234C-5D92-2F61-A31A

Делаем свой VPN в 3 клика
DNS-запись для домена

Вторую запись нужно внести на DNS-хостинг провайдера сервера.

Делаем свой VPN в 3 клика
Нажмите для увеличения

Связываем IP сервера и доменное имя — прописываем master-запись.

Делаем свой VPN в 3 клика

Выбор технологии

Существует несколько протоколов для организации VPN-туннеля.

Устаревшими и менее безопасными считаются L2TP, IKEv1, RSA, OpenVPN.

Современные протоколы — WireGuard, IKEv2.

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

Одним из таких скриптов был Streisand. Но он 2 года уже как не поддерживается, репозиторий в архиве, придётся очень постараться, чтоб запустить его без проблем.

Если хочется запустить чисто WireGuard, с удобным веб-интерфейсом, то есть скрипт wg-easy.
Вся установка там описана, заостряться на ней не буду.

Я же воспользуюсь скриптом algo VPN.
Он разворачивает протоколы IPSec IKEv2 (изкоробочный для iOS).
А также WireGuard, самый современный, простой и быстрый.
Генерирует для них профили. Блокирует рекламу на уровне DNS.

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

Дополнительно воспользуемся установкой OpenVPN с помощью скрипта openvpn-install.
Для вас это необязательно, но мне требуется для некоторых устройств.

Deploy в прод

Установка WireGuard & IPSec

Для доступа к своему серверу можно воспользоваться VNC. Либо же воспользоваться SSH:
– Под Windows — PuTTY или WinSCP.
– Linux имеет SSH “из коробки”.

Я буду пользоваться ssh из терминала своей федоры, так привычней.
Для подключения сгенерируем SSH-ключ и скопируем его на сервер. Так мы сможем подключаться без пароля. Описание.

ssh-keygen

Ответ будет таким:

Generating public/private rsa key pair. 
Enter file in which to save the key (/home/enik/.ssh/id_rsa): # оставим пустым по умолчанию
Enter passphrase (empty for no passphrase): 123 # запишем дополнительный пароль, например '123'
Enter same passphrase again: 123
Your identification has been saved in /home/enik/.ssh/id_rsa. 
Your public key has been saved in /home/enik/.ssh/id_rsa.pub
The key fingerprint is: 
SHA256:GKW7yzA1J1qkr1Cr9MhUwAbHbF2NrIPEgZXeOUOz3Us enik@enik 
The key's randomart image is: 
+---[RSA 2048]----+ 
|.*++ o.o.        | 
|.+B + oo.        | 
| +++ *+.         | 
| .o.Oo.+E        | 
|    ++B.S.       | 
|   o * =.        | 
|  + = o          | 
| + = = .         | 
|  + o o          | 
+----[SHA256]-----+

Далее скопируем ключик на сервер:

ssh-copy-id root@crazygeeks.ru
# скопируется файл из директории по умолчанию
# перед @ указывается пользователь, после - IP/домен сервера

Получим ответ:

root@crazygeeks.ru's password:  # вводим пароль сервера

Теперь подключимся к серверу:
Со скопированным ключом это произойдёт без пароля!

ssh root@crazygeeks.ru

Теперь начинаем установку скрипта.

UPD 2023:
Ниже указывается, что можно будет потом добавить пользователей. Либо авторы обновили скрипт, либо я нашёл решение проблемы.
Оно таково: нужно запускать скрипт из под обычного пользователя, не из под root.
Поэтому создадим пользователя для VPN:

adduser vpn    # Создаём пользователя VPN
# Указываем все его параметры и пароль
usermod -aG sudo vpn    # Даём права суперпользователя
groups vpn              # Проверяем, что всё получилось
su vpn    # переходим в нашего пользователя

Хостинг ставит минимальную конфигурацию Ubuntu, поэтому для следующих шагов нам необходимо установить Git.

sudo apt update
sudo apt upgrade
sudo apt install git -y

Далее начинаем идти по гайду, описанному в readme.md.

Для начала скачаем репозиторий.

git clone https://github.com/trailofbits/algo.git

Далее скачаем python с поддержкой виртуальных окружений.

sudo apt install -y --no-install-recommends python3-virtualenv

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

python3 -m virtualenv --python="$(command -v python3)" .env &&
  source .env/bin/activate &&
  python3 -m pip install -U pip virtualenv &&
  python3 -m pip install -r requirements.txt
Делаем свой VPN в 3 клика
Крутятся колёса, машина едет…

После установки заходим и редактируем файл config.cfg

nano config.cfg

В нём прописываем профили для каждого пользователя. Желательно ещё и для каждого устройства создать свой.

Делаем свой VPN в 3 клика

Остальная конфигурация нас в основном не интересует. Можете покопаться, но для обычной установки трогать ничего не надо.
Выходим из nano: Ctrl-X.

Ну и далее запуск скрипта.

./algo

Установка будет несколько раз прервана в начале, ожидая ввод параметров от пользователя, так что внимательно обращаем на это внимание.
Первое, что нас спросят — расположение установки. У нас кастомный сервер, указываем 12.

Делаем свой VPN в 3 клика

Далее 2 раза спросят про опцию “Connect on Demand” для iOS-устройств. Она значит, что VPN будет подключен всегда, в сотовых и в Wi-Fi сетях соответственно. В любом случае, эту опцию потом можно будет переключить со стороны клиента.

Делаем свой VPN в 3 клика

Если ответили положительно касаемо Wi-Fi сетей, попросят ввести список “доверенных” SSID, где VPN будет по умолчанию отключен. Можно оставить это поле пустым.

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

Делаем свой VPN в 3 клика

Далее блокировка рекламы.

Делаем свой VPN в 3 клика

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

Делаем свой VPN в 3 клика

Подтверждаем, что согласны со всеми рисками клавишей ENTER.

Делаем свой VPN в 3 клика

Последние 2 вещи, которые попросят:
Указать адрес установки. Ставим всё внутри сервера, поэтому указываем localhost.
Указать внешний IP адрес сервера (из панели биллинга) или доменное имя, которое делегировали на IP.

Делаем свой VPN в 3 клика

Откидываемся в кресле и ждём приблизительно 10 минут.
Если всё получилось, выйдет подобное сообщение. ОБЯЗАТЕЛЬНО сохраняем ключи, они могут пригодиться в дальнейшем.

Делаем свой VPN в 3 клика

Если нужно добавить новых пользователей:

cd ~/algo
nano config.cfg    # Открываем файл конфигурации и вписываем новых пользователей
source .env/bin/activate   # Запускаем окружение
./algo update-users        # Просим algo обновить список пользователей

Процесс снова займёт какое-то время. По окончании не забудьте снова сохранить пароль.

Установка OpenVPN

Дополнительно можно установить OpenVPN.

Переходим в домашнюю папку и скачиваем git-репозиторий.
Затем перейдём в папку репозитория, пропишем права на запуск скрипта.

cd ~
git clone https://github.com/angristan/openvpn-install.git
cd openvpn-install/
chmod +x openvpn-install.sh

Теперь можем его запускать.

./openvpn-install.sh

Установка снова интерактивная, все профили добавляются в процессе.
Для начала введём внешний IP или домен сервера.

Делаем свой VPN в 3 клика

IPv6 нам не нужен, так как он нормально в РФ не работает.
Выбираем порт доступа.

Делаем свой VPN в 3 клика

Далее указываются протокол подключения и DNS-сервера.

Делаем свой VPN в 3 клика

Остальные 2 параметра касаются безопасности, оставляем их по умолчанию.

Делаем свой VPN в 3 клика

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

Делаем свой VPN в 3 клика

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

На этом установку можно считать оконченной.

Загрузка профилей

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

На линуксе есть встроенные утилиты такие как: scp, rsync.
Я воспользовался rsync, так как он банально быстрее.
Синтаксис прост:

rsync options from to_src
# например - перенос профиля в папку VPN в домашней директории 
rsync -av root@crazygeeks.vpn:~/profile.ovpn ~/VPN

Для Windows есть масса программ с графическим интерфейсом. Например, WinSCP

Делаем свой VPN в 3 клика

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

Делаем свой VPN в 3 клика

Что касается профилей algo, нас интересует директория algo/configs/<server>.

Делаем свой VPN в 3 клика

Клиентская установка

IPSec подходит лучше для Apple-устройств. Скрипт формирует готовые профили с расширением .mobileconfig.
В остальных случаях следует применить WireGuard или OpenVPN.

Установка на iOS

Любым удобным способом направляем файлик с профилем .mobileconfig пользователю.
Листайте галерею:

  • Делаем свой VPN в 3 клика
  • Делаем свой VPN в 3 клика
  • Делаем свой VPN в 3 клика
  • Делаем свой VPN в 3 клика
  • Делаем свой VPN в 3 клика
  • Делаем свой VPN в 3 клика
  • Делаем свой VPN в 3 клика
  • Делаем свой VPN в 3 клика

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

Делаем свой VPN в 3 клика

Установка WireGuard

С WireGuard тоже всё просто. Для пользователей создаётся пара файлов: файл .cfg и PNG-картинка с QR-кодом.

Для Windows есть GUI-клиент, устанавливаем, туда вносим .cfg и пользуемся.

Делаем свой VPN в 3 клика
Делаем свой VPN в 3 клика

Для мобильных устройств воспользуемся приложением и QR-кодом.

Делаем свой VPN в 3 клика
Делаем свой VPN в 3 клика

Тесты скорости

Проводная сеть

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

Делаем свой VPN в 3 клика

Теперь посмотрим на туннель OpenVPN:

Делаем свой VPN в 3 клика

Не густо… Ну а как ещё.

И WireGuard:

Делаем свой VPN в 3 клика

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

Wi-Fi

Сеть 5 ГГц, все тесты телефон находился в статичном одинаковом положении.
Сперва контрольный замер:

Делаем свой VPN в 3 клика

Туннель IPSec

Делаем свой VPN в 3 клика

Туннель WireGuard

Делаем свой VPN в 3 клика

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

Блокировки РКН:

Материалы о вредительстве в Open-Source ПО:

Дополнительные статьи об установке VPN сервера:

Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Петр
Петр
7 месяцев назад

У Timeweb очень удобно сделано. В Маркетплейсе выбираешь Wireguard-GUI, и потом через веб просто делаешь доступы. Не нужно никакие SSH настраивать и всякой технических шутк.
Сервис: https://timeweb.cloud/vds-vps?i=107589
Инструкция: https://timeweb.cloud/docs/timeweb-private-vpn/vpn-wireguard-gui-setup?i=107589