Установка и настройка VPN на VPS
Перед тем, как приступить к настройке нам нужно: 1 — Купить VPS сервер, достаточно будет сервера на linux (я взял на Ubuntu) минимальной производительности. Я покупал на reg.ru. Сначала купил у FirstByte, но не все нужные мне сайты работали, не знаю в чем дело. 2 — Подключаемся к серверу по ssh
Настройка VPN OpenVPN
Выполнено по вот этому гайду Он же на dtf
-
Подключаемся к серверу по ssh, вводим пароль, соглашаемся с подключением
- Настраиваем VPN:
- Выберите протокол подключения UDP — введите цифру 1
- Согласитесь со стандартным портом. Просто нажмите enter
- Выберите стандартные настройки сервера для DNS, введя цифру 1
- Введите имя ключа клиента
- Нажмите Enter
После этого скачиваем сгенерированный ключ. Он будет в папке root тем именем, что мы выбрали и расширением ovpn. Можем скачать с помощью SSH, можно установить FileZilla и подключиться по FTP к серверу: адрес и пароль нам уже известны, порт 22(или 21), имя пользвателя root или то, которое у вас установлено..
Настройка VPN Outline
Сделано по этим гайдам: Раз на хабре Два на VC
-
Подключаемся к серверу по ssh, вводим пароль, соглашаемся с подключением
также можно воспользоваться командой wget -O — https://get.docker.com | bash скорее всего скрипт сам запустит Докер и добавить его в автозагрузку. Но если что-то пошло не так, это можно сделать самому systemctl enable docker && systemctl start docker
Скачиваем Outline manager 
В главном окне программы нужно выбрать пункт «Настроить Outline где угодно» (правый нижний угол).
После нажатия кнопки «Настроить» будет экран с инструкциями, в котором будет приведена длинная команда
Копируем эту команду из поля 1 и вставляем ее в терминал сервера, после работы скрипта терминал вернет результат, выделенный зеленым.
Вставляем его в Outline Manager и нажимаем Готово 
Создаем свой VPN-сервер (OpenVPN) на арендованном VPS
Задался целью поднять OpenVPN на том же сервере, где стоит “нода”. Все равно за сервер я плачу каждый месяц, идеальный вариант использовать сервер в качестве собственного VPN.
Данный способ использования собственного VPN сервера имеет ряд своих преимуществ например, то что и IP адрес принадлежит только вам, как правило IP отсутствуют списках бана, также свой VPN сервис имеет больше ресурсов значит, что у вас будет меньше пинг и больше скорости.
Преимуществом собственного VPN сервера это — безопасность, защита персональных данных. Использования бесплатных, да даже платных VPN сервисов несет риски утечки данных, кража паролей и логинов, которые по каким-то причинам стали им доступны.
Инструкция предполагает хотя бы минимальные знания Linux на уровне начального пользователя, который умеет обращаться с базовыми командами консоли (привет нодранерам).
1 Арендуем сервер и настраиваем доступ.
Я использую сервер Contabo, можете выбрать Hetzner и т.д., для VPN подойдут минимальные характеристики Ubuntu 20.04 (1 cpu, 1 gb ram). Как зарегистрироваться и арендовать сервер, можно разобраться самому, в ютубе есть ролики по этому поводу, не буду описывать этот процесс.
Для доступа использую Puty или MobaXterm.
2 Водим необходимые команды.
# Обновить пакеты
sudo apt update && sudo apt upgrade -y
# Далее устанавливаем git и клонируем репозиторий
apt install git
# Далее устанавливаем скаченный скрипт
chmod +x ./openvpn-install/openvpn-install.sh
# Далее запускаем скрипт и жмем энтер, по умолчанию стоит ваш внешний ip адрес сервера с которого вы будете выходить в интернет.
# Далее нужно настроить OpenVpn параметры. Выбираем подходящий протокол.
UPD — менее надежная передача данных но более быстрая.
TCP — это надежная передача данных но пинг будет чуть выше.
Выбирайте тот который больше подходит к вашему сценарию использования если вы например смотрите видео либо играйте в игры какие-то то, лучше поставить UPD. Либо если вам важна безопасность, качество передачи данных и не критична задержка, например использование какой-то программы то ставьте TCP.
Делаем выбор например — 1, жмем enter
#Далее нужно выбрать порт.
По умолчанию OpenVpn использоваться порт 1194 но бывает так что некоторые провайдеры этот порт блокируют поэтому, можно поставить другой порт, например стандартный 80 либо 443
В этой инструкции оставим порт по умолчанию, жмем просто enter.
#Далее нам нужно выбрать провайдера, который будет давать нам dns, давайте выберем 2 — google, нажимаем enter.
#Далее создаем скрипт и задаем ему имя. Например my_vpn, жмем enter.
и еще раз enter
#Созданый скрипт надо скопировать в текстовый документ.
Выводим скрипт с помощью команды cat <имя скрипта>.ovpn
Подставляем имя которое мы указали.
Имя можно посмотреть командой — ls -1
#Копируем скрипт.
Скрипт начинается с:
Создаем обычный .txt файл на рабочем столе, вставляем скрипт и сохраняем с новым расширением
На этом все, на сервере больше никаких действий выполнять не надо, переходим к установке программы OpenVpn
3 Устанавливаем OpenVpn и запускаем VPN
Переходим на сайт
Скачиваем подходящий клиент, например для Windows
Устанавливаем клиент на свой пк или ноутбук.
Для телефона на androide выбираем соответствующий клиент. Подключение будет одинаковым для компьютера и для телефона.
Абсолютно бесплатный VPN с бесплатного VPS
Думаю про VPN слышали все, и многим приходилось им пользоваться. При этом использование готового VPN, которым руководит какой — то неизвестный человек, не является хорошей идей. Тем более в России на данный момент пытаются блокировать, как сами VPN провайдеры (Windscribe, Proton и другие известные сервисы), так и сами протоколы.
VPN через SSH
На данный момент DPI (Deep packet inspection) умеет блокировать не только конкретные ресурсы, но и протоколы обмена информацией. При этом есть протокол, который вряд ли заблокируют — SSH. Блокировка данного протокола невозможна без катастрофических последствий для всей инфраструктуры.
SSH (secure shell) — протокол для удалённого управления операционной системы на основе TCP. Похож на telnet, но все пакеты шифруются, что делает его безопасным.
SSH «из коробки» работает с шифрованием, поэтому мы можем не беспокоиться за безопасность своего трафика.
Существуют разные инструменты для реализации VPN через SSH, я остановлюсь на sshuttle. Преимущества sshuttle:
не требует ничего от сервера (просто запущенный ssh сервер)
Работает везде, в том числе OpenWRT и Windows (должно работать)
Поддерживает тунелирование DNS запросов
Для того, чтобы поднять VPN для себя хватит любого самого дешёвого сервера с белым IP. Но мы хотим всё сделать бесплатно, поэтому отбрасываем этот вариант.
Есть Корейский goorm.io, который позволяет внутри докера запускать свой код на различных языках программирования. По сути repl.it, но goorm.io позволяет официально запускать ssh сервер из их контейнера, а следовательно предоставляет белый IP адрес.
Goorm.io
Проходим простую регистрацию.
Кстати goorm.io пропускает для регистрации временные почты.

Регистрация
Далее переходим в IDE, и создаём новый контейнер.

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

Пресет контейнера выбираем «blank«. Можно ещё выбрать версию убунты в контейнере, правда выбор слишком скромный. Либо 18.04, либо 16.04.
Почему только LTS убунты
Arch is the best!

Жалко, что в пресете c PyTorch не выдаётся GPU.
Остальные настройки оставляем дефолтными. Создаём контейнер и через несколько секунд оказываемся в ide.

IDE
В верхнем меню выбираем Container -> SSH Configuration

Откроется модал в котором будет команда для подключения по SSH.

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

Состояние контейнера сохраняется после его выключения. Поэтому для себя я создал ещё одного пользователя с удобным для меня паролем и подключаюсь через него.
SSHUTTLE
В GitHub репозитории есть команды для установки утилиты практически на любую операционную систему. Здесь приведу только пример для лучшего дистрибутива.
После установки выполним следующую команду:
Вместо IP и PORT подставляете данные от своего контейнера. Сначала вам потребуется ввести пароль от вашего, локального root юзера, а затем пароль от пользователя запущенного контейнера.
Открываем любой определитель IP адреса и видим, то, что IPv4 изменился, а IPv6 — нет

Разработчики sshuttle утверждают, что IPv6 поддерживается, но конкретно у меня — IPv6 не поменялся. К сожалению большинство сайтов определяют регион по IPv6, в том числе и DPI проверяет трафик, идущий через IPv6.
Но это можно исправить.
Возможно есть более удобный способ исправить данную проблему. Моё решение — отключить IPv6 на стороне браузера, т.е. запретить ему использовать IPv6 в принципе.
Покажу, как это сделать на примере Firefox.
Открываем страницу about:config и в поиске вводим: network.dns.disableIPv6
и переключаем его на «true».

