В условиях постоянно усиливающегося государственного контроля над интернетом, проявляющегося, в том числе, в блокировке VPN-протоколов, проблема разработки альтернативных методов подключения становится все более актуальной. Этот вопрос не только теоретический, но и весьма практический. Переехав из России около года назад, я продолжаю активно использовать выстроенную за многие годы домашнюю инфраструктуру. Вплоть до недавнего времени мне достаточно было использовать VPN на базе Wireguard для доступа к домашним сетям, однако периодически наблюдаются определенные аномалии - увеличение потери UDP-пакетов и похоже, что попытки блокировки самого протокола. Хотя в некоторых случаях удается обойти эти проблемы, меняя параметры самодельного клиента Wireguard, общая картина вызывает определенную обеспокоенность. Вот почему сегодня становится крайне важным искать и разрабатывать альтернативные способы доступа к домашним сетям на случай массовой блокировки популярных VPN протоколов.
Один из проверенных временем и надёжных методов, не требующий сложной специализированной инфраструктуры, — это туннелирование TCP-соединений с использованием SSH. Этот протокол является критически важным для стабильности работы интернета, и вероятность его массовой блокировки выглядит крайне малой. Вероятно, наибольшими трудностями, с которыми мы можем столкнуться, являются ограничения на скорость соединения. Однако, даже в этом случае, доступ к домашним сетям будет сохранён, оставляя время для поиска и изучения других возможных решений. Уникальной особенностью SSH является встроенный SOCKS5 прокси-сервер, который предоставляет функционал аналогичный VPN с возможностью реализации split tunneling на уровне отдельных приложений. Именно здесь мы переходим к основной теме нашего обсуждения.
ProxiFyre — это Open Source инструмент, функционирующий как "соксификатор" для приложений, не имеющих встроенной поддержки работы через SOCKS прокси-серверы. Программа является улучшенным вариантом одного из демонстрационных примеров для Windows Packet Filter. В отличие от базовой версии, ProxiFyre обеспечивает поддержку протокола UDP и предлагает функцию одновременного использования нескольких экземпляров SOCKS5 прокси, что существенно расширяет ее функциональные возможности. Приложение в схожем виде существует уже пару лет, но я опубликовал его всего лишь пару недель назад после небольшого ревью. Поводом для публикации стали несколько последовательных запросов на дополнительные функциональные возможности (в частности поддержку UDP), а также скромная надежда на то, что те, кто просит об этих улучшениях, примут посильное участие в дальнейшем развитии проекта.
С целью упрощения работы с ProxiFyre, я добавил возможность настройки конфигурации при помощи файла app-config.json. Данный JSON файл предполагает включение массива конфигураций для разнообразных приложений, что обеспечивает высокую степень гибкости и позволяет вести детальный контроль над настройками интернет-подключения каждого отдельного приложения.
Пример конфигурации:
[
{
"appNames": ["chrome", "chrome_canary"],
"socks5ProxyEndpoint": "158.101.205.51:1080",
"username": "username1",
"password": "password1"
},
{
"appNames": ["firefox", "firefox_dev"],
"socks5ProxyEndpoint": "159.101.205.52:1080",
"username": "username2",
"password": "password2"
}
]
В контексте использования SOCKS5 с SSH, ProxiFyre применяется следующим образом. Предположим, вы подключаетесь к SSH-серверу с использованием команды ssh -D 8080 user@host
. Тогда, с использованием нижеследующего конфигурационного файла, вы сможете направить трафик приложений Google Chrome и RDP-клиента через SSH-тоннель:
[
{
"appNames": ["chrome", "mstsc"],
"socks5ProxyEndpoint": "127.0.0.1:8080"
}
]
Пример с Google Chrome может не вполне отражать все преимущества ProxiFyre, поскольку большинство веб-браузеров уже обладают встроенной поддержкой явной настройки прокси. Вместе с тем, множество других приложений не располагают этой функциональностью. Именно здесь ProxiFyre проявляет свою эффективность, предоставляя возможность конфигурации прокси для всех приложений, обеспечивая тем самым расширенный контроль над настройками интернет-подключения.
Архитектурно ProxiFyre состоит из трех основных проектов:
ndisapi.lib: Адаптированный проект статической библиотеки Windows Packet Filter.
socksify: .NET C++/CLI библиотека классов, реализующая функциональность локального маршрутизатора SOCKS5.
ProxiFyre: простенькое консольное .NET приложение для Windows, использующее функциональность предоставляемую .NET C++/CLI библиотекой классов socksify.
Подробные инструкции по использованию, включая требования к сборке, вы можете найти в README репозитория.
Надеюсь кому-то это приложение окажется полезным в текущих непростых обстоятельствах.
Комментарии (3)
3ycb
31.05.2023 17:15А точно такой же но
с перламутровыми пуговидля Линукса у вас есть?SerpentFly Автор
31.05.2023 17:15К сожалению нет. Для Линукса существует проект tsocks, но без поддержки UDP и похоже заброшен.
watwofluxy
Отлично. Данный вариант скорее всего продержится подольше чем другие по ряду причин. Хотя... кто знает что утворят? Ожидать можно что угодно, вплоть до запрета дышать кислородом.