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

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

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

Введение

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

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

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

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

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

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

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

Безусловно, можно было скачать всё заранее, или сейчас воспользоваться ещё доступными 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 белый, статический, привязанный только к Вам. Если какая-то авторизация завязана на это — ничего не слетит.

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

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

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

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

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

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

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

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

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

Дополнительно [опционально!] я делегировал домен. Описано это в 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

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

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

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 клика

Установка 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
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии