Абсолютно бесплатный VPN с бесплатного VPS

Специальный корреспондент
Собака

Собака

Пресс-служба
Ветеран пробива
Private Club
Регистрация
13/10/15
Сообщения
60.591
Репутация
64.440
Реакции
293.826
USD
0
Думаю про VPN слышали все, и многим приходилось им пользоваться. При этом использование готового VPN, которым руководит какой - то неизвестный человек, не является хорошей идей. Тем более в России на данный момент пытаются блокировать, как сами VPN провайдеры (Windscribe, Proton и другие известные сервисы), так и сами протоколы.

VPN через SSH​

На данный момент DPI (Deep packet inspection) умеет блокировать не только конкретные ресурсы, но и протоколы обмена информацией. При этом есть протокол, который вряд ли заблокируют - SSH. Блокировка данного протокола невозможна без катастрофических последствий для всей инфраструктуры.

SSH
SSH (secure shell) - протокол для удалённого управления операционной системы на основе TCP. Похож на telnet, но все пакеты шифруются, что делает его безопасным.
SSH "из коробки" работает с шифрованием, поэтому мы можем не беспокоиться за безопасность своего трафика.

Существуют разные инструменты для реализации VPN через SSH, я остановлюсь на sshuttle. Преимущества sshuttle:

  • не требует ничего от сервера (просто запущенный ssh сервер)
  • Работает везде, в том числе OpenWRT и Windows (должно работать)
  • Поддерживает тунелирование DNS запросов

VPS​

Для того, чтобы поднять VPN для себя хватит любого самого дешёвого сервера с белым IP. Но мы хотим всё сделать бесплатно, поэтому отбрасываем этот вариант.

Есть Корейский goorm.io, который позволяет внутри докера запускать свой код на различных языках программирования. По сути repl.it, но goorm.io позволяет официально запускать ssh сервер из их контейнера, а следовательно предоставляет белый IP адрес.

Goorm.io​

Проходим простую регистрацию.

Кстати goorm.io пропускает для регистрации временные почты.

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

cb544882aa056157bf2b8566226b471a.png

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

aed2dfdcd08c1adb8a822e3a3c9dd6ce.png

Пресет контейнера выбираем "blank". Можно ещё выбрать версию убунты в контейнере, правда выбор слишком скромный. Либо 18.04, либо 16.04.

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

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

66ac048ac6a062f602924ae4678b9c9f.png

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

efa9e6baf462f095cd2dc26572df752e.png

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

6da9f22856e21f3f13aac32f5b37e406.png

Состояние контейнера сохраняется после его выключения. Поэтому для себя я создал ещё одного пользователя с удобным для меня паролем и подключаюсь через него.

SSHUTTLE​

В GitHub репозитории есть команды для установки утилиты практически на любую операционную систему. Здесь приведу только пример для лучшего дистрибутива.

sudo pacman -S sshuttle
После установки выполним следующую команду:

sshuttle -r sshuser@IP:PORT -x IP 0/0 -v --dns
Вместо IP и PORT подставляете данные от своего контейнера. Сначала вам потребуется ввести пароль от вашего, локального root юзера, а затем пароль от пользователя запущенного контейнера.

Открываем любой определитель IP адреса и видим, то, что IPv4 изменился, а IPv6 - нет

1e2f1dfe223f325979cdca9a4fd83104.png

Разработчики sshuttle утверждают, что IPv6 поддерживается, но конкретно у меня - IPv6 не поменялся. К сожалению большинство сайтов определяют регион по IPv6, в том числе и DPI проверяет трафик, идущий через IPv6.

Но это можно исправить.

IPv6​

Возможно есть более удобный способ исправить данную проблему. Моё решение - отключить IPv6 на стороне браузера, т.е. запретить ему использовать IPv6 в принципе.

Покажу, как это сделать на примере Firefox.
Открываем страницу about:config и в поиске вводим: network.dns.disableIPv6
и переключаем его на "true".

03cc785949b1f168d3592dd811e348d9.png

После перезапуска браузера видим, что всё работает

619c9f81bfd8f7aba1aa61eea37e6f92.png
Если всё ещё не работает
Если всё ещё не работает, то проверьте, не включен ли у вас QUIC (HTTP/3). QUIC использует UDP, а sshuttle не умеет работать с таким трафиком.
И все сайты заблокированные со стороны РФ, так же работают.

Бенчмарк​

Контейнер может работать 24/7, если у вас открыта вкладка в браузере с его ide. А в платной подписке его можно заставить работать всегда при любых условиях.
Но я не думаю, что кому - то нужен VPN, который работает постоянно, даже когда вы не у компьютера.

Для бесплатного VPN скорость достаточная. Важно, что она стабильная.

В самом контейнере около 650 мб/c
В самом контейнере около 650 мб/c

Выводы​

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

Меня полностью устраивает способ, который я изложил в этой статье (сейчас я только им и пользуюсь).

Касательно запуска OpenVPN и подобных. У goorm есть возможность пробрасывать порты.

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

bf9c6cb234a06cfa81ee96226433fe62.png

Написано про прокси, но, как причина для блокировки "высокая нагрузка". Если будет время, то проверю OpenVPN.

Надеюсь, статья была интересная, а главное полезная.











Источник










Источник
 
Назад
Сверху Снизу