Думаю про VPN слышали все, и многим приходилось им пользоваться. При этом использование готового VPN, которым руководит какой - то неизвестный человек, не является хорошей идей. Тем более в России на данный момент пытаются блокировать, как сами VPN провайдеры (Windscribe, Proton и другие известные сервисы), так и сами протоколы.
SSH
SSH (secure shell) - протокол для удалённого управления операционной системы на основе TCP. Похож на telnet, но все пакеты шифруются, что делает его безопасным.
SSH "из коробки" работает с шифрованием, поэтому мы можем не беспокоиться за безопасность своего трафика.
Существуют разные инструменты для реализации VPN через SSH, я остановлюсь на
Есть Корейский
Кстати goorm.io пропускает для регистрации временные почты.
Регистрация
Далее переходим в
На выбор есть 4 региона расположения сервера (точнее расположения амазоновского инстанса на котором будет запущен ваш контейнер). Нам нужно выбрать ближайший к нам, чтобы пинг был меньше (если вам конечно не принципиально в какой стране у вас будет VPN).
Пресет контейнера выбираем "blank". Можно ещё выбрать версию убунты в контейнере, правда выбор слишком скромный. Либо 18.04, либо 16.04.
Почему только LTS убунты
Arch is the best!
Жалко, что в пресете c PyTorch не выдаётся GPU...
Остальные настройки оставляем дефолтными. Создаём контейнер и через несколько секунд оказываемся в ide.
IDE
В верхнем меню выбираем Container -> SSH Configuration
Откроется модал в котором будет команда для подключения по SSH.
Можно подключиться через терминал, чтобы автоматически добавить хост в доверенные.
Состояние контейнера сохраняется после его выключения. Поэтому для себя я создал ещё одного пользователя с удобным для меня паролем и подключаюсь через него.
sudo pacman -S sshuttle
После установки выполним следующую команду:
sshuttle -r sshuser@IP:PORT -x IP 0/0 -v --dns
Вместо IP и PORT подставляете данные от своего контейнера. Сначала вам потребуется ввести пароль от вашего, локального root юзера, а затем пароль от пользователя запущенного контейнера.
Открываем любой определитель IP адреса и видим, то, что IPv4 изменился, а IPv6 - нет
Разработчики sshuttle утверждают, что IPv6 поддерживается, но конкретно у меня - IPv6 не поменялся. К сожалению большинство сайтов определяют регион по IPv6, в том числе и DPI проверяет трафик, идущий через IPv6.
Но это можно исправить.
Покажу, как это сделать на примере Firefox.
Открываем страницу about:config и в поиске вводим: network.dns.disableIPv6
и переключаем его на "true".
После перезапуска браузера видим, что всё работает
Если всё ещё не работает
Если всё ещё не работает, то проверьте, не включен ли у вас QUIC (HTTP/3). QUIC использует UDP, а sshuttle не умеет работать с таким трафиком.
И все сайты заблокированные со стороны РФ, так же работают.
Но я не думаю, что кому - то нужен VPN, который работает постоянно, даже когда вы не у компьютера.
Для бесплатного VPN скорость достаточная. Важно, что она стабильная.
В самом контейнере около 650 мб/c
Меня полностью устраивает способ, который я изложил в этой статье (сейчас я только им и пользуюсь).
Касательно запуска OpenVPN и подобных. У goorm есть возможность пробрасывать порты.
Для теста пробросил 2 http порта
Времени протестировать OpenVPN не было. Он должен запустится и работать, но я не знаю, как к этому отнесётся администрация goorm. В правилах про VPN через из контейнеры я ничего не нашёл.
Написано про прокси, но, как причина для блокировки "высокая нагрузка". Если будет время, то проверю OpenVPN.
Надеюсь, статья была интересная, а главное полезная.
VPN через SSH
На данный момент DPI (Deep packet inspection) умеет блокировать не только конкретные ресурсы, но и протоколы обмена информацией. При этом есть протокол, который вряд ли заблокируют - SSH. Блокировка данного протокола невозможна без катастрофических последствий для всей инфраструктуры.SSH
SSH (secure shell) - протокол для удалённого управления операционной системы на основе TCP. Похож на telnet, но все пакеты шифруются, что делает его безопасным.
SSH "из коробки" работает с шифрованием, поэтому мы можем не беспокоиться за безопасность своего трафика.
Существуют разные инструменты для реализации VPN через SSH, я остановлюсь на
Для просмотра ссылки необходимо нажать
Вход или Регистрация
. Преимущества sshuttle:- не требует ничего от сервера (просто запущенный ssh сервер)
- Работает везде, в том числе OpenWRT и Windows (должно работать)
- Поддерживает тунелирование DNS запросов
VPS
Для того, чтобы поднять VPN для себя хватит любого самого дешёвого сервера с белым IP. Но мы хотим всё сделать бесплатно, поэтому отбрасываем этот вариант.Есть Корейский
Для просмотра ссылки необходимо нажать
Вход или Регистрация
, который позволяет внутри докера запускать свой код на различных языках программирования. По сути
Для просмотра ссылки необходимо нажать
Вход или Регистрация
, но
Для просмотра ссылки необходимо нажать
Вход или Регистрация
позволяет официально запускать ssh сервер из их контейнера, а следовательно предоставляет белый IP адрес.Goorm.io
Проходим простую регистрацию.Кстати goorm.io пропускает для регистрации временные почты.
Далее переходим в
Для просмотра ссылки необходимо нажать
Вход или Регистрация
, и создаём новый контейнер.На выбор есть 4 региона расположения сервера (точнее расположения амазоновского инстанса на котором будет запущен ваш контейнер). Нам нужно выбрать ближайший к нам, чтобы пинг был меньше (если вам конечно не принципиально в какой стране у вас будет VPN).
Пресет контейнера выбираем "blank". Можно ещё выбрать версию убунты в контейнере, правда выбор слишком скромный. Либо 18.04, либо 16.04.
Почему только LTS убунты
Arch is the best!
Остальные настройки оставляем дефолтными. Создаём контейнер и через несколько секунд оказываемся в ide.
В верхнем меню выбираем Container -> SSH Configuration
Откроется модал в котором будет команда для подключения по SSH.
Можно подключиться через терминал, чтобы автоматически добавить хост в доверенные.
Состояние контейнера сохраняется после его выключения. Поэтому для себя я создал ещё одного пользователя с удобным для меня паролем и подключаюсь через него.
SSHUTTLE
В
Для просмотра ссылки необходимо нажать
Вход или Регистрация
есть команды для установки утилиты практически на любую операционную систему. Здесь приведу только пример для лучшего дистрибутива.sudo pacman -S sshuttle
После установки выполним следующую команду:
sshuttle -r sshuser@IP:PORT -x IP 0/0 -v --dns
Вместо IP и PORT подставляете данные от своего контейнера. Сначала вам потребуется ввести пароль от вашего, локального root юзера, а затем пароль от пользователя запущенного контейнера.
Открываем любой определитель IP адреса и видим, то, что IPv4 изменился, а IPv6 - нет
Разработчики sshuttle утверждают, что IPv6 поддерживается, но конкретно у меня - IPv6 не поменялся. К сожалению большинство сайтов определяют регион по IPv6, в том числе и DPI проверяет трафик, идущий через IPv6.
Но это можно исправить.
IPv6
Возможно есть более удобный способ исправить данную проблему. Моё решение - отключить IPv6 на стороне браузера, т.е. запретить ему использовать IPv6 в принципе.Покажу, как это сделать на примере Firefox.
Открываем страницу about:config и в поиске вводим: network.dns.disableIPv6
и переключаем его на "true".
После перезапуска браузера видим, что всё работает
Если всё ещё не работает, то проверьте, не включен ли у вас QUIC (HTTP/3). QUIC использует UDP, а sshuttle не умеет работать с таким трафиком.
И все сайты заблокированные со стороны РФ, так же работают.
Бенчмарк
Контейнер может работать 24/7, если у вас открыта вкладка в браузере с его ide. А в платной подписке его можно заставить работать всегда при любых условиях.Но я не думаю, что кому - то нужен VPN, который работает постоянно, даже когда вы не у компьютера.
Для бесплатного VPN скорость достаточная. Важно, что она стабильная.
Выводы
К сожалению в текущих реалиях, даже платная подписка на хороший VPN не гарантирует, что он будет работать стабильно, так как его могут в любой момент заблокировать.Меня полностью устраивает способ, который я изложил в этой статье (сейчас я только им и пользуюсь).
Касательно запуска OpenVPN и подобных. У goorm есть возможность пробрасывать порты.
Времени протестировать OpenVPN не было. Он должен запустится и работать, но я не знаю, как к этому отнесётся администрация goorm. В правилах про VPN через из контейнеры я ничего не нашёл.
Написано про прокси, но, как причина для блокировки "высокая нагрузка". Если будет время, то проверю OpenVPN.
Надеюсь, статья была интересная, а главное полезная.
Для просмотра ссылки необходимо нажать
Вход или Регистрация
Для просмотра ссылки необходимо нажать
Вход или Регистрация