VUPEN

XTLS Reality

Reality решает задачу, с которой не справляется обычный TLS: сделать так, чтобы соединение со стороны было неотличимо от обращения к настоящему популярному сайту — и при этом не требовать ни своего домена, ни выпущенного сертификата.

Проблема обычного TLS

Сервер с самоподписанным сертификатом виден сразу: наблюдателю достаточно посмотреть на сертификат в ответе. Сервер с настоящим сертификатом выглядит лучше, но выдаёт себя иначе — по домену, который никто, кроме вас, не посещает, по возрасту домена, по отсутствию нормального сайта за ним.

Отдельная проблема — активное зондирование: наблюдатель сам подключается к подозрительному адресу и смотрит на реакцию. Обычный прокси на неправильный запрос отвечает не так, как отвечал бы веб-сервер, и этим себя обнаруживает.

Что делает Reality

Reality не выпускает собственный сертификат. Вместо этого сервер при рукопожатии выступает посредником: он обращается к настоящему стороннему сайту, указанному в параметре dest, и отдаёт клиенту его подлинный сертификат и его подлинные параметры TLS.

Со стороны это выглядит как обычное обращение к, скажем, крупному CDN или сайту известной компании: настоящий домен, настоящий сертификат, настоящая цепочка доверия. Проверить сертификат недостаточно, потому что он не поддельный — он чужой и настоящий.

Клиент, знающий публичный ключ, вставляет в рукопожатие короткую метку, которую сервер распознаёт и переключает соединение на туннель. Клиент без ключа получает ровно то, что получил бы от настоящего сайта, — именно поэтому активное зондирование ничего не даёт.

Параметры конфигурации

ПараметрЧто задаёт
dest Настоящий сайт, чьё TLS-рукопожатие заимствуется. Должен поддерживать TLS 1.3 и HTTP/2, быть доступен с сервера и не быть заблокирован в стране пользователя.
serverNames Допустимые значения SNI. Клиент обязан прислать одно из них, иначе соединение уйдёт на настоящий сайт.
privateKey / publicKey Пара ключей X25519. Приватный хранится на сервере, публичный (pbk) попадает в ссылку подписки.
shortIds Короткие метки, по которым сервер отличает своих клиентов. В ссылке — параметр sid.
fingerprint Отпечаток TLS-клиента (chrome, firefox, safari). Задаёт порядок расширений в рукопожатии, чтобы оно совпадало с браузерным.

Почему выбор dest важнее остального

Reality наследует репутацию сайта, под который маскируется. Отсюда практические требования:

Ошибка в dest — самая частая причина, по которой Reality работает, но соединение всё равно ведёт себя подозрительно: сайт-донор недоступен из страны клиента, и картина не сходится.

Reality и Vision

Reality почти всегда используют вместе с flow=xtls-rprx-vision и транспортом raw. Reality отвечает за то, как выглядит начало соединения, Vision — за то, чтобы дальше не тратить ресурсы на повторное шифрование уже зашифрованного трафика. Вместе это даёт наименьшую задержку из доступных сочетаний. Подробнее — в разборе VLESS.

Чего Reality не делает

Reality маскирует соединение, но не скрывает объём трафика и его временной рисунок. Он не защищает от компрометации самого сервера и не отменяет того, что владелец сервера технически видит источник соединений. Это инструмент маскировки транспорта, а не анонимности.

Что дальше

Как устроен VLESS · Сравнение транспортов · Клиенты и импорт подписки