Reality: как соединение выглядит со стороны
Reality — не отдельный протокол, а режим защитного слоя. Его задача проста: со стороны ваше соединение должно походить на обращение к чужому сайту, который живёт в сети давно. Имя этого сайта и стоит в поле sni.
Короткий ответ
Имя чужого сайта в вашей строке — это прикрытие, а не адрес, куда пойдёт трафик. Идёте вы по адресу, который стоит после собачки.
- Reality меняет ВИД соединения, а не его крепость. Содержимое закрыто так же, как и без него — чем именно.
- Серверу при Reality не нужен собственный сертификат. Это главное практическое отличие от привычной схемы.
- Не нужно покупать домен, подтверждать владение им и следить за сроком продления.
- Нечему протухнуть в неподходящий момент. Самая обидная поломка обычных связок — просроченный сертификат — здесь исключена по устройству.
- Значение поля назначает сервер. Подставить туда другое имя и остаться на связи не получится.
Почему это вообще работает
Наблюдателю со стороны видно немногое, и по этому немногому он делает выводы.
Что означает поле sni
Имя, которым соединение представляется в самом начале разговора. Проще говоря — вывеска.
При Reality вывеской берут имя настоящего постороннего сайта. Тот сайт про это не знает, и трафик к нему не идёт.
Наблюдатель со стороны видит знакомое имя и не находит в соединении ничего необычного.
Почему рядом стоят ещё какие-то короткие поля
Потому что одной вывески мало: сторонам надо подтвердить друг другу, что они те самые. За это отвечают ещё пара коротких значений рядом, например pbk.
Их смысл для читателя ровно один: это выданные сервером величины, которые должны совпасть. Ни подобрать, ни исправить их со своей стороны нельзя.
Можно ли поставить в поле имя любимого сайта
Нет. Значение должно совпадать с тем, на что настроен сервер, иначе соединение просто не установится.
Ошибка в любом параметре ломает строку целиком — это общее правило, и Reality от него не освобождён.
Reality и обычный защищённый слой
Различие практическое, а не идеологическое.
| Вопрос | Обычный слой | Reality |
|---|---|---|
| Нужен ли серверу свой сертификат | Да | Нет |
| Нужен ли купленный домен | Да | Нет |
| Может ли протухнуть срок | Да, и это частая поломка | Нечему протухать |
| Насколько крепко закрыто содержимое | Одинаково | Одинаково |
| Как выглядит со стороны | Как соединение с вашим сервером | Как обращение к чужому известному сайту |
Чем это отличается от подхода Trojan
Trojan решает ту же задачу маскировки с другого конца: он выдаёт себя за обычный защищённый запрос к веб-серверу.
Но для этого ему нужен настоящий домен и настоящий сертификат — то самое, от чего Reality избавляет. Отсюда и разница в хлопотах у того, кто поднимает сервер.
Для вас как для читателя строки разница простая: в строке будет стоять другое первое слово.
Короткие ответы
Мой трафик правда идёт на тот сайт, чьё имя стоит в строке?
Нет. Трафик идёт по адресу после собачки. Имя в поле — только вывеска для наблюдателя со стороны.
Reality надёжнее обычного слоя?
Спор между ними идёт не о надёжности шифра, а о том, как соединение выглядит снаружи. Содержимое в обоих случаях закрыто.
Почему у меня в строке нет слова reality?
Значит, сервер настроен на другой защитный слой. Это нормально: что вообще бывает в этом поле.
Reality и Vision — это одно и то же?
Нет, это разные вещи и разные поля строки. Reality отвечает за вид соединения снаружи, а Vision — за то, как поток устроен внутри.
Нужен ли для Reality какой-то сертификат на моём устройстве?
Нет. Обычному подключению системные сертификаты не нужны вовсе, а просьбу поставить «корневой сертификат» надо считать тревожным сигналом.