Оформить доступ
Параметр строки · sni

Reality: как соединение выглядит со стороны

Reality — не отдельный протокол, а режим защитного слоя. Его задача проста: со стороны ваше соединение должно походить на обращение к чужому сайту, который живёт в сети давно. Имя этого сайта и стоит в поле sni.

Короткий ответ

Имя чужого сайта в вашей строке — это прикрытие, а не адрес, куда пойдёт трафик. Идёте вы по адресу, который стоит после собачки.

  • Reality меняет ВИД соединения, а не его крепость. Содержимое закрыто так же, как и без него — чем именно.
  • Серверу при Reality не нужен собственный сертификат. Это главное практическое отличие от привычной схемы.
  • Не нужно покупать домен, подтверждать владение им и следить за сроком продления.
  • Нечему протухнуть в неподходящий момент. Самая обидная поломка обычных связок — просроченный сертификат — здесь исключена по устройству.
  • Значение поля назначает сервер. Подставить туда другое имя и остаться на связи не получится.

Почему это вообще работает

Наблюдателю со стороны видно немногое, и по этому немногому он делает выводы.

Свежевыпущенный и самоподписанный сертификат в общем потоке выделяется. Чужой сайт, который стоит в сети годами, — нет.

Что означает поле sni

Имя, которым соединение представляется в самом начале разговора. Проще говоря — вывеска.

При Reality вывеской берут имя настоящего постороннего сайта. Тот сайт про это не знает, и трафик к нему не идёт.

Наблюдатель со стороны видит знакомое имя и не находит в соединении ничего необычного.

Почему рядом стоят ещё какие-то короткие поля

Потому что одной вывески мало: сторонам надо подтвердить друг другу, что они те самые. За это отвечают ещё пара коротких значений рядом, например pbk.

Их смысл для читателя ровно один: это выданные сервером величины, которые должны совпасть. Ни подобрать, ни исправить их со своей стороны нельзя.

Можно ли поставить в поле имя любимого сайта

Нет. Значение должно совпадать с тем, на что настроен сервер, иначе соединение просто не установится.

Ошибка в любом параметре ломает строку целиком — это общее правило, и Reality от него не освобождён.

Reality и обычный защищённый слой

Различие практическое, а не идеологическое.

ВопросОбычный слойReality
Нужен ли серверу свой сертификатДаНет
Нужен ли купленный доменДаНет
Может ли протухнуть срокДа, и это частая поломкаНечему протухать
Насколько крепко закрыто содержимоеОдинаковоОдинаково
Как выглядит со стороныКак соединение с вашим серверомКак обращение к чужому известному сайту

Чем это отличается от подхода Trojan

Trojan решает ту же задачу маскировки с другого конца: он выдаёт себя за обычный защищённый запрос к веб-серверу.

Но для этого ему нужен настоящий домен и настоящий сертификат — то самое, от чего Reality избавляет. Отсюда и разница в хлопотах у того, кто поднимает сервер.

Для вас как для читателя строки разница простая: в строке будет стоять другое первое слово.

Короткие ответы

Мой трафик правда идёт на тот сайт, чьё имя стоит в строке?

Нет. Трафик идёт по адресу после собачки. Имя в поле — только вывеска для наблюдателя со стороны.

Reality надёжнее обычного слоя?

Спор между ними идёт не о надёжности шифра, а о том, как соединение выглядит снаружи. Содержимое в обоих случаях закрыто.

Почему у меня в строке нет слова reality?

Значит, сервер настроен на другой защитный слой. Это нормально: что вообще бывает в этом поле.

Reality и Vision — это одно и то же?

Нет, это разные вещи и разные поля строки. Reality отвечает за вид соединения снаружи, а Vision — за то, как поток устроен внутри.

Нужен ли для Reality какой-то сертификат на моём устройстве?

Нет. Обычному подключению системные сертификаты не нужны вовсе, а просьбу поставить «корневой сертификат» надо считать тревожным сигналом.