Когда все вокруг маскировались под HTTPS-сайты, Reality пошёл другим путём: он заставил DPI поверить, что соединение идёт к настоящему легитимному серверу, а не к прокси. И сделал это без поддельных сертификатов.
Проблема. Классические обфускации (WebSocket + TLS, CDN-прокси) упираются в одну вещь: DPI научился отличать «левый» TLS от «правого» по отпечатку handshake, по версиям протоколов, по cipher suites. Если ваш клиент говорит серверу «я Chrome 116», а на самом деле его стек сгенерирован Go-библиотекой — это видно по таймингам и порядку расширений. Reality решил не подделывать指纹, а «прикрепиться» к реальному TLS-рукопожатию существующего сайта.
Как работает. Клиент не устанавливает своё TLS-соединение. Он дёргает реальный HTTPS-сервер (например, microsoft.com), получает его настоящий ServerHello, но в последний момент перенаправляет поток на свой прокси-сервер. DPI видит: рукопожатие прошло к microsoft, cipher suite стандартный, версия TLS 1.3 — всё чисто. Потом трафик идёт уже через XTLS-туннель, но на уровне пакетов это легитимный TLS до того же домена. Никаких поддельных сертификатов, никаких «прокси-доказательств».
Ключевое отличие от соседей. Trojan и VLESS с TLS всё равно требуют, чтобы клиент и сервер обменялись ключами в рамках своего соединения. Reality же использует «чужое» рукопожатие, к которому DPI не может придраться. Плюс у Reality есть механизм short ID — короткая метка, которая вшивается в начало потока без нарушения handshake. Это позволяет серверу отличить «своего» клиента от случайного посетителя.
Сильные стороны. Практически неотличим от обычного HTTPS к крупному сайту. Не требует резервирования собственного домена и сертификата. Стабильно работает под Deep Packet Inspection в Китае, Иране, ОАЭ. Легко настраивается в XRay-клиентах.
Слабые. Если DPI начнёт анализировать статистику соединений — клиент Reality висит на сайте без перерыва сутками, а обычный пользователь так не делает. Требует выбора «целевого» сайта, который не блокирован и имеет высокую посещаемость, иначе подозрение. Не поддерживает UDP нативно (только через конвертацию в TCP).
Статус. Активно развивается, входит в XRay-core с версии 1.8.0. Рекомендован для регионов с жёстким DPI. Не устарел, но требует понимания, что ты делаешь.
Нетривиальный вопрос. Reality обходит DPI, но что делать, если DPI начнёт проверять не только рукопожатие, а весь паттерн трафика — размеры пакетов, интервалы, количество RST? Пока никто не предложил решения, кроме «ещё большего шумоподобия». Возможно, будущее за протоколами, которые вообще не имеют фиксированных паттернов.