Защита корпоративной сети, снижение нагрузки на каналы обмена информацией, маскировка трафика, преодоление блокировок — эти и множество других задач решаются и в том числе с помощью прокси-протоколов и технологий. Мы постоянно следим за существующими решениями, их развитием, а также за появлением новых. И поверьте, в этой сфере есть много интересных моментов.
Делимся с вами разнообразием протоколов и технологий, которые используются при работе прокси. Также сделаем краткий обзор каждого из них, чтобы вы могли понять их отличительные особенности, что будет полезным подспорьем при выборе подходящего решения. Если вы ещё не разобрались с базовыми протоколами — начните со сравнения HTTP, HTTPS и SOCKS5.
Shadowsocks: «прародитель» многих современных прокси-протоколов
Разработанный в 2015 году (первоначальная цель его создания — преодоление препядствий), протокол Shadowsocks получил серьезную популярность. Кратко его можно охарактеризовать так:
- SOCKS в основе.
- К нему добавлен набор алгоритмов для шифрования данных. Такой подход позволяет, в том числе нивелировать главную особенность SOCKS — легкость детектирования из-за того, что передача данных при его применении происходит в открытом виде.
- Помимо шифрования используются и другие технологии, затрудняющие детектирование.
- Удалены лишние функции и технологии (например, авторизация с помощью логина и пароля).
Одна из его главных особенностей — способ кодирования данных. Если смотреть на подключение, созданное через Shadowsocks, со стороны, поток данных здесь выглядит, как что-то непонятное. За счет этого и обеспечивается достижение его целей. К слову, сейчас подобные «нечто» многие системы цензурирования и блокировки уже умеют выявлять.
Просуществовал он «в чистом виде» относительно недолго: создатель протокола, китайский разработчик, удалил исходники с Гитхаба, т.к. «к нему пришли».
Но процесс было уже не остановить... Заинтересованные разработчики начали штамповать форки Shadowsocks. В результате этого появились:
- ShadowsocksR. Здесь пофиксили ряд уязвимостей, которые могли использоваться для детектирования и блокировки.
- Shadowsocks-AEAD. Его особенность — измененный алгоритм аутентификации.
- Shadowsocks-2022. Пожалуй, самая свежая версия с улучшенными функциями для защиты от детектирования и блокировки. Но вот с предыдущими она несовместима.
Trojan: «Троянский конь» в обличье протокола и подобные ему
Как и предыдущий протокол, он родом из Китая. И одна из основных целей, ради которых он разрабатывался, — защита от детектирования и обеспечение надежного механизма определения «Свой-Чужой».
Для работы с сессиями здесь используется TLS. После того, как сессия установлена, прокси, использующий этот протокол, ждет от клиента ответ в специальном формате, с хешем секретного ключа. Если он получен — все ОК, сервер работает как proxy. Если же ответ не соответствует ожидаемому, запросы направляются на соседний сервер и происходит имитация «обычной» работы через HTTPS: т.е. сервис работает как троянский конь, не раскрывая себя, что усложняет детектирование.
Трафик этот протокол никак не шифрует, а только обеспечивает идентификацию «Свой-Чужой». Шифрование остается на совести протокола, поверх которого Trojan работает, т.е. TLS в данном случае.
Есть 2 версии протокола: оригинальная, написанная на C++, и называется она Trojan-GFW и Trojan-Go, которая написана на Go.
По похожему принципу работает, например, VLESS в связке с TLS (используется в V2Ray и XRay — более подробно о них читайте ниже). Он также обеспечивает проверку «Свой-Чужой» и обеспечивает паддинг данных, что необходимо для существенного затруднения детектирования. За шифрование в этой паре отвечает TLS.
KCP: протокол, который стоит особняком от других
При его создании разработчики сфокусировались именно на обеспечении надежности при передаче данных. Он работает поверх UDP. Надежность передачи данных здесь сопоставима с TCP. Но у KCP есть важные отличительные особенности. Во-первых, разработчикам удалось снизить ping на 30-40% по сравнению с TCP. Во-вторых, минимальная задержка здесь втрое меньше, чем в случае с TCP.
Что это дает? Помимо надежности при передаче данных (а значит, и защиты) обеспечивается и неплохая устойчивость к механизмам фильтрации, которые могут приводить к блокировкам и существенным замедлениям. Ну и конечно же, такой пинг и минимальная задержка положительно сказываются на возможности использовать протокол при работе через соединения низкого качества.

Не протоколы, а фреймворки
При рассмотрении протоколов для прокси нельзя не упомянуть V2Fly и XRay. Это — своего рода фреймворки, которые объединяют в одном месте различные протоколы, транспорты и расширения для обеспечения новых функций. XRay — это форк V2Fly. А V2Fly, в свою очередь, возник как форк V2Ray. Последний был создан некой Victoria Raymond (реальна она или нет — общественности не известно). Можно сказать, что V2Fly появился вынужденно, после того, как автор V2Ray просто перестала выходить на связь.
Как говорилось выше, эти фреймворки объединяют в одном месте протоколы, транспорты и расширения. За счет этого можно буквально «лепить» прокси с необходимыми вам характеристиками и особенностями из одного бинарного файла для клиента и сервера. Можно выбирать один или несколько протоколов, подходящий транспорт, управлять правилами маршрутизации, выбирать типы подключения, выстраивать цепочки из нескольких серверов, настраивать работу через CDN и т.д.
Вот перечень некоторых протоколов для proxy, которые можно найти под капотом у этих фреймворков:
- VMess — обеспечивает определение «Свой-Чужой». Считается довольно старым и используется не очень активно. Относительно безопасный вариант его применения сегодня VMess-over-Websockets-over-TLS.
- VLESS, который был упомянут выше. Также отвечает за реализацию механизмов определения «Свой-Чужой».
- VLIte. Обеспечивает передачу UDP-пакетов. Неплохо подходит, например для онлайн-игр (при параллельном использовании с одним из двух предыдущих протоколов для TCP). Этот протокол доступен только при использовании V2Ray.
- Shadowsocks, который был описан выше.
- Trojan. Также информация о нем — выше.
- MTProto. Подробнее о MTProto-прокси
Сочетание разных протоколов, транспортов и расширений наделяет эти фреймворки внушительным арсеналом возможностей. Среди них: более эффективная передача UDP-пакетов и очень надежная защита от детектирования (uTLS на основе механизма TLS fingerprint или XTLS). Видно, что протоколы для прокси — тема обширнейшая. И если копнуть вглубь, можно закопаться в нее всерьез и надолго. Как правило, простому пользователю это не нужно. Главное — выбрать надежного поставщика услуг и арендовать у него правильные прокси, адаптированные под ваши нужды. А слежение за трендами, выбор эффективных способов защиты информации, предотвращения детектирования, преодоления препядствий и т.д. — это уже его дело. Именно такого мнения мы придерживаемся у себя в компании. Пусть клиенты наслаждаются качественными прокси, а мы будем следить за трендами в этой сфере и обеспечивать для своих proxy, предлагаемых в аренду, необходимые качественные показатели.

















































































































