После перезапуска браузера видим, что всё работает
Если всё ещё не работает
Если всё ещё не работает, то проверьте, не включен ли у вас QUIC (HTTP/3). QUIC использует UDP, а sshuttle не умеет работать с таким трафиком.
И все сайты заблокированные со стороны РФ, так же работают.
Бенчмарк
Контейнер может работать 24/7, если у вас открыта вкладка в браузере с его ide. А в платной подписке его можно заставить работать всегда при любых условиях.
Но я не думаю, что кому — то нужен VPN, который работает постоянно, даже когда вы не у компьютера.
Для бесплатного VPN скорость достаточная. Важно, что она стабильная.

В самом контейнере около 650 мб/c
Выводы
К сожалению в текущих реалиях, даже платная подписка на хороший VPN не гарантирует, что он будет работать стабильно, так как его могут в любой момент заблокировать.
Меня полностью устраивает способ, который я изложил в этой статье (сейчас я только им и пользуюсь).
Касательно запуска OpenVPN и подобных. У goorm есть возможность пробрасывать порты.

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

Написано про прокси, но, как причина для блокировки «высокая нагрузка». Если будет время, то проверю OpenVPN.
Как создать свой VPN (WireGuard) с веб-интерфейсом за 100 рублей? I способ
Для того, чтобы создать свой VPN нам понадобиться VPS хостинг. Я буду показывать на примере aeza.net, там есть дешевый тариф за 100р, на сервере из Швеции. Плюс по моем ссылке вы получаете бонус +15% на пополнение.
Регистрируемся, выбираем локацию Швецию/Нидерланды во вкладке Виртуальные Сервера, тариф SWE-Promo, ОС Ubuntu 22.04 .
Оплачиваем при помощи СБП (Минимальная комиссия).
Ждем установку сервера около 5 минут. Здесь нам понадобиться Имя пользователя, пароль и IP-адрес.
Теперь нам надо подключиться к терминалу сервера, чтобы установить наш скрипт VPN с веб-интерфейсом. Для этого нам понадобится программа Bitvise SSH Client. Открываем и копируем в нее Имя пользователя, IP-адрес и пароль от нашего сервера. Нажимаем «Log in».
Копируем команду:
И вставляем в терминал нажав правую кнопку мыши, нажимаем Enter. У вас начнется установка. И примерно после 1-2 минуты закончится и вы увидите такие надписи.
Нажимаем Enter и вас просто перекинет на строку ниже.
Прописываем третью команду:
У вас закроется терминал.
Теперь заново подключаемся к серверу и открываем опять терминал.
Копируем в блокнот команду:
/.wg-easy:/etc/wireguard \ -p 51820:51820/udp \ -p 51821:51821/tcp \ —cap-add=NET_ADMIN \ —cap-add=SYS_MODULE \ —sysctl="net.ipv4.conf.all.src_valid_mark=1" \ —sysctl="net.ipv4.ip_forward=1" \ —restart unless-stopped \ weejewel/wg-easy
Вместо «YOUR_SERVER_IP» пишем ваш IP-адрес сервера.Вместо «YOUR_ADMIN_PASSWORD» пишем пароль, который вы хотите использовать для входа в веб-интерфейс своего VPN.
Копируем это все из блокнота и вставляем правой кнопкой мыши в наш терминал. Должно получиться так:
Для входа в веб-интерфейс используем 0.0.0.0:51821, где 0.0.0.0 IP-адрес вашего сервера. В моем случае, это 79.137.197.187:51821. При переходе, у вас открывается форма ввода пароля, заполняем и входим в веб-интерфейс нашего VPN.
Здесь можно создавать аккаунты VPN по кнопке «New». Включать и выключать их.
Скачиваем из интерфейса VPN конфиг нашего аккаунта к которому мы хотим подключиться.
Чтобы включить VPN на Windows и MacOS нам необходимо скачать программу WireGuard. Устанавливаем и открываем ее. Нажимаем «Добавить туннель» и выбираем наш скачанный конфиг. Он добавляется в левое окно программы. Нажимаем подключиться и наш VPN начинает работать. Можете теперь им пользоваться на своем компььтере.