Личный прокси для чайников: универсальный обход цензуры с помощью VPS, 3X-UI, Reality/CDN и Warp

Карта сокровищ
Карта сокровищ

На фоне прошлогоднего обострения цензуры в РФ, статьи автора MiraclePTR стали глотком свободы для многих русскоязычных айтишников. Я же хочу приоткрыть дверь к свободной информации чуть шире и пригласить "не-технарей" («чайников»), желающих поднять личный прокси‑сервер для обхода цензуры, но дезориентированных обилием информации или остановленных непонятной технической ошибкой.

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

Статья рассчитана на "чайников", не знакомых с предметной областью. Однако и люди "в теме" могут найти нечто полезное (например, чуть более простую настройку проксирования через CloudFlare без необходимости поднимать nginx на VPS).

Если у вас ещё нет личного прокси для обхода цензуры - это знак.

TL;DR; Универсальное решение:

VPS в Европе, панель 3X-UI для управление Xray, прокси VLESS-Reality для прямого соединения, прокси VLESS-tls-grpc для запасного соединения через CDN CludFlare, российский трафик напрямую - либо через цепочку VPS->WARP, доступ к заблокированным в Европе сервисам - через цепочку VPS->WARP

Предисловие

Пару месяцев назад, в телеграмм-чате "амнезии" с обсуждением обхода цензуры, нонейм привёл пример "стоматолога из Чертаново", которому интересно-бы поднять свой сервер, но он "ниасилил" технарские статьи, не готов гуглить ошибки и ему бы понятный мануал: сделай так и всё заработает.

Я и сам своего рода "стоматолог из Чертаново": уже более 15 лет не работаю в IT.

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

Я считаю предлагаемое решение - универсальным. Это моё субъективное мнение, подкреплённое собственным опытом, а также опытом единомышленников (не всех:) из тг-чата , где мы обсуждаем настройку и эксплуатацию разных прокси и ви-пи-энов. (обращаю внимание что это именно чат, не канал, я не являюсь его владельцем/модератором и он не монетизируется в данный момент. Просто место где можно задать вопрос и поделиться опытом по теме.)

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

Выполнение данной инструкции у меня занимает полчаса, у тех кто вообще не в теме - пару вечеров.

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

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

Теория (1/3) Цензура в интернете

Цензура в РФ

В РФ сейчас имеют место судебные и внесудебные блокировки. Явно заблокированные ресурсы можно поискать на сайте РосКомНадзора (РКН). К таким ресурсам относятся, например, известные: нельзяграм, мордокнига, рутрекер.

С внесудебными блокировками всё интереснее. "По периметру" РФ уже стоят "чёрные ящики" - оборудование от РКН - "ТСПУ", которое цензурирует весь пересекающий (по проводам) границу трафик. ТСПУ переводится как Технологические Средства Предотвращения Угроз: всё, что РКН посчитает "угрозой", может быть втихую заблокировано. Так, например, сейчас внесудебно блокируют сервис "HideMy.name", летом 2023 блокировали популярные протоколы OpenVPN и WireGuard, а осенью - в южных регионах - блокировали вообще весь непонятный tcp-трафик.То есть блокировкам подвержены не только ресурсы, но и протоколы передачи данных.

Многие из внесудебных блокировок возобновляются и прекращаются случайным образом.

Более того, к внесудебным блокировкам подключатся провайдеры: есть свидетельства внесудебной цензуры трафика внутри страны. Делают ли они это по своей воле или на внутренних интернет-магистралях также установлены ТСПУ (управляемые РКН) - мне неизвестно.

Наконец, помимо блокировок, РКН умеет "замедлять" некоторые ресурсы, например - twitter. Возможно в скором времени та же учесть постигнет youtube (считаю, что его однажды не заблокируют, а замедлят... хотя с этим уже успешно справляется сам гугл). Хотел бы ошибаться, но если такое произойдёт, то личный прокси станет хорошим помощником в комфортном доступе к глобальной видео-библиотеке.

И последнее: использование средств обхода цензуры не запрещено (не является незаконным) в РФ на данный момент.

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

Лирическое отступление

Я понимаю, что традиционно упоминание цензуры может вызвать возмущение, праведный гнев и осуждение чиновников. Я смотрю на это немного иначе.

На данном этапе истории, цензура "де факто" является неотъемлемой функцией любого государства и ожидать что её не будет уже сегодня - значит бороться с ветряными мельницами. Человечество должно очень сильно измениться, чтобы цензура перестала быть нужна для поддержания целостности государств.

Я же - в текущих реалиях - предпочитаю спокойно реализовывать своё право на свободный доступ к информации (конституция, статья 29) доступными законными методами, и - помимо этого права - создавать то, что считаю ценным. Т.е. инвестирую внимание туда, где готов создать на практике, вместо того, чтобы искать, что осудить и уничтожить.

Поэтому, возмущение я рассматриваю как сигнал нереализованности: если мне хочется повозмущаться - значит я недостаточно реализовал свой созидательный потенциал. И лучше пустить энергию на создание чего-то ценного, чем на возмущение и осуждение. Это моё личное мнение, я его не навязываю, но возможно оно поможет вам сохранить эмоциональный комфорт при упоминании цензуры и при настройке прокси для её обхода.

Цензура за границей

На Востоке - В Китае, Иране и Туркменистане - дела с цензурой обстоят примерно как в РФ - только ещё жёстче. Кстати, именно китайский опыт мы будем использовать для своего прокси.

А вот на Западе с цензурой всё интереснее:

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

Блокировка неугодной информации здесь происходит немного иначе. Я вижу три главных тренда:

  1. Манипуляция результатами поисковой выдачи в соцсетях через контроль над СМИ для пропаганды желаемой повестки;

  2. Воспитание "культуры отмены" против инакомыслящих для устранения нежелаемой повестки.

  3. Пожалуй, основной тренд: "самоцензура": самостоятельное ограничение доступа к себе извне. И для этого есть две причины:

    1. выпиливают себя ради соблюдения локальных законов (Порнхаб уходит из Монтаны, Godaddy уходит из РФ и пр )

    2. выпиливают себя из-за той же "культуры отмены": ради управления репутационными рисками (из опасения стать изгоями среди своих), либо из-за личной неприязни к группе людей (из желания отменить кого-либо самостоятельно)

Против первых двух трендов помогает здравый смысл, а против третьего - прокси:).

Хорошая новость: практически все технически-созданные преграды к информации можно обойти с помощью прокси-сервера.

Теория (2/3) - покупка сервера (vps) и домена

Для реализации этой инструкции вам понадобится купить:

  • виртуальный сервер за границей (оплачивается помесячно или ежегодно)

  • доменное имя второго уровня (с одной точкой), вроде mypersonalsite.xyz (оплачивается ежегодно)

Хотел бы я дать ссылку на надёжного провайдера VPS (чтобы упростить работу "чайникам", не желающих разбираться в вопросе) - но нет.... универсального хостера я не встречал. Я лишь опишу критерии, а выбирать VPS придётся самому.

Критерии выбора VPS

Итак, вам нужен VPS, который удовлетворяет следующим критериям:

  • Технические характеристики: 1 процессор, минимум 1 GB оперативной памяти, минимум 5 GB диск. Обычно это самый дешёвый тарифный план.

  • Трафик - безлимитный или очень большой (например 32 Терабайта в месяц). Многим хватает 3 ТБ в месяц, но не всем. Безлимитных вариантов на рынке много.

  • Ширина канала: 100Мбит. Если у вас быстрый домашний/рабочий интернет, то можно смотреть в сторону 1Гбит, такие предложения на рынке есть.

  • Статичный IPv4 адрес (сервер с IPv6 но без IPv4 не подходит)

  • Локация (физическое расположение сервера): Европа. Можно выбрать любую страну, отличную от РФ, но Европа, как правило, даёт самый быстрый трафик.

  • Возможность установки операционной системы "Debian 12". Дальнейшая инструкция гарантированно работает с Debian 12. При выполнении всей цепочки шагов с другой ОС (например, Ubuntu) могут всплыть неожиданные вопросы.

  • Бекап (это платная опция у хостера) не нужен.

Рыночная стоимость такого VPS - $5 / 500 руб. в месяц. Встречаются дешевле ($0.99/130р.). Дешёвая цена может быть признаком ненадёжности... или не быть.

А теперь холиварный вопрос: покупать ли VPS у зарубежного провайдера с помощью зарубежной карты (либо за крипту), или можно купить VPS у хостера, который принимает российские карты?

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

С другой стороны, прокси - это средство обхода цензуры (что вполне законно на данный момент), а не средство анонимности. Ни один прокси не гарантирует абсолютную анонимность в интернете, даже если вы будете платить криптой.

Для себя я решил этот вопрос так: лично у меня нет задачи "оставаться анонимным" и скрывать факт оплаты сервера за рубежом, поскольку моя деятельность не нарушает российских законов (опять же: на текущий момент).

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

То же самое с доменными именами: можно купить домен .ru за российскую карту, либо любой домен (кроме .ru и .рф) за рубежом.

У кого покупать VPS?

  • Зарубежные хостеры:

    • погуглить "buy vps"

    • посмотреть список рекомендованных хостеров от амнезии.

    • Спросить в комментариях или чате (ссылка в начале статьи).
      Напомню, что у многих зарубежных хостеров есть тенденция ограничивать свои услуги в РФ, поэтому при регистрации не стоит указывать что вы из РФ.

  • Российские хостеры:

    • Погуглить "купить vps в европе"

    • Поискать на сайте poiskvps. Там большой выбор, но там есть не все.

    • Спросить в комментариях или чате (ссылка в начале статьи)
      Лично я сейчас арендую VPS у двух провайдеров: nuxt и vdsina. Оба - со своими тараканами, но они пока не так плохи, чтобы переходить на других.

У кого покупать домен?

  • .ru можно купить за 119 рублей (дешевле не видел) - гугл в помощь: "зарегистрировать домен .ru".

  • зарубежный можно купить за 99 центов (google: "99 cent domain")

  • это цена за первый год, продление всегда дороже, но если будет желание сэкономить - можно каждый год покупать новый.

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

Теория (3/3) - универсальное решение

Итак, задача - создать и настроить прокси: быстрый и чтобы не заблокировали.

Уже известно, что:

  • VPN-протоколы OpenVPN, WireGuard, IPsec и многие другие легко детектируются и периодически блокируются.

  • Зашифрованные прокси-протоколы без маскировки (shadowsocks, vmess, mtproto для телеграмма) тоже периодически блокируются. Если работает сегодня, но были прецеденты блокировок - не факт что будет работать завтра. Стоит ли использовать решение, которое может перестать работать в любой момент по воле РКН? Конечно нет.

Поэтому я использую решение, которое:

  1. Маскируется. Причём под самый популярный протокол в интернете - https (так умеют vless, trojan, cloak, gost-tls, openconnect-tls).

  2. Не шифрует зашифрованный трафик повторно: так называемый tls-in-tls при желании детектируется (пример), хотя и требует инвестиций в более дорогое оборудование ТСПУ. В Китае так уже делают, вероятно скоро научатся и у нас. Я знаю два решения для этого: vless-xtls просто не шифрует трафик дважды, cloak - обходит (вроде бы) этот фильтр за счёт огромной избыточности, но ценой низкой скорости.

  3. Притворяется реальным сайтом: Проходит тест на active-probing. Это когда цензор вместо вас подключается к серверу и убеждается, что вы посещаете какой-то сайт, а не используете его как прокси (так умеют vless-xtls-reality и всё тот же медленный cloak).

Существует классный продукт - Amnezia. Она также позиционирует себя как "универсальное решение" и поддерживает подходящий протокол (cloak), но я её не рекомендую из-за "детских болезней":

  1. Очень сырой клиент, особенно после обновления на 4 версию: баги и вводящий в заблуждение интерфейс.

  2. Единственный протокол с маскировкой (OpenVPN+Cloak) слишком медленный для комфортного использования,

  3. Протоколы без маскировки могут скомпрометировать сервер.

Я желаю "Амнезии" успехов - она действительно может стать универсальным решением в будущем, но на сегодня я вижу только одного кандидата: протокол VLESS-XTLS-Reality.

На текущий момент vless-xtls-reality не может быть обнаружен с помощью DPI (deep packet inspection - прослушивание трафика) даже в Китае. Но у цензора есть иные способы помешать ему. Поэтому смотрим следующий список:

Что я не стоит делать ни в коем случае

  1. Не компрометировать VPS протоколами, которые могут быть обнаружены (не ставить туда WireGuard, OpenVPN, Shadowsocks, ...). Некоторые провайдеры уже блокируют VPS, на которых в прошлом были замечены подобные протоколы.

  2. Не ходить в рунет через VPS, вместо этого посещать рунет напрямую, мимо прокси (легко настроить). В крайнем случае, пускать российский трафик по цепочке Я->VPS->Warp->Рунет (это тоже легко настроить). Дело в том, что если трафик пересекает границу РФ дважды в условную секунду (сначала туда, потом сразу обратно), то цензор может заподозрить прокси и заблокировать его. В Китае так делают, у нас - нет, но могут научиться в любой момент.

  3. Не раздавать доступ к прокси большому количеству людей. 5-10 близких максимум. В Китае уже вычисляют аномальный трафик к серверу от большого числа юзеров (и блокируют сервер), у нас - опять же - могут перенять их опыт в любой момент.

При выполнении этих условий (в текущих реалиях) сервер невозможно вычислить и заблокировать. Однако, я люблю избыточную надёжность, поэтому... на случай неожиданной блокировки VPS-сервера по IP - есть "План Б": проксирование трафика через CDN (Content Delivery Network).

CDN созданы для балансировки трафика крупных сайтов, состоят из сотен IP-адресов, поэтому шанс их блокировки в РФ минимальный. Я использую одну из самых крупных CDN в мире - CloudFlare с бесплатным тарифом. Именно к CloudFlare вы привяжете купленный домен, чтобы пускать трафик через него.

Проксирование через CDN чуть медленнее прямого коннекта к серверу. Зато, при использовании CDN, РосКомНадзор вообще не узнает IP вашего сервера.

На этом теория окончена, перехожу к инструкции.

Инструкция (1/6) - настройка VPS

Как только вы приобрели VPS-сервер и установили туда чистую Debian 12 (см "Теорию ч.2" выше) - как правило в течении нескольких минут провайдер выдаст вам доступ к серверу. Чаще всего приходит e-mail, иногда данные можно найти в панели.

Вам нужны две строки: IP-адрес и root-пароль
Вам нужны две строки: IP-адрес и root-пароль

Шаг 1: Подключитесь к серверу по SSH:

  • Наберите ssh root@111.111.111.111 в консоли (IP поменяйте на свой).
    Пароль можно вставить из буфера с помощью ПКМ, он не отображается для безопасности. Иногда пароль вставляется корректно только при включённой английской раскладке клавиатуры.

  • Либо используйте веб-интерфейс "VNC" в панели VPS

  • Либо используйте какое-либо SSH-приложение

Шаг 2: Обновите систему на сервере apt update && apt full-upgrade -y (займёт несколько минут)

Шаг 3: Перезагрузитесь reboot и через минуту подключитесь по ssh заново.

Шаг 4: Установите необходимые пакеты: apt install docker.io docker-compose git curl bash openssl -y

Шаг 5: Установите панель 3X-UI:

git clone https://github.com/MHSanaei/3x-ui.git
cd 3x-ui
git checkout v2.0.2
docker-compose up -d

Сейчас последняя версия панели - 2.0.2. Именно её мы ставим. Наверняка скоро появится более свежая версия - но теоретически она может чем-то отличаться. Версия 2.0.2 точно работает, рекомендую начинать с неё.

Шаг 6: Установите Warp: первой командой - удалите (если он был установлен хостером), второй - установите его в режиме совместимости с 3x-ui

warp u
bash <(curl -sSL https://raw.githubusercontent.com/hamid-gh98/x-ui-scripts/main/install_warp_proxy.sh

Во время установки скрипт спросит у вас цифру, нужно ответить 40000

Шаг 7: Сгенерируйте самоподписанный TLS-сертификат и скопируйте его в панель 3X-UI

openssl req -x509 -newkey rsa:4096 -nodes -sha256 -keyout private.key -out public.key -days 3650 -subj "/CN=APP"
docker cp private.key 3x-ui:private.key
docker cp public.key 3x-ui:public.key

На этом настройка сервера завершена.

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

Инструкция (2/6) - первичная настройка панели 3X-UI

Подружись со своей тенью
Подружись со своей тенью



Шаг 1:
Откройте браузер и зайдите по адресу вида http://111.111.111.111:2053/ Обратите внимание на http (не https) в начале адреса (но это только на старте, далее будет https). IP, конечно, нужно поменять на свой.

Шаг 2: Поменяйте язык на английский (в русском кривой перевод), тёмную тему, логин: admin, пароль: admin, и войти (кнопка Login).

Управляй своей реальностью
Управляй своей реальностью

Шаг 3: В разделе "Panel Settings" заполните 4 поля как на скриншоте:

- Panel Port (любое случайное число от 1000 до 65535, кроме 40000 - оно уже занято варпом, в инструкции я буду использовать 54321 - но вы придумайте своё). Далее везде вместо порта 54321 вставляйте своё число.

- Panel Certificate Public Key Path : /public.key

- Panel Certificate Private Key Path : /private.key

- Panel URL Root Path: секретная строка для доступа к панели, которая начинается и заканчивается "/". Я использую /mysecreturl/, но вы придумайте свою. Далее везде вместо строки /mysecreturl/ используйте свою.

Наконец, сохранитесь (кнопка Save вверху страницы) и обязательно перезагрузите панель (кнопка Restart Panel, Sure).

  • Браузер выдаст ошибку. Поменяйте в адресной строке порт 2053 на 54321, обновите страницу.

  • Браузер выдаст вторую ошибку "Подключение не защищено" (это потому что мы используем самоподписанный сертификат, но это временно). Нажмите на Дополнительно->Перейти на сайт, и вы опять окажетесь в панели.

Будь собой, остальные роли заняты
Будь собой, остальные роли заняты

Шаг 4: В разделе Panel Settings -Security Settings укажите старые(admin/admin) и придумайте новые логин и пароль, жмите Confirm.

Шаг 5: Войдите в панель ещё раз с новым логином и паролем.
Теперь панель будет всегда доступна по HTTPS адресу вида: https://111.111.111.111:54321/mysecreturl/ (где IP, Порт и Путь будут вашими собственными).

Сохраните где-нибудь URL доступа к панели, логин и пароль.

Инструкция (3/6) - настройка Xray

Xray - прокси-сервер, которым управляет панель 3X-UI. Именно Xray поддерживает протокол VLESS с маскировкой.

Всё красиво на бумаге, да забыли про овраги (нет)
Всё красиво на бумаге, да забыли про овраги (нет)


Шаг 1: В панели перейдите в раздел "Xray Settings" и включите две опции:

- IPv4 Configs -> Use IPv4 for Google

- WARP Configs -> Route OpenAI (ChatGPT) througw WARP.

Затем в верху страницы сохранитесь (Save Settings) и перезагрузитесь (Restart Xray)

Есть такое слово: "Родина"
Есть такое слово: "Родина"

Шаг 2: Пустите весь российский трафик на сервере через WARP.

Для этого перейдите в раздел "Xray Settings"->"Routing Rules", найдите строку где написано "geosite:openai" и отредактируйте её, чтобы получилось: geosite:category-gov-ru,regexp:.*\.ru$,geosite:openai

Наконец, добавьте новое правило через кнопку Add Rule (IP: geoip:ru, Outbound tag: WARP) как на скриншоте.

Опять сохранитесь вверху страницы (Save Settings), затем перезагрузитесь (Restart Xray)

Правильно заполненная таблица "Routing Rules" - ваш пропуск в интернет, товарищ!
Правильно заполненная таблица "Routing Rules" - ваш пропуск в интернет, товарищ!

Шаг 3: Найдите сайт-донор для маскировки

Уже на 4-м шаге панель предложит вам маскироваться под сайт yahoo.com. В принципе он подходит. Но если у вас сервер в Европе - это даст задержки при открытии новых сайтов, поскольку сервера yahoo находятся в Америке.

Оптимальным будет найти сайт в подсети хостера (вот инструкция), но может случиться так, что в подсети сайта не обнаружится (у меня такое было).

Поэтому есть более простой вариант: найти небольшой сайт из той-же страны, где вы арендовали VPS, затем зайти на сервер по SSH и с сервера попинговать его. Если время отклика будет минимальное (например, 15мс) - он подходит.

Я арендовал сервер в Нидерландах, поэтому выбрал голландский новостной сайт nltimes.nl - попинговал его с VPS-сервера: вижу время отклика 6мс, он подходит
Я арендовал сервер в Нидерландах, поэтому выбрал голландский новостной сайт nltimes.nl - попинговал его с VPS-сервера: вижу время отклика 6мс, он подходит
Цензура - не волк: VLESS не убежит
Цензура - не волк: VLESS не убежит


Шаг 4:
Настройте VLESS

В разделе (Inbound) - (Add inbound) надо заполнить указанные на скриншоте поля.

Самое важное:

- Remark и Email - любые строки (не обязательно адрес эл.почты), ни на что не влияют.

- Listening IP - укажите ваш IP

- Port - строго 443, чтобы маскироваться под обычный https-сайт.

- Только после выбора Security: Reality появится возможность выбора Flow: xtls-rprx-vision

- uTLS - именно Chrome, чтобы маскироваться под самый популярный браузер

- Dest, Server Names - указать сайт-донор (хотя можно оставить yahoo.com)

- Кнопка (Get new cert) генерирует ключи.

- (Create) завершает создание.

Ключ сильнее замка
Ключ сильнее замка

Шаг 5: Получите ключ VLESS

Осталось в разделе Inbounds нажать на (три точки) -> Export Links ...

... и система даст скопировать строку-ключ вида:

vless://e034d537-b028-41f0-9e53-5f0838ea8b3b@111.111.111.111:443?type=tcp&security=reality&pbk=D0Bfsax3Ble2KiqDrOu3_qMJw7qVKyrnWgpvDTVkb3M&fp=chrome&sni=nltimes.nl&sid=64edf3b5&spx=%2F&flow=xtls-rprx-vision#My%20VLESS-Reality

Сохраните её в удобном месте.

Инструкция (4/6) - настройка клиента (на компьютерах и телефонах)

Здесь всего три шага:

  1. Установить приложение

  2. Вставить туда строку-ключ с сервера

  3. Настроить прямое соединение с Рунетом

Приложений много, они есть практически под все платформы, и они проверены временем.

Windows:

Android:

iOS:

macOS:

Настройка Hiddify-Next

Лидером среди приложений является Hiddify-Next от наших иранских коллег.

Основные его плюсы:

  • Крайне простой и понятный интерфейс "одна кнопка", минимум настроек.

  • Русский язык

  • Доступен под все платформы кроме iOS (но разработчики скоро сделают и его)

Интерфейс настолько простой, что я решил не делать скриншотов.

После установки приложения надо сделать всего две вещи:

  • В настройках установить Регион: RU

  • Скопировать в буфер и вставить в приложение строку-ключ vless через кнопку (+)

Всё! Можно нажимать на огромную круглую кнопку - и прокси заработает!

Особенности Hiddify-Next на Windows:

Приложение может работать в двух режимах:

  • Системный прокси (по умолчанию)

  • TUN-режим

Большинство приложений (в том числе браузеры) понимает первый режим. Но не все. Если какое-то приложение на Windows не видит ваш прокси - переключитесь в TUN-режим (в настройках Hiddify-Next). Чтобы TUN-режим заработал, Hiddify-Next необходимо запустить в "режиме администратора" (программа сама вам об этом скажет).

Особенности Hiddify-Next на Android:

На андроиде есть супер-удобная опция "Раздельное проксирование" (в настройках Hiddify-Next). На iOS такого нет.

Раздельное проксирование позволяет выбрать, какие приложения будут использовать прокси. Например, я могу выбрать опцию "Проксировать только выбранные приложения" и поставить галочки на : "Нельзяграм, Канву и Хром". После включения прокси, только эти три приложения будут использовать прокси, а остальные (банковские приложения, яндекс-карты и все остальные) продолжат соединяться со своими серверами напрямую.

Если настроить раздельное проксирование для выбранных приложений - прокси на телефоне можно держать включённым постоянно.

Настройка Streisand (iOS)

Streisand - бесплатное приложение, но в декабре оно на несколько дней становилось платным. Если оно опять станет платным в будущем (~200р) -- считаю что оно стоит своих денег.

Итак, всё те же два шага:

  1. Скопировать в буфер и вставить в приложение строку-ключ vless через кнопку (+)

  2. Настроить прямое соединение с Рунетом. Тут несколько шагов.

    Сначала - скопировать эту длинную строку с настройками в буфер.

streisand://aW1wb3J0L3JvdXRlOi8vWW5Cc2FYTjBNRERWQVFJREJBVUdEaGdaR2xWeWRXeGxjMTFrYjIxaGFXNU5ZWFJqYUdWeVZHNWhiV1ZlWkc5dFlXbHVVM1J5WVhSbFozbFVkWFZwWktJSEU5VUlDUW9MREEwT0R4QVNXMjkxZEdKdmRXNWtWR0ZuWFdSdmJXRnBiazFoZEdOb1pYSldaRzl0WVdsdVVtbHdWMjVsZEhkdmNtdFdaR2x5WldOMFZtaDVZbkpwWktDaEVWaG5aVzlwY0RweWRWZDBZM0FzZFdSdzFCUVZDZ3dORGhZU1cyOTFkR0p2ZFc1a1ZHRm5YV1J2YldGcGJrMWhkR05vWlhLaEYxbGtiMjFoYVc0NmNuVlpVbFV0WkdseVpXTjBYRWxRU1daT2IyNU5ZWFJqYUY4UUpFUkROVGxETXpsRExVUXdSRVl0TkRsR015MDVRVEl3TFVFMlJUVkVSakkwUkRaRE9RQUlBQk1BR1FBbkFDd0FPd0JBQUVNQVRnQmFBR2dBYndCeUFIb0FnUUNJQUlrQWl3Q1VBSndBcFFDeEFMOEF3UURMQU5VQTRnQUFBQUFBQUFJQkFBQUFBQUFBQUJzQUFBQUFBQUFBQUFBQUFBQUFBQUVK

Затем - вставить её в приложение через "+" справа-вверху.

Наконец, зайди в "Роутинг", и там (поставить галочку), (нажать на "включить") и вернуться назад (стрелка слева)

Эффект Streisand: ON
Эффект Streisand: ON

Можно подключаться! (при первом подключении телефон попросит пароль).

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

Инструкция (5/6) -- проверка прокси

Если вы всё сделали по инструкции - у вас на устройствах уже должен быть работающий прокси. Но выполняет ли он свою функцию? Не обманул ли продавец VPS? Сейчас проверим.

  1. Убедитесь, что прокси включён.

  2. В браузере зайдите на https://ipinfo.io/ . Вы видите IP вашего VPS? Значит прокси работает и и вы всё настроили верно.

  3. Откройте браузер и зайдите на https://rutracker.org. Открывает? значит РФ-цензуру обошли.

  4. Откройте браузер в режиме инкогнито и зайдите на https://maps.google.com. Вы видите карту той страны где покупали VPS? Вероятно ip "чистый".

  5. Ещё раз посмотрите на https://ipinfo.io/ . Справа в разделе country вы видите ту страну в которой находится VPS? Значит ip "чистый".

  6. Зайдите на https://canva.com Вы видите нормальный сайт и вас не посылают за то что вы из РФ? Значит западную цензуру обошли.

  7. Зайдите на https://google.com Нет ошибки 403 и поиск доступен? Значит гугл не забанил ранее ваш IP.

Если что-то пошло не так:

  • п2 и п3: скорее всего где-то ошиблись в выполнении инструкции, перепроверьте.

  • п4,5,6 - вероятно хостер предоставил вам "грязный" IP, который числится в базах как российский. Есть шанс, что в течение двух недель базы обновятся... либо не обновятся. Имеет смысл написать в техподдержку хостеру, описать ситуацию и попросить поменять IP. Большинство идут на сотрудничество.

  • п7 - просите хостера поменять IP.

Запасной план:

Если какой-либо западный сайт не пускает вас к себе через VPS, то в качестве костыля можно пустить трафик до этого сайта через WARP.

Для этого в панели 3x-ui->Xray Settings->Routing Rules нужно найти и отредактировать строку geosite:category-gov-ru,regexp:.*\.ru$,geosite:openai - дописать сайты через запятую, пример geosite:category-gov-ru,regexp:.*\.ru$,geosite:openai,intel.com,canva.com (обязательно сохраните изменения и перезагрузите Xray)

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

Да, покупка IP-адреса - это всегда лотерея и есть небольшой шанс проблем, но чаще всего всё работает с первого раза.

Инструкция (6/6) -- настройка CDN CloudFlare

Переходим к последнему, самому интересному разделу.

Любое управление рисками сводится к трём шагам:

  • Определить риск (в данном случае, это риск, что рф-цензура заблокирует ваш сервер)

  • Минимизировать риск (вы это уже сделали, воплотив знания из "Теории ч3")

  • Определить План Б на тот редкий случай, если риск всё-же реализуется.

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

Проксирование через CDN - это и есть "План Б". Сейчас вы настроите ещё одно, запасное соединение, которое будет работать, даже если ваш VPS станет недоступен изнутри РФ.

Шаг 1: Выберите продавца доменного имени и убедитесь что доменное имя свободно (см. Теория ч2), но НЕ ПОКУПАЙТЕ его пока. CloudFlare работает только с доменными именами второго уровня (есть исключения, но они нам не помогут). Доменное имя второго уровня - это имя с одной точкой, вроде mypersonalsite.com или myhabraproxy.ru

Для этой инструкции я выбрал доменное имя habraproxy.store у продавца Dreamhost. Прямо сейчас dreamhost бесплатно раздаёт доменные имена .store на 1 год - но эта халява только для клиентов, которые в прошлом что-то уже покупали.

Кстати, если у вас уже есть свой сайт с доменом...

...то вы точно не "чайник", и вы точно разберётесь, как поменять name-сервера у регистратора, настроить нормальную работу своего сайта через CloudFlare, а для целей проксирования VPS использовать поддомен.

Итак, продавец выбран, доменное имя выбрано но не куплено, идём дальше.

Шаг 2: Зарегистрируйтесь на CloudFlare.com (Sign Up - Тариф Free - Add Website - e-mail+пароль). Сохраните пароль, подтвердите аккаунт по ссылке из письма.

Кажется дождь начинается
Кажется дождь начинается

Шаг 3: Зайдите в CloudFlare, в верхнем разделе "Websites" добавьте ещё не купленное доменное имя. Далее - Тариф Free - Continue... пока наконец вы не попадёте на страницу "Change your nameservers" с двумя оранжевыми облаками.

Эти две строки нам понадобятся. Ваши строки могут отличаться от моих.

Мы пойдём другим путём
Мы пойдём другим путём

Шаг 4: Теперь смело покупайте ваше доменное имя, а во время покупки укажите, что будете использовать name-сервера свои, а не те что предлагает продавец. Впишите эти две строки и завершите покупку.

На скриншоте - сайт моего продавца.

Итак, вы купили домен и указали нужные неймсервера. Активация свежекупленного домена займёт несколько минут, самое время донастроить CloudFlare.

Шаг 6: В разделе DNS создайте A-запись для вашего домена и IP вашего сервера. У меня это выглядит вот так:

Маскировка 80 Level
Маскировка 80 Level

Шаг 7: В разделе Network включите "gRPC" (обойдусь без скриншота)

Мировое господство, "основанное на правилах"
Мировое господство, "основанное на правилах"

Шаг 7: В разделе Rules->Origin Rules создай два правила:

(1) Все запросы на сервер направляйте на порт 54321 (укажите порт, на котором работает ваша панель 3xui)

(2) Все запросы по секретному адресу /my-gRPC-3049382 (придумайте что-то своё) направляйте на порт 2053

Последовательность этих двух правил важна.

Нажми на кнопку - получишь результат!
Нажми на кнопку - получишь результат!

Шаг 8: Вернитесь на Overview, и если под оранжевыми облаками найдёте кнопку "Check nameservers now" - нажмите её, чтобы поторопить систему.

(если прошло много времени и там нет ни облаков, ни кнопки - вообще отлично, переходите к следующему шагу)

Цензура нервно курит в сторонке
Цензура нервно курит в сторонке

Шаг 9: Создайте второе VLESS-подключение для CDN.

Вернитесь в панель 3X-UI. Inbound -Add Inbound

Самое важное:

- Порт - тот же, что и во "втором правиле". 2053 или любой другой на ваш выбор (но смысла менять его на другой не вижу).

- Transmission - gRPC, именно такой тип соединения безлимитен на CloudFlare.

- Service name - секретная строка из "второго правила" my-gRPC-3049382, но строго без "/" в начале.

- uTLS - именно Chrome, чтобы маскироваться под самый популярный браузер

- ALPN сделайте пустым.

- Кнопка (Get Сert from Panel) вписывает ключи.

- Allow Insecure - включайте на время тестирования, когда начнёте пользоваться CDN - можно будет выключить.

Наконец, проверяйте что получилось. Экспортируйте строку-ключ этого нового соединения и скопируйте её в приложение - прокси должен работать. (пока это не CDN, вы лишь подключились к своему VPS через порт 2053 по протоколу VLESS-gRPC, но скоро вместо вас это будет делать CloudFlare)

Шаг 10: Финальная настройка CloudFlare

Каково это, быть избранным?
Каково это, быть избранным?

Обновите раздел Overview.

CloudFlare должен вас обрадовать сообщением: "Great news! Cludflare is now protecting your site"

Если этого сообщения нет, а вместо него - страница, на которой остались два оранжевых облака - значит одно из двух:

  • Нужно ещё немного подождать

  • Вы что-то сделали не так.

Доквантовая криптография, скриншот начала 21 века
Доквантовая криптография, скриншот начала 21 века

Если всё так, тогда: в разделе SSL/TLS включите режим Full

Теперь вы точно завершили настройку CloudFlare.

Шаг 11: Проверка

Откройте браузер и перейдите по адресу https://habraproxy.store/mysecreturl/ (меняйте имя сайта на своё, и адрес страницы на свой - тот что установили для панели 3x-ui).

Откроется панель 3x-ui. Теперь управлять панелью вы будете с этого адреса!

Сохраните этот адрес где-нибудь.

Шаг 12: Ещё одна проверка

Откройте браузер по адресу https://habraproxy.store и убедитесь, что там пустая страница 404.

Это значит любой цензор, зайдя на ваш сайт, убедится: там есть настоящий веб-сервер. В качестве веб-сервера выступает сама панель 3x-ui, которая отдаёт 404 ошибку на любой неизвестный ей адрес. Никакой внешний наблюдатель не узнает адрес панели (/secreturl/). А если цензор послушает трафик, то увидит зашифрованный поток gRPC, который используется для обслуживания веб-приложений по всему интернету.

Шаг 13: Настало время МАГИИ:

Отредактируйте строку-ключ второго подключения:

  • Замените IP на доменное имя,

  • Замените порт на :443,

  • Удалите allowInsecure=1

  • Отредактируйте имя (после #) по своему желанию

Было: vless://03684ba0-1994-4106-86da-e91fdd9007e0@111.111.111.111:2053?type=grpc&serviceName=my-gRPC-3049382&security=tls&fp=chrome&alpn=&allowInsecure=1#My%20CDN-tjo1gifl

Стало: vless://03684ba0-1994-4106-86da-e91fdd9007e0@habraproxy.store:443?type=grpc&serviceName=my-gRPC-3049382&security=tls&fp=chrome&alpn=&#My%20CDN

Наконец, копируйте эту строку в приложение, проверяйте работоспособность и наслаждайтесь запасным каналом для своего прокси.

Самое время процитировать @MiraclePtr:

Fair use
Понятное дело, что то, что CDN разрешают на своих бесплатных тарифах проксировать Websockets и gRPC — это такой жест доброй воли от них. Давайте не наглеть и использовать эти возможности только в совсем безвыходных случаях, которые, надеюсь, все‑таки не наступят.

</КОНЕЦ ИНСТРУКЦИИ>

Недостатки этого решения

  1. "Сложность" настройки:
    Безусловно, купить VPN за 100 рублей в месяц намного проще, чем впервые в жизни настроить "вот это всё". Я не строю иллюзий, что "все домохозяйки в стране сделают прокси частью своего хозяйства". Это решение - для небольшого числа людей, которые очень ценят свободу информации, очень ценят надёжность и готовы инвестировать своё внимание во всякое "технарское колдунство".

  2. Периодическая недоступность VPS:
    Uptime бюджетного VPS - примерно 99.9% (бывает и выше, и ниже). Это значит, что примерно 42 минуты в месяц VPS может быть недоступен (иногда эти минуты растягиваются до часов и даже дней). То есть вы гарантированно однажды встретитесь с ситуацией, когда VPS временно не отвечает ни по IP, ни через CDN. Причин множество, я встречался как минимум с этими тремя: факап хостера, DDOS-атака на хостера, проблемы в дата-центре где физически находится VPS (на которые сам хостер повлиять не может).

    Я решаю этот вопрос просто - у меня два сервера от разных хостерах в разных странах (основной и запасной), этого хватает.

    Другое решение - на случай форс-мажора иметь под рукой запасную строку-ключ (shadowsocks, vless, trojan) от какого-нибудь бесплатного сервиса, благо в телеграмме их полно. Конечно, передавать свой трафик через бесплатный сервис - это стрёмно, но если VPS недоступен, а доступ нужен срочно, то временное использование бесплатного сервиса может оказаться приемлемым, решайте сами.

  3. Доверие китайским программистам:
    Хотя и сервер, и клиенты - это opensource приложения (основанные на Xray и SingBox), они не проходили независимый аудит, и теоретически там могут быть ошибки, а разработчики - тоже теоретически - могут добавить зловредный код в новые версии (впрочем, такое можно сказать про любое opensource-решение, но это не мешает существованию опенсорса в мире). Один из вариантов управления этим риском - использовать проверенные версии клиентских и серверных приложений. Пользуясь компьютером и телефоном вы уже доверяете сотням людей и корпораций. Если эти opensource-решения не вызывают у вас доверия - стоит поискать другие. Я же не вижу здесь никакой проблемы, лишь озвучиваю существующее мнение.

  4. Отсутствие XTLS в CDN-проксировании:
    Да, моё решение использует XTLS только для соединения с сервером напрямую, и простой TLS для проксирования через CDN. Я не нашёл способа простой настройки XTLS через CDN, но всё же это возможно. В конце статьи будут ссылки с решением. В РФ пока не умеют детектировать шифрование уже зашифрованного трафика (tls-in-tls), но если научатся - это может быть потенциальной проблемой, хотя я оцениваю этот шанс как стремящийся к нулю.

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


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

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