YouTube для мамы: VLESS + Reality без боли, консолей и конфигов

от автора

Без лишних прелюдий: сегодня расскажу, как я вернул себе нормальный YouTube, а главное — поделился этой возможностью со своими родителями, которые в маршрутизации, протоколах и “этих ваших VPN-ах” не понимают вообще ничего.

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

Сразу оговорюсь: я не сетевой инженер в классическом понимании этого слова. Моя стихия — это скорее автоматизация и написание скриптов. Но, хвала нынешней ситуации (сарказм), новые ограничения отлично мотивируют к просвещению. И, уверен, я такой не один.

Вместо введения: почему “классика” больше не работает

Не секрет, что стандартные VPN-сервисы вроде OpenVPN или популярного WireGuard уже не так эффективны. Их сигнатуры научились выявлять системы глубокого анализа трафика (пресловутый ТСПУ), их банят по IP, ограничивают по скорости или просто “режут” на уровне провайдера.

Да, можно скакать с одного сервиса на другой, но есть риски. Купил подписку, через месяц сервис попал под ковровую блокировку, а деньги застряли. Другое дело — свой собственный сервер. На нем ты уже делаешь что хочешь (в рамках действующего законодательства, разумеется).

По стоимости аренда простенькой VPS за рубежом выходит не дороже платной подписки на средненький VPN. При этом бонусом вы получаете площадку, где можно хранить свои данные, поднимать пет-проекты или ботов. В общем — сплошные плюсы.

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

Что такое VLESS + Reality 

Чтобы вы не чувствовали себя, как на уроке Химии, когда пропустили пару занятий из-за болезни, а там уже разбирают ковалентные связи, хотя на последнем занятии, когда вы присутствовали, вы изучали биографию Менделеева, немного теории.

Чтобы понять, откуда взялся VLESS, давайте быстро пробежимся по типам существующих протоколов.

  • OpenVPN и IPsec: Это классика. Тяжеловесные, надежные, корпоративные. Они шифруют трафик намертво, но у них есть недостаток в современных реалиях — они слишком громкие. Их процесс установки соединения имеет четкую структуру, которую системы глубокого анализа трафика видят.

  • WireGuard: Быстрый, легкий, модный. Идеален для связи вашей дачи с домашним сервером. Но для обхода цензуры он не задумывался от слова совсем. У него предсказуемые размеры первых пакетов. Цензорам даже не нужно вскрывать шифрование — они просто видят знакомый паттерн и… Дальше нет смысла продолжать.

  • Shadowsocks: Первый серьезный ответ китайских энтузиастов на Великий Китайский Файрвол. Он превращает трафик в нечитаемый «белый шум». Долгое время это спасало, пока ТСПУ не поумнели и не начали применять активные пробы. ТСПУ не просто пассивно слушал трафик, он начинал активно “стучаться” в подозрительные порты. Цензор брал пакет из вашей сессии, немного изменял в нем зашифрованную часть и отправлял на ваш сервер. Легитимный веб-сервер, получив такую кашу вместо нормального TLS-хэндшейка, выдал стандартную ошибку прикладного уровня. Но прокси-сервер, ожидавший строгую структуру шифрования Shadowsocks, при получении битого пакета вел себя нетипично — он либо выдавал специфическую ошибку авторизации, либо тупо рвал TCP-соединение RST-пакетом без объяснения причин. Эта разница в реакции и становилась сигнатурой по которой вычисляют этот протокол.

  • Trojan и VMess: Следующая ступень эволюции. Инженеры поняли, что выглядеть как «белый шум» подозрительно. Нужно выглядеть как обычный HTTPS-сайт. Trojan прятал трафик внутри стандартного веб-соединения. Но это было тяжело в настройке: нужен был свой домен, настоящий веб-сервер (Nginx), покупка сертификатов. В целом это работает и сейчас, но нужно повозиться.

И тут на сцену выходит VLESS

Что же такое VLESS? Название говорит само за себя — это протокол, из которого выкинули всё лишнее (less — меньше).

Строго говоря, VLESS — это даже не протокол шифрования. Это максимально легкий и примитивный транспорт (протокол передачи). Разработчики VLESS приняли гениальное решение: зачем нагружать протокол собственным шифрованием, если мы всё равно будем оборачивать его в стандартный HTTPS (TLS), который и так отлично зашифрован?

VLESS — это просто «пустая труба», которая не имеет абсолютно никаких собственных сигнатур и опознавательных знаков. Он работает молниеносно.

Но сама по себе «пустая труба» беззащитна. Чтобы она безопасно прошла через все кордоны провайдера, её нужно во что-то завернуть. И вот тут в связке с VLESS подключается Reality.

Технология Reality не просто шифрует трафик. Она осуществляет подмену SNI (Server Name Indication) и маскирует ваше соединение под абсолютно легитимное обращение к крупному белому ресурсу.

Для провайдера ваш трафик выглядит так, будто вы просто зашли почитать документацию на microsoft.com или скачиваете обновления с серверов Apple (смотря что конкретно вы настроите). Соединение устанавливается по стандарту TLS 1.3, пакеты не имеют подозрительных паттернов, а в случае активной пробы (если DPI попытается “постучаться” на ваш сервер) — сервер прикинется шлангом и перенаправит проверяющего на настоящий сайт Microsoft. Маскировка уровня Бог (по крайней мере мне так кажется). 

И самое главное отличие от Trojan — вам больше не нужно покупать собственный домен и настраивать веб-сервер. Reality позволяет «паразитировать» на чужих сертификатах. Вы буквально берете публичный сертификат Microsoft или Apple и заставляете цензоров думать, что он ваш. Это избавляет от кучи головной боли при настройке. 

Практика: Поднимаем сервер за 10 минут

Вроде с теорией закончили, можно переходить к практике. 

Раньше, чтобы поднять свой прокси, нужно было быть уверенным пользователем Linux: ковырять конфиги через nano, настраивать сертификаты через Let’s Encrypt, и возиться с Nginx.

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

Шаг 1. Сервер и порты 

Нам понадобится любой зарубежный VPS. Выбирайте самый дешевый тариф — для наших задач хватит 1 ядра и 512 Мб оперативки. Там ведь чем дороже, тем сложнее модификация сервака.

Важный нюанс: у многих хостеров есть внешний файрвол. Поэтому помимо настроек, о которых я расскажу дальше, нужно будет в панели управления хостингом открыть два порта: один для панели управления (любой от 10000 до 60000), а второй для трафика — строго 443 (TCP/UDP). У каждого хостера настройки свои, так что с этим вам поможет их поддержка, если не разберетесь как открыть эти порты.

Шаг 2. Установка мозгов 

Я уже говорил что не инженер и мне больше нравиться когда перед глазами есть панель управления, а не терминал, собственно можно пойти по моему пути — поставить панель 3X-UI

Это графический интерфейс, где можно мышкой создавать профили, контролировать трафик и в целом через 3X-UI намного удобнее взаимодействовать с сервером, чем через терминал.

Подключаемся к серверу и устанавливаем панель 3X-UI, делается это такой командой — прописываете ее в терминале.

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

Дальше отвечаем на вопросы, скрипт спросит логин, пароль и порт для панели. Придумываем, вводим. Всё, серверная часть установлена! Можем переходить к настройке вашего подключения.

Шаг 3. Настраиваем Reality 

Открываем браузер, вводим http://IP_вашего_сервера:ПОРТ, логинимся и переходим в раздел Inbounds (Входящие подключения), где создаем новое подключение:

Protocol: vless.

Port: 443 (Это критично. Reality должен работать на стандартном порту HTTPS, иначе вся маскировка рассыплется).

Security: reality.

В блоке Reality выбираем uTLS: chrome (имитируем рукопожатие браузера Chrome).

Target и SNI: прописываем сайт-донор, на котором будем паразитировать. Например, www.microsoft.com:443 и www.microsoft.com соответственно (есть ощущение что на этом этапе можно использовать какой то российский домен, но честно я не пробовал, а ломать уже существующее, работающее соединение не хочу).

Нажимаем Get new cert (генерация ключей) и на кнопку генерации ShortID (расположена рядом с этим полем).

В настройках клиента (внизу) обязательно выбираем Flow: xtls-rprx-vision. Эта штука прячет специфические тайминги и размеры пакетов внутри нашего TLS-туннеля. Жмем “Создать”.

Критический шаг: Прячем панель от сканеров

Чтобы IP-адрес вашего сервера не улетел в бан до того, как вы начнете с ним что либо предпринимать, рекомендую спрятать панель? Для чего?

ТСПУ постоянно сканирует интернет. Оно стучится на открытый порт вашей панели (например, 54321), видит там интерфейс инструмента для обхода блокировок и заносит ваш IP в черный список.

Собственно чтобы этого не произошло, нам и нужно спрятать панель. Заходим в настройки 3X-UI (Panel Settings) -> Настройки безопасности. Находим поле URI Path и вписываем туда любую случайную фразу со слешами. Например: /my-secret-door/.

Сохраняем и перезапускаем панель. Что изменилось? Теперь, если бот-цензор постучится на ваш порт http://IP:54321/, сервер выдаст ему ошибку «404 Not Found». Панель откроется только в том случае, если вы введете точный адрес: http://IP:54321/my-secret-door/.

Клиентская часть: “Кнопка сделать хорошо” для родителей

Самая частая проблема самодельных решений — как объяснить маме или жене, что такое ключи x25519 или почему нужно переключать режим TUN. Ответ тут до банального прост: никак вы им это не объясните. В лучшем случае махнут рукой и продолжат “Соловьева своего смотреть”. Им нужен работающий запретограм или YouTube без танцев с бубном.

Для клиентской части я остановился на приложении Hiddify. У него простой интерфейс и самонастраивающаяся система (там просто ставим Россия и он подстраивается под блокировки в России — где не нужно — трафик идет с вашего родного IP-адреса).

Процесс передачи настроек до конечного потребителя (в нашем случае близкие, технически неподготовленные родственники), выглядит так:

  1. В нашей панели 3X-UI нажимаем на QR-код профиля и копируем ссылку (она начинается на vless://...).

  2. Отправляем эту ссылку родителям в мессенджер с инструкцией: “Скачай Hiddify, нажми плюсик в правом верхнем углу → «Добавить из буфера обмена». А теперь жми огромную круглую кнопку посередине экрана”.

  3. Всё. Соединение установлено.

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

Итоги

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

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

ссылка на оригинал статьи https://habr.com/ru/articles/1025588/