Защита корпоративной сети, снижение нагрузки на каналы обмена информацией, маскировка трафика, преодоление блокировок — эти и множество других задач решаются и в том числе с помощью прокси-протоколов и технологий. Мы постоянно следим за существующими решениями, их развитием, а также за появлением новых. И поверьте, в этой сфере есть много интересных моментов.
Делимся с вами разнообразием протоколов и технологий, которые используются при работе прокси. Также сделаем краткий обзор каждого из них, чтобы вы могли понять их отличительные особенности, что будет полезным подспорьем при выборе подходящего решения.
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. Также информация о нем — выше.
Сочетание разных протоколов, транспортов и расширений наделяет эти фреймворки внушительным арсеналом возможностей. Среди них: более эффективная передача UDP-пакетов и очень надежная защита от детектирования (uTLS на основе механизма TLS fingerprint или XTLS). Видно, что протоколы для прокси — тема обширнейшая. И если копнуть вглубь, можно закопаться в нее всерьез и надолго. Как правило, простому пользователю это не нужно. Главное — выбрать надежного поставщика услуг и арендовать у него правильные прокси, адаптированные под ваши нужды. А слежение за трендами, выбор эффективных способов защиты информации, предотвращения детектирования, преодоления препядствий и т.д. — это уже его дело. Именно такого мнения мы придерживаемся у себя в компании. Пусть клиенты наслаждаются качественными прокси, а мы будем следить за трендами в этой сфере и обеспечивать для своих proxy, предлагаемых в аренду, необходимые качественные показатели.