Почему один сервер проигрывает распределённой сети в борьбе с блокировками
Вопрос, который рано или поздно встаёт перед любой командой, делающей собственный сетевой сервис: зачем городить распределённую архитектуру, если можно поднять один сервер и раздавать доступ с него? Ответ про отказоустойчивость звучит скучно. Но есть причина, о которой говорят реже, хотя именно она определяет всю конструкцию.
Уединённый сервер с постоянным IP кажется удобным до тех пор, пока адрес не попадает в чей-то список блокировки. А попадает он быстро: DPI-оборудованию не нужно разбирать содержимое каждого пакета, достаточно увидеть характерный паттерн трафика и посмотреть, куда он направляется. Адресов мало, их можно выявлять и резать по одному.
Простое увеличение числа серверов проблему не решает. Даже десяток машин — это конечный, медленно меняющийся набор адресов. Блокирующая сторона спокойно поддерживает свой список в актуальном состоянии, а если инфраструктура стоит у одного провайдера, один щелчок выключает сразу всё.
А вот если транспортную сеть образуют сами клиенты, задача заметно усложняется. Устройства пользователей не просто подключаются к сети — они становятся её узлами и ретранслируют трафик друг друга, как когда-то делал Skype. Стабильного списка адресов у такого mesh нет: состав участников постоянно меняется вместе с людьми. Отдельный узел по-прежнему можно найти и заблокировать, но найденный список устаревает быстрее, чем его успевают использовать.
Полностью от выделенной инфраструктуры в такой схеме не отказываются. Просто её роль меняется: опорная сеть занимается доверием и координацией, подсказывает клиенту, какой конфигурации можно верить, и обеспечивает выход трафика наружу.
Распределённость сама по себе не спасает, если соединения легко распознаются как «те самые». Поэтому рядом с mesh работают другие механизмы — ротация ClientHello, decoy-трафик и прочее, что мешает классификатору. Один слой прячет отдельное соединение от DPI, другой не даёт блокировке превратиться в ведение короткого списка серверных адресов.
За устойчивость приходится платить. Когда устройство пропускает чужой транзитный трафик, оно тратит свой канал и батарею — на мобильных это особенно заметно. Плюс эксплуатационная головная боль: каждый клиент — не полноценный сервер.
Точных цифр никто не назовёт — всё зависит от того, сколько чужого трафика проходит через устройство. Но вывод простой: mesh переносит часть нагрузки с выделенной инфраструктуры на пользователей и заметно усложняет систему. Это осознанный размен, а не бесплатный способ стать неуязвимым.
Комментарии (0)
Комментариев пока нет — будьте первым!
Только авторизованные пользователи могут оставлять комментарии.