Обновить

Надежный обход блокировок в 2024: протоколы, клиенты и настройка сервера от простого к сложному

Уровень сложностиСредний
Время на прочтение46 мин
Количество просмотров249K

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

Вы, наверняка, помните отличный цикл статей на Хабре в прошлом году от пользователя MiraclePtr, который рассказывал о разных методах блокировок, о разных методах обхода блокировок, о разных клиентах и серверах для обходов блокировок, и о разных способах их настройки (раз, два, три, четыре, пять, шесть, семь, восемь, девять, десять, и вроде были еще другие), и можете спросить, а зачем еще одна? Есть две основные причины для этого. Во‑первых, те статьи представляют собой огромный объем материала, где каждая деталь тщательно разобрана, и предложено множество вариантов. Однако для пользователей без опыта может быть сложно разобраться в этой куче информации и понять, какой протокол и какую схему настройки использовать. Во‑вторых, со времени написания этих статей прошло некоторое время, и появились новые, более простые в настройке, клиенты, новые схемы и идеи. Поэтому эту статью можно рассматривать как краткий, но информативный пересказ той горы статей с добавлениями, поправками и более простыми вариантами настройки. Кроме того, я упорядочу варианты по сложности, чтобы те, кто не уверены в своих навыках администрирования и сетевых технологий, могли воспользоваться более простыми методами, а более сложные варианты будут представлены в конце для для эстетов и затейников.

Итак, вкратце, какие на сегодняшний день есть проблемы с популярными VPN‑ и прокси‑протоколами?

Детектировать и блокировать соединения можно следущими способами, от лайтовых к хардкорным:

  • Анализ структуры, сигнатур и размеров передаваемых пакетов, особенно в момент установления соединения (давно практикуется Роскомнадзором, для этого и было установлено так называемое оборудование ТСПУ);

  • Active probing: при маскировке протокола под HTTPS (обычный веб‑сайт), цензоры пытаются подключиться к такому «сайту», чтобы проверить, действительно ли там есть настоящий веб‑сервер, а так же используя пути (URL), зарезервированные в VPN‑протоколах для установления соединения, в результате чего сервер себя демаскирует; есть свидетельства, что РКН тоже начал заниматься active probing'ом;

  • Анализ TLS fingerprint («отпечатка» — набора поддерживаемых шифров, эллиптических кривых, поддерживаемых расширений протокола, и т. д.) клиента. Отпечатки современных браузеров (Chrome, Firefox, и т. д.) известны, а отпечатки многих VPN‑ и прокси‑клиентов могут от них отличаться, что влечет за собой выявление и блок таких клиентов; РКН об этом в курсе, какое‑то время назад он уже пытался блокировать Tor‑Snowflake по отпечатку библиотеки Pion;

  • Детектирование TLS‑inside‑TLS статистическим анализом размеров пакетов (см. trojan‑killer как пример);

  • Белые списки протоколов — это когда разрешены подключения только по известным протоколам, которые узнаваемы для оборудования DPI (оно же ТСПУ), а все остальные протоколы блокируются. Если используемый протокол не похож ни на что известное механизму фильтрации, например выглядит как случайная последовательность байтов, то такое соединение блокируется. Имеются свидетельства, что РКН уже применял подобные методы во время волнений в Дагестане в прошлом году, пытаясь заблокировать Telegram (трафик tg‑proxy, не имеет характерных признаков и выглядит как рандомный байтовый поток);

  • Белые списки доменов. Это не обязательно может быть полная блокировка тех доменов, что не в списке, а, например, ограничение скорости ко всем «недоверенным» доменам, либо блокировка доступа к ним после достижения определенного предела объема переданного трафика. Такое настоящее время применяется в Иране;

  • Черные списки диапазонов IP‑адресов. В Туркменистане, например, этими черными списками забанено больше половины всех адресов интернета. При обнаружении запрещенного контента, VPN‑ или прокси‑сервера на одном IP‑адресе, блокируется целая подсеть.

Последний пункт особенно важен и заслуживает особого внимания. Существует известное выражение: «пока гром не грянет, мужик не перекрестится». К сожалению, оно полностью относится и к нашей сегодняшней теме. Многие люди думают «А, ну пока все работает, а как работать перестанет, тогда я установлю‑перенастрою и решу проблему». Это очень опасный подход. Допустим, у вас установлен сервер Wireguard или OpenVPN, и пока всё функционирует нормально. Но уже точно известно, что Роскомнадзор на подконтрольном ему оборудовании может детектировать такие подключения. В результате они могут легко начать составлять списки IP‑адресов таких серверов для полной блокировки доступа к ним когда запахнет жареным, например, во время обострения политической жизни в стране, и я более чем уверен, что они уже составляют такие списки. Если вы на таком «отравленном» IP‑адресе потом поднимите какой‑нибудь другой, более надежный и недетектируемый сервис, вы все равно не сможете им пользоваться, ничего не будет работать — останется только арендовать новый виртуальный сервер, и надеяться, что на IP‑адресе, который вам достанется, никто не хулиганил до этого. Если вы не верите, что дело до такого дойдет, то, увы — до такого уже доходило. Пару лет назад РКН искал Tor‑мосты (bridges), запрашивая их с веб‑сайта Tor, прикидываясь обычным пользователем, в результате чего IP‑адреса таких мостов на какое‑то время блокировались полностью, не помогала ни смена порта, и даже не удавалось подключиться к серверу по SSH.

Итак, начнем с того, чем в наше время пользоваться уже не стоит:

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

OpenVPN — его научились блокировать уже давно в России, Китае, Иране и много где еще. Не помогает ни смена TCP/UDP, ни смена порта на нестандартный, ни более навороченные опции в конфиге. Точнее не так, в некоторых случаях они помогают, но, как говорил один известный персонаж отечественной истории, «это не ваша заслуга, а наша недоработка», и в любой момент это все может перестать работать, благо технические возможности для этого давно уже есть.

IPSec — аналогично, детектируется блокируется на раз‑два.

Wireguard и все что основано на нём — он очень популярен, но, к сожалению, тоже совершенно не устойчив к блокировкам, в чем мы уже неоднократно убедились.

Tor — адреса входных нод доступны в публичном реестре, и поэтому могут быть легко заблокированы. Бриджи (bridges) пока работают, но РКН в прошлом неоднократно их выборочно банил (видимо, запрашивая списки, прикидываясь обычным пользователям и внося полученные адреса в блок), к тому же их протокол выглядит как рандомный поток байт, и блокировку по белым спискам протоколов не переживет. Snowflake — после некоторых исправлений более‑менее работает, можно пользоваться, однако поиск бриджа для входа там выполняется через один известный домен на CDN, который как‑то раз уже тоже блокировали. WebTunnel — пока работает, но таких бриджей мало.

Что еще пока работает, но с оговорками:

SSTP, Softherher, AnyConnect и OpenConnect — это уже гораздо лучше, поскольку выглядят как HTTPS‑трафик. Проблемы есть две: их можно детектировать методом active probing (и как я говорил выше, Роскомнадзор такому уже учится), потому что при заходе на них браузером по определенным адресам (описанным в стандартах этих протоколов) они демаскируют себя, и вторая проблема — характерный TLS fingerpring (отпечаток) их клиентов. Первая проблема частично решена в новых версиях OpenConnect с включением специального метода «camouflage». Однако вторая проблема, к сожалению, пока не имеет решения ни у одного из них. Тем не менее, OpenConnect‑клиент, теоретически, можно пересобрать с использованием OpenSSL вместо GnuTLS, что снижает вероятность обнаружения.

Shadowsocks, Shadowsocks-2022, а также Outline. SS — известная разработка от китайских товарищей, SS-2022 — более новая версия протокола, в которой исправлен ряд уязвимостей, а Outline — удобный и простой в настройке клиент/сервер, основанный на Shadowsocks. На сегодняшний день вполне работает, можно пользоваться. Одно но: так как трафик SS представляет из себя совершенно рандомный набор байт без каких‑либо узнаваемых сигнатур, блокировку по белым спискам протоколов (см. выше) он не переживет, поэтому я бы рассматривал его как запасной, но не как основной вариант. Существует так же протокол VMess, который по своему принципу очень похож на Shadowsocks с теми же недостатками.

Еще одна интересная особенность ванильного Shadowsocks в том, что он передает TCP‑трафик как TCP, а UDP‑трафик как UDP. Из‑за этого при наблюдении извне он выглядит весьма характерно (хотя мне неизвестно случаев блокирововк на основе такой эвристики), однако существует его расширение UoT (UDP over TCP), которое поддерживается многими серверами и клиентами, которое заворачивает UDP в TCP, в результате чего трафик выглядит гораздо более однообразно и вызывает меньше подозрений.

AWG, оно же AmneziaWG — улучшение протокола Wireguard, разработанное командой проекта Amnezia VPN, чтобы сделать Wireguard устойчивым к детектированию оборудованием DPI, при этом сохранив его преимущества. Он действительно работает, и работает неплохо. Минус тот же, как и SS — поскольку оборудование ТСПУ этот протокол не распознаёт, то блокировку по белым спискам протоколам в случае чего он не переживет.

SSH — скажу кратко, пока работает. Правда, есть довольно много свидетельств, что в Китае, видя «нецелевое» использование SSH (может быть, анализируя объемы и тайминги передаваемых туда‑сюда данные и паттерны поведения нейросетями?), ограничивают скорость передачи настолько, что пользоваться им для серфинга становится невозможным, тормозит даже консоль.

Что работает и вероятно будет продолжать работать:

VLESS — самый распространенный и перспективный на сегодняшний день протокол, от создателей известного клиента‑сервера XRay. Работает поверх TLS, искуссно маскируясь под обращение к какому‑нибудь безобидному веб‑сайту. Поддерживается в очень многих десктопных и мобильных клиентах, и именно на его основе строятся всевозможные схемы обхода блокировок. Вместе с ним вы можете встретить также большое количество других слов, обычно обозначающие его расширения или отдельные фичи. Рассмотрим основные из них:

  • uTLS — изменение TLS‑fingerprint клиента; например, можно заставить выглядеть исходящие подключения как подключения от браузеров Chrome, Firefox, Safari, или вообще генерировать каждый раз новый рандомный фингерпринт;

  • XTLS‑Vision — специальный режим работы, затрудняющий детектирование TLS‑inside‑TLS. Когда это режим включен, если прокси‑сервер определяет подключение к удаленному серверу по TLS 1.3, то шифруется только хендшейк, а после этого уже зашифрованные (TLS между вашим браузером и удаленным сервером) данные передаются без повторного слоя шифрования (отключается TLS между прокси‑клиентом и прокси‑сервером). Такая схема совершенно безопасна (данные в любом случае шифруются как минимум один раз и не видны стороннему наблюдателю), но ломает TLS‑inside‑TLS эвристики, а заодно экономятся ресурсы процессора;

  • XUDP — специальное расширение для передачи UDP‑пакетов через прокси, реализует полный Full Cone NAT с сохранением номера порта. Без этого расширения в некоторых случаях могут не работать аудио‑видео‑звонки в месседжерах, оно было создано именно для решения этой проблемы;

  • XTLS‑Reality — вот это самое крутое. То что VLESS работает поверх TLS и маскируется под какой‑то веб‑сайт, означает что у вас должен быть домен и TLS‑сертификат для него. А еще в случае блокировок по белым спискам, ваш никому неизвестный сайт (домен) наврядли окажется в списке разрешенных ресурсов.
    XTLS‑Reality решает обе эти проблемы: вам не нужен свой домен и сертификат, с XTLS‑Reality сервер очень достоверно маскируется под какой‑нибудь известный и популярный сайт (например, google.com, vk.com, и т. д.), и представляется его аутентичным TLS‑сертификатом.
    Работает это так: в момент установления подключения, клиент «подмешивает» в поля хендшейка определенные данные, определить наличие которых можно только зная секретный ключ, при этом со стороны хендшейк выглядит обычно. Прокси‑сервер, зная секретный ключ, может определить, был ли запрос на установку соединения послан от прокси‑клиента или же от кого‑то другого (например, цензора, желающего проверить, что там на сервере). В первом случае установится подключение для передачи данных через прокси, во втором случае прокси начнет прозрачно пересылать запросы на сервер сайта, под который мы маскируемся, в результате чего цензор увидит самый настоящий сертификат этого сайта, и вообще поведение нашего сервера будет полностью соответствовать поведению сервера этого сайта.

Иногда в интернете можно встретить утверждения, что «VLESS не имеет своего механизма шифрования, а значит он не безопасен». Это не совсем так. "Голый" VLESS действительно не зашифрован, но VLESS никогда не используется так в чистом виде - и по рекомендациям авторов протокола и во всех популярных инструкциях (и в этой тоже!), и в примерах конфигов в репе XRay, он всегда используется с TLS в качестве транспорта - в итоге при правильной настройке подключения через VLESS всегда как минимум один раз шифруются. VLESS действительно не имеет дополнительных механизмов шифрования, потому что стандартного TLS для цели защиты данных более чем достаточно и нет нужды городить сверху что‑то еще, от этого будет только хуже. Более того, даже когда используется XTLS‑Vision, который определяет наличие TLS‑внутри‑TLS и отключает один из слоев шифрования, передаваемые данные между вами и конечным сервером все равно всегда будут зашированы хотя бы один раз.

  • Websocket, gRPC, HTTP, mKCP — разные варианты транспортов для VLESS и других протоколов, когда VLESS используется не сам по себе, а «заворачивается» в какой‑нибудь другой протокол. Веб‑сокеты часто используются для доступа к прокси‑серверу через популярные CDN (сети доставки контента), такие как Cloudflare или Amazon Cloudfront, что является хорошим запасным вариантом, если вдруг ваш сервер попадет под блокировку. А еще с помощью CDN можно прикрываться чужими доменами и IP‑адресами, см. эту статью от всеми нами любимого автора.

  • HTTPUpgrade - по сути дела, те же вебсокеты, но с небольшим упрощением для более эффективной передачи, читайте об этом здесь: Что нового в мире обхода блокировок Интернета в середине 2024 / Хабр (habr.com)

  • SplitTunnel - вариант транспорта поверх "простого" HTTP для пролезания через CDN. Подробнее тут - Что нового в мире обхода блокировок Интернета в середине 2024 / Хабр (habr.com)

Ну и упомянем еще несколько протоколов:

Trojan — более старый аналог VLESS, работает примерно по таким же принципам. Каких‑либо особых преимуществ по сравнению с VLESS не имеет. Может использоваться с uTLS, XTLS‑Vision и XTLS‑Reality, и более того, должен использоваться с ними, потому что без XTLS‑Vision он детектируется по принципу поиска TLS‑in‑TLS вообще элементарно.

Cloak — протокол, очень сильно похожий по принципам работы на XTLS‑Reality (маскировка именем и настоящим сертификатом популярного веб‑сайта). Используется не сам по себе, а для заворачивания в него Shadowsocks, OpenVPN и вообще всего что захочется. Shadowsocks‑over‑Cloak и OpenVPN‑over‑Cloak поддерживают, например, клиент и сервер Amnezia VPN.

Важно! Появились сообщения о том, что в некоторых странах цензоры научились блокировать Cloak, но на самом деле поводов для паники нет. Причина была в том, что Cloak долгое время использовал TLS fingerprint очень старой версии браузера Firefox, и блокировали его именно по этому критерию. В новых версиях автор обновил фингерпринт на отпечаток от современной версии Firefox и пообещал в дальнейшем обновлять его регулярно. Поэтому если вы используете Cloak — не забывайте почаще обновлять клиенты.

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

ShadowTLS - по принципу аналогичен Cloak и XTLS-Reality. v1 уже устарела, v2 актуальна.

Hysteria, и её новый вариант Hysteria2 — протокол на базе QUIC (HTTP/3), целью которого является быстрое установление соединения и работа через каналы с большими пингами и потерями пакетов. РКН одно время блокировал QUIC в России, но потом перестал, поэтому Hysteria2 вполне неплохой вариант. А еще Hysteria имеет также режим обфускации (называется «salamander»), когда заголовки пакетов шифруются и становятся ни на что не похожи — оно работает и весьма неплохо, но, к сожалению, блокировку по белым спискам протоколов не переживет. Правда, Hysteria работает по UDP, и есть шанс, что белые списки применят только к протоколам на базе TCP, а про UDP забудут (да, такое уже было).

mKCP — более старый протокол аналогичный Hysteria. Поддерживается только в XRay в качестве транспорта (И кажется он там немного сломан). Не смотря на его «более старость», в отличие от Hysteria может свои UDP‑пакеты маскировать под SRTP (FaceTime), DTLS (WebRTC), uTP (Bitttorrent). И кстати, XRay умеет делать такую же маскировку с QUIC.

Ну из более экзотических штук на грани с извращениями:

HTTP Custom — не протокол, а скорее семейство методик, когда поднимается обычное (даже не шифрованное) соединение до HTTP‑прокси, но используется поле Host с каким‑нибудь доменом из белого списка, либо когда перед CONNECT‑методом внутри соединения вызывается несколько обычных GET/PUT/POST. Как ни странно, но в некоторых странах до DPI такое пропускают, т.к., по всей видимости, анализируют только первые пакеты соединения в целях экономии ресурсов.

PingTunnel — реализация туннеля через ICMP‑пинги. Можно использовать оригинальный PingTunnel, либо GOST (но между собой они не совместимы), который умеет еще кучу всего.

DNSTT — туннелирование через DNS‑запросы. На всякий случай уточню, это не просто заворачивание трафика в UDP на 53-ий порт. В случае с DNSTT прокси‑клиент делает запросы на настоящий DNS‑сервер, например, на DNS‑сервер вашего провайдера или DNS Яндекса, пытаясь получить DNS‑записи для вашего домена (а точнее, для рандомно сгенерированного поддомена, в имени которого зашифрованы передаваемые на прокси данные). Тот, в свою очередь, будучи вынужденным ответить на запрос, обращается к вашему специально подготовленному DNS‑серверу, который ответит на запрос, заодно напихав в ответ данные, передаваемые от прокси‑сервера к вам, и в итоге вы их получите от DNS‑сервера вашего провайдера/яндекса/итд. Про настройку DNSTT есть отличная статья на Хабре, а в качестве клиента можно использовать DarkTunnel (DNSTT+SSH).

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

Теперь по реализациям:

XRay (оно же XRay‑core) — на сегодняшний день самая актуальная и популярная реализация клиента и сервера. Поддерживает Shadowsocks, Shadowsocks-2022, VMess, VLESS, Trojan, всевозможные транспорты (websockets, gRPC) и всевозможные расширения (XTLS‑Vision, XTLS‑Reality, XUDP, uTLS). Более того, авторы XRay — как раз‑таки создатели эти самых расширений XTLS, поэтому там всегда самая свежая и правильная их реализация.

V2Ray и V2Fly — старый проект, из которого когда‑то форкнулся XRay. В настоящее время развивается очень вяло и не поддерживает многое из того, что здесь описано. Если вы где‑нибудь в интернете встретите статью, описывающую настройку V2Ray/V2Fly в качестве сервера, то скорее всего она очень старая и лучше поискать что‑нибудь более свежее. В 2024 вместо V2Ray стоит использовать XRay, он развивается гораздо активнее и умеет гораздо больше.

Sing‑box — аналог Xray, поддерживает все то же самое, что и XRay, и даже больше — умеет SSH как клиент, Hysteria, и всякое другое. Форматы конфигов XRay и Sing‑box не совместимы. Сами реализации протоколов в XRay и Sing‑box между собой, в принципе, совместимы, но есть и небольшие неприятности. Например, если у вас и клиент и сервер XRay, то XUDP (решение проблем со звонками в месседжерах) будет работать автоматически, по умолчанию, если у вас на клиенте Sing‑box, а на сервере XRay, то чтобы он работал, нужно обязательно явно активировать XUDP в настройках (обычно называется «packet encoding» или как‑то так), а вот если у вас на клиенте XRay, а на сервере Sing‑box, тогда оно работать не будет:(

X‑UI, 3X‑UI, Marzban, Hiddify — так называемые «панели», веб‑интерфейсы для прокси‑серверов. В их основе чаще всего используется тот же самый XRay. Изначально задуманы как более простой в установке и настройке вариант сервера для неподкованных пользователей...

...но я со своей стороны пользоваться ими не советую. Почему? Причин несколько.

Во‑первых, в консоль лезть все равно придется, просто хотя бы для того чтобы установить эти панели из Docker‑образа.

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

В‑третьих, «настройки по умолчанию» эти панели нередко предлагают бредовые или даже небезопасные. В одной панели при создании VLESS‑конфига (не помню в какой, кажется это был Marzban) панель автоматически сгенерировала и подставила порт типа 22 245. Хотелось схватиться за голову и закричать «Вы что делаете‑то, ироды?!» (поясню: TLS должен быть только на 443 порту, иначе это очень подозрительно, особенно для XTLS‑Reality).

В‑четвертых, этих панели хоть и умеют генерировать ссылки и QR‑коды для легкой настройки клиентов, в этих ссылкаъ/кодах не хватает важных параметров. Например, в некоторых панелях в сгенерированных ссылках не подставляется параметр «fp=chrome» или «fp=firefox» (fingerprint), в результате чего если в вашем клиенте не задан uTLS‑fingerprint по умолчанию, есть риск нарваться на блокировку. Там часто не хватает параметра «packetEncoding=xudp», в результате чего если у вас будет клиент, основанный на sing‑box, могут быть проблемы со звонками в мессенджерах.

И в‑пятых, самое важное — часто неопытные пользователи, устанавливая эти панели, оставляют их на стандартных портах и со стандартным путем (URL), в результате чего, недоброжелатель, жаждующий узнать «а что это у нас там на сервере, не прокси ли?» может просто просканировать стандартные порты, на одном из которых панель радостно признается ему «привет, да, это я», что демаскирует сервер целиком и полностью, и ладно еще, если пользователь не забыл изменить дефольные логин/пароль. Плюс панель может содержать уязвимости безопасности, и тут бояться уже надо не цензоров, а малолетних кулхацкеров, которые просто сканируя Интернет могут на нее наткнуться, использовать эксплоит и устроить на вашем сервере что‑нибудь нехорошее (например, ботнет).

Клиентов под все это дело существует тоже немало — Nekobox/Nekoray, Hiddify‑Next, v2rayN, v2rayNG, FoxRay, Streisand, Shadowrocket, InvisibleMan, и т. д. Часть из них основана на XRay (даже если в названии есть «v2ray»), часть на Sing‑box. Про них мы поговорим попозже в этой же статье.

Итак, я надеюсь, что дойдя до этой части, у читателя примерно сложилось представление, что стоит, а что не стоит использовать для обхода блокировок роскомпозора в 2024. Варианты пусть и не настолько надежные, как сбор чемоданов и заведение трактора (самый лучший, но, к сожалению, не всем доступный вариант), но какое‑то время помогут продержаться. В этой статье мы будем настраивать VLESS c XTLS‑Reality, потому что он на сегодняшний день самый надежный, и при этом довольно простой в настройке. В качестве «запасного варианта» на случай ЧП мы еще поднимем Shadowsocks-2022, mKCP и SSH на том же сервере, а в конце я поделюсь более сложными и навороченными схемами для желающих экспериментов.

Что если мне нужен именно VPN?

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

Тут, к сожалению, все довольно грустно.

Если у вас было объединение сетей и вы использовали Wireguard, то самым простым вариантом будет перейти на AmneziaWG.

Если у вас было объединение сетей и вы использовали OpenVPN, то заверните его в Cloak, но готовьтесь к просадке производительности.

Если вам надо, чтобы к вашей сети могли подключаться пользователи с обычных десктопов и телефонов, то можно попробовать OpenConnect сервер с режимом camouflage, см. статью от MiracltPtr об этом: OpenConnect: недетектируемый VPN, который вам понравится (сохраните себе ее локальную копию!).

А мы, тем временем, продолжим говорить о прокси.

Если все кажется очень сложным

Я понимаю, что люди разные, и кто‑то, прочтя эту статью может сказать «Это все не для меня, слишком сложно, не знаю что делать». Сразу предупрежу, несмотря на огромный объем, на самом деле настройка простых вариантов (я начну с них) вполне возможна за один вечер даже для человека с совсем минимальным опытом системного администрирования.

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

Вариант раз — панель X‑UI или 3X‑UI. Хоть я выше и рассказывал, почему я не люблю эти панели, но глупо отрицать, что лучше с панелью и хоть каким‑то доступом в неподцензурный интернет, чем без панели остаться в чебурнете.
Инструкция по настройке от MiraclePtr: 3X‑UI: Shadowsocks-2022 & XRay (XTLS) сервер с простой настройкой и приятным интерфейсом.

Вариант два — Amnezia VPN. Позволяет развернуть надежный VPN‑сервер на любом VPS буквально парой нажатий кнопок из приложения. Поддерживает протоколы Shadowsocks, Amnezia‑WG и OpenVPN‑over‑Cloak, о которых я рассказывал выше. Есть клиенты под все популярные десктопные и мобильные платформы. Проект разрабатывается группой энтузиастов на донаты и гранты, организует хакатоны, проходил сторонний аудит безопасности.

Единственный нюанс — при использовании Amnezia с протоколом Cloak, не забудьте зайти в настройки сервера в приложении, и поменять домен маскировочного сайта по умолчанию на какой‑нибудь другой, так будет надежнее.

Третий вариант - если для вас сложно настроить даже Амнезию, или нет возможности купить даже дешёвый сервер - то используйте VPN Generator (он же @vpngeneratorbot в Телеграме). За ним стоят хорошие люди и организации (список есть на сайте), они используют неблокируемые протоколы и клиент от Амнезии, не собирают никаких персональных данных, и личный VPN-сервер можно получить бесплатно (одно условие - надо поделиться доступом к этому своему серверу с не менее чем пятью людьми, чтобы эффективно использовались ресурсы).

Начинаем настройку. Выбор хостера, подготовка сервера

Первый частый вопрос: какой VPS/VDS выбрать? Ответ: любой за пределами РФ. Но, понятное дело, многих находящихся в РФ интересуют хостеры, позволяющие оплачивать услуги с российских банковских карт. Можно воспользоваться услугами российских хостеров, сдающих в аренду сервера за рубежом (например, довольно популярной локацией являются Нидерланды), но тут надо быть внимательным. Недавно в России приняли закон о том, что хостеры должны вноситься в определенный реестр, что влечет для них обязательства типа слива ваших данных госорганам. Те хостеры, что поумнее, разделили свой бизнес на разные части: российскую (домен в зоне «.ru» и российское юрлицо) и выставление счетов в рублях, и не‑российскую (домен в другой зоне, например «.com», и юрлицо где‑нибудь в Британии, Эмиратах или на Кипре) с выставлением счетов в евро/долларах, но при этом даже во втором случае часто можно по‑прежнему платить российскими рублевыми банковскими картами. Поэтому при возможности стоит предпочесть второй вариант. Например, VDSina (юрлицо в ОАЭ) с недавних пор предлагает сервера в Амстердаме за 2 доллара в месяц. У Aeza (британское юрлицо) иногда появляются сервера с промо‑тарифом в Швеции за 1 евро в месяц, да и обычные тарифы у них относительно недорогие. Еще есть Inferno Solutions с юрлицом в UK, но там подороже.

Также не самым плохим вариантом может быть не‑российские хостеры, но при это дружелюбные к российским клиентам, например PQ.hosting (Молдова), Friendhosting (Болгария), LLHOST (Эстония), is*hosting (Эстония).

Ну и наконец, если у вас есть возможность оплачивать услуги иностранными картами, то можно выбирать все что угодно. Многие хостеры также поддерживают оплату криптой. Если ищете подешевле, существует веб‑сайт LowEndBox (и его спутник, форум LowEndTalks), где публикуются разные акционные предложения от хостеров со всего мира, и иногда там можно найти очень неплохие виртуалки очень задешево, например за 10–15 долларов в год. Главное проверяйте внимательно, совсем дешевые VPS (за 7 долларов в год) могут не иметь публичного IPv4-адреса (только IPv6 и NAT‑IPv4). Поставить и использовать прокси на них тоже можно (через Cloudflare CDN), но неопытным пользователям я бы в это ввязываться не советовал.

Особых системных требований нет. Я тестировал XRay с несколькими пользователями на очень дешевом VPS с одним ядром и 512 мегабайт памяти, проблем не было никаких, более того, он вполне себе работает даже на виртуалках с 256 мегабайтами. Тип виртуализации — особо не важен, нормально будет и с КVM, и с OpenVZ.

Какую ставить операционную систему? Я буду описывать настройку на Debian‑based ОС, то есть если вы чайник в этом деле, то выбирайте Debian или Ubuntu. На других дистрибутивах работать тоже будет, но могут отличаться пути к файлам, команды пакетного менеджера, и т. д. Если вы решили использовать Ubuntu, то выбирайте LTS-версии, с ними меньше проблем и они дольше получают обновления безопасности. Важно: если вы используете Fedora/CentOS и после установки ничего не работает (не удается подключиться к прокси), проверьте, что на сервере на фаерволе не заблокированы порты, которые вы используете (например, 443) или вообще все порты кроме разрешенных.

Итак, вы купили VPS у хостера и вам пришли логин и пароль от него. Что я советую сделать сразу после установки:

  1. Сменить пароль пользователя root с изначального на ваш уникальный. Не использовать учетную запись root, а создать непривелигированного пользователя командой adduser и назначить ей сложный пароль командой passwd <username>. Когда вы убедитесь, что она работает, стоит запретить вход для root‑юзера по SSH, выставив (раскомментировав) в «no» или «prohibit‑password» опцию PermitRootLogin в файле /etc/ssh/sshd_config

  2. Перевесить SSH со стандартного порта 22 на нестандартный порт (например, на 54 321, 41 467, выберите любой рандомный выше 1000). Это особенно важно для маскировки XTLS‑Reality. Порт задается опцией «Port» в том же /etc/ssh/sshd_config (но если у вас Ubuntu 22.10 и новее, то там все сложнее)

  3. Обновите версии пакетов в системе на свежие, в Debian и Ubuntu это делается командами apt update и apt upgrade.

Процесс установки XRay неоднократно описан в упомянутых выше статьях, я повторю его здесь.

Разработчики XRay разработали скрипт, который автоматически загружает XRay для вашей операционной системы и создает systemd‑юнит для его запуска: ссылка на скрипт.

Установить его можно одной длинной командой:

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

Единственное отличие при использовании скрипта заключается в том, что файлы конфигурации XRay будут храниться не в /opt/xray, а в /usr/local/etc/xray/.

Или вы можете установить XRay вручную. Для этого переходим по ссылке на последний релиз XRay-core и скачиваем самую свежую версию:

wget https://github.com/XTLS/Xray-core/releases/download/v1.8.9/Xray-linux-64.zip

Создаем каталог, распаковываем и делаем исполняемым файл (поскольку он поставляется в архиве .zip, права доступа могут быть потеряны при распаковке):

mkdir /opt/xray
unzip ./Xray-linux-64.zip -d /opt/xray
chmod +x /opt/xray/xray

Затем создаем systemd-юнит (nano /usr/lib/systemd/system/xray.service) и вставляем в него следующий текст

[Unit]
Description=XRay
[Service]
Type=simple
Restart=on-failure
RestartSec=30
WorkingDirectory=/opt/xray
ExecStart=/opt/xray/xray run -c /opt/xray/config.json
[Install]
WantedBy=multi-user.target

Активируем:
systemctl daemon-reload
systemctl enable xray

Просто: Настройка VLESS c XTLS-Reality

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

Вариант раз: это должно быть какой‑то очень популярный иностранный сайт, желательно не связанный с политикой и СМИ, не относящийся к «нежелательным организациям», и к которому наврядли возникнут вопросы со стороны органов РФ (например, youtube.com — довольно плохой выбор в этом плане, есть шанс блокировки в будущем). Просто попробуйте вспомнить какой‑нибудь ресурс, которым пользуются много людей и компаний, который цензоры до последнего не будет блокировать без большой нужды, чтобы не разломать пол‑интернета (и нет, это не гугл). Предлагать варианты тут не буду, пусть каждый выберет какой‑то свой. И да, не обязательно использовать главный домент сайта, можно брать какие‑то из поддоменов.

Выбрав домен, проверяем, что он подходит под наши критерии командой curl. Например, для www.microsoft.com команда будет выглядеть так:

curl -v -L --tlsv1.3 --http2 https://www.microsoft.com

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

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

Запускаете ее командой ./RealiTLScanner -addr IP_вашего_VPS -showFail
и внимательно изучаете результаты. Если в какой‑то из строк написано «Found TLS», то сначала попробуйте зайти на этот адрес (по доменному имени) браузером, должен открыться какой‑то сайт без ошибок, далее проверьте с помощью какого‑нибудь сервиса или утилитой ping, что IP‑адрес за этим доменом совпадает с тем, что вы нашли (иначе это может быть какой‑нибудь ваш единомышленник, поднявший XTLS‑Reality у себя), и в заключение проверьте командой curl как выше, что сервер соответствует всем требованиям. Если сработало — поздравляю, используйте этот домен для маскировки.

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

Важно отметить тот факт, что XTLS‑Reality имеет недостаток — если сайт, под который вы маскируетесь, испытывает технические проблемы (например, временно отключил TLSv1.3), или огородился от вашего сервера (устав от проксируемых запросов на установление соединений), или попал под блокировку, то точно так же перестанет работать и ваш прокси. В этом случае совершенно нормально будет поменять используемый маскировочный домен на какой‑то другой. Мы потом еще настроим на сервере Shadowsocks и SSH как запасной вариант на случай проблем, а пока продолжаем с настройкой VLESS.

Вам нужно будет сгенерировать несколько параметров командами XRay:

./xray uuid  — сгенерирует UUID, это что‑то типа логина пользователя
./xray x25519 — сгенерирует приватный и публичный ключ сервера.

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

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

Итак, приводим (редактором nano или как вам удобнее) файл /opt/xray/config.json (или /usr/local/etc/xray/config.json если ставили скриптом) к следущему виду:

{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"listen": "IP_адрес_вашего_сервера",
"port": 443,
"protocol": "vless",
"tag": "reality-in",
"settings": {
"clients": [
{
"id": "ваш_UUID",
"email": "user1",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "ваш_маскировочный_домен:443",
"xver": 0,
"serverNames": [
"ваш_маскировочный_домен"
],
"privateKey": "ваш_ПРИВАТНЫЙ_ключ",
"minClientVer": "",
"maxClientVer": "",
"maxTimeDiff": 0,
"shortIds": [""]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"routing": {
"rules": [
{
"type": "field",
"protocol": "bittorrent",
"outboundTag": "block"
}
],
"domainStrategy": "IPIfNonMatch"
}
}

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

Файл состоит из нескольких секций. Первая — log, определяет настройки логгирования (мы ставим уровень info). Вторая, «inbounds», определяет, какие протоколы и с какими параметрами будут исползоватся для входящих подключений на прокси. Третья, «outbounds», описывает, куда может пойти трафик с вашего прокси, там указаны «freedom» (выход в чистый интернет), «blackhole» (если надо не пускать пользователя куда‑то) и «dns» (встроенный dns‑сервер). Последний «routing» определяет дополнительные правила, что и куда мы будем перенаправлять, например, подключения по протоколу Bittorrent блокируем, отправляя в blackhole, чтобы ваши пользователи не создали вам проблем, раздавая гигабайты через ваш сервер (если не надо можете удалить эти строки из конфига). Все остальное отправляется в свободный интернет (по умолчанию).

Что вам важно в нем поменять:

  • в "inbounds" в параметре "listen" укажите IPv4-адрес вашего сервера

  • inbounds -> settings -> clients -> id укажите UUID, который вы сгенерировали ранее

  • inbounds -> streamSettings -> realitySettings -> serverNames укажите домен, под который вы маскируетесь, и там же в "dest" укажите еще раз его же, но добавив в конец ":443"

  • inbounds -> streamSettings -> realitySettings -> privateKey сюда вставьте ваш приватный ключ, который вы сгенерировали ранее

Сохраните файл. Готово! Можно пробовать.

Перезапустите XRay командой systemctl restart xray. Сразу после этого можно проверить что все нормально командой systemctl status xray (должно быть написано active (running)), а если он не запускается или что-то идет не так, то можно посмотреть сообщения об ошибках и логи командой journalctl -u xray. Обычно дело в лишней или пропущенной запятой в конфиге (можно использовать онлайновые JSON-валидаторы для проверки).

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

vless://ваш_UUID@IP_адрес_вашего_сервера:443/?encryption=none&type=tcp&sni=домен_сайта&fp=chrome&security=reality&alpn=h2&flow=xtls-rprx-vision&pbk=ваш_публичный_ключ&packetEncoding=xudp

Соответственно, вместо ваш_UUID подставляете UUID, дальше после собаки — IPv4 адрес вашего сервера, домен_сайта -фейковый домен, под который вы маскируете, ваш_публичный_ключ — публичый ключ, который вы сгенерировали выше, а в конце после символа # можно написать название вашего сервера, которое увидит пользователь (латинскими буквами, без пробелов).

И пусть вас не смущает encryption=none, ваши данные будут надежно зашифрованы, этот параметр просто говорит об отстутствии дополнительных слоев шифрования в VLESS, он к нему неприменим (смотрите начало статьи).

Пример:

vless://a69578b6-bc45-48bd-94c4-a22c10a86c9d@77.88.21.37:443/?encryption=none&type=tcp&sni=pornhub.com&alpn=h2&fp=chrome&flow=xtls-rprx-vision&security=reality&pbk=Ho5AGwe2seTxluUNgQN14FA_2PorZSPPdgTEEXwiDG8&packetEncoding=xudp#MyVlessServer

Обратите внимание, в конфиге используется приватный ключ сервера, а в ссылке — публичный, не перепутайте.

Эту ссылку можно вставлять в разные клиенты (чаще всего допускается вставка из буфера обмена), и из нее автоматически создатся подключение в клиенте. Можете делиться этой ссылкой со своими родными и друзьями. На мобильных клиентах часто есть функция сканирования QR‑кода камерой, в таком случае из этой ссылки можно сгенерировать QR‑код любым онлайновым генератором кодов и использовать его.

Если что‑то не работает, ссылку всегда можно вставить в клиент типа Nekray/Nekobox (и под Android тоже), и проверить, все ли там правильно, каждый параметр по‑отдельности.

Скрытый текст

Скрытый текст

Цитата из статьи MiraclePtr:

Сделайте проброс порта не только на 443/TCP-порт (его делает XTLS-Reality), а еще на 443/UDP и 80/TCP до сервера, под который вы маскируетесь. Например, если вы маскируетесь под www.microsoft.com, то отрезолвте его IP-адрес (с помощью nslookup, ping или какого-нибудь онлайн-сервиса), а потом добавьте правила iptables (можно засунуть в /etc/rc.local, если он у вас есть - см. инструкции для вашего Linux-дистрибутива):

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 443 -j DNAT --to-destination fake_site_ip:443
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination fake_site_ip:80
(вместо eth0 должен быть ваш сетевой интерфейс, иногда бывает ens3, например).

Клиенты

Самый красивый и простой в настройке: Hiddify‑Next. Работает под Windows, Linux, macOS, под Android, в разработке версия под iOS. Скачать бинарник под вашу десктопную систему или.apk‑файл для Android можно на странице проекта.

Чем он хорош? Первое — основан на sing‑box и поддерживает много всего, второе — простой интерфейс (буквально одна большая кнопка «сделать зашибись» «Подключиться»):

Третье — при первом запуске он предлагает выбрать страну, и если вы выберете Россию, то автоматически применятся правила, направляющие трафик до иностранных ресурсов через ваш прокси, а до российских сайтов — напрямую, ничего дополнительно настраивать не надо. А если вы выберете "Другое", то на прокси пойдет весь ваш трафик. Эту опцию также можно изменить уже потом в настройках:

Новые прокси (ссылкой из буфера обмена) добавляются по клику на «+» справа сверху. Главное не используйте опцию «Ввести вручную», ссылка не вставится (это баг). В некоторых версиях есть ещё небольшой баг, после нажатия на кнопку подключения клиент подключается, но сайты не открываются. Достаточно отключиться и подключиться ещё раз и все заработает.

На Android интерфейс аналогичный, только более упрощенный (и можно сканировать QR с камеры):

Из других клиентов можно упомянуть:

Как настраивать раздельную маршрутизацию в других разных клиентах и всякие полезные лайфхаки можно найти в этой статье (FAQ): https://habr.com/ru/articles/770400/

Что же делать пользователям iPhone? Вариант раз, под айфоны и айпады есть клиент Streisand.


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

streisand://aW1wb3J0L3JvdXRlOi8vWW5Cc2FYTjBNRERWQVFJREJBVUdEaGdaR2xWeWRXeGxjMTFrYjIxaGFXNU5ZWFJqYUdWeVZHNWhiV1ZlWkc5dFlXbHVVM1J5WVhSbFozbFVkWFZwWktJSEU5VUlDUW9MREEwT0R4QVNXMjkxZEdKdmRXNWtWR0ZuWFdSdmJXRnBiazFoZEdOb1pYSldaRzl0WVdsdVVtbHdWMjVsZEhkdmNtdFdaR2x5WldOMFZtaDVZbkpwWktDaEVWaG5aVzlwY0RweWRWZDBZM0FzZFdSdzFCUVZDZ3dORGhZU1cyOTFkR0p2ZFc1a1ZHRm5YV1J2YldGcGJrMWhkR05vWlhLaEYxbGtiMjFoYVc0NmNuVlpVbFV0WkdseVpXTjBYRWxRU1daT2IyNU5ZWFJqYUY4UUpFTXhRMFZEUlRJd0xUa3lRekF0TkRFNU5DMDRRVVV5TFRZM1JUUTRRalUzTTBZNU9RQUlBQk1BR1FBbkFDd0FPd0JBQUVNQVRnQmFBR2dBYndCeUFIb0FnUUNJQUlrQWl3Q1VBSndBcFFDeEFMOEF3UURMQU5VQTRnQUFBQUFBQUFJQkFBQUFBQUFBQUJzQUFBQUFBQUFBQUFBQUFBQUFBQUVK

После импорта нужно перейти в Streisand в настройки роутинга, выбрать эту конфигурацию и активировать роутинг.

Или ещё один вариант:

streisand://aW1wb3J0L3JvdXRlOi8vWW5Cc2FYTjBNRERWQVFJREJBVUdEQjhnSVZWeWRXeGxjMTFrYjIxaGFXNU5ZWFJqYUdWeVZHNWhiV1ZlWkc5dFlXbHVVM1J5WVhSbFozbFVkWFZwWktNSEVSWFVDQWtLQ3d3TkRoQmRaRzl0WVdsdVRXRjBZMmhsY2xaa2IyMWhhVzVTYVhCYmIzVjBZbTkxYm1SVVlXZFdiR2x1WldGeW9LRVBXR2RsYjJsd09uSjFWbVJwY21WamROSVNDUkFUVzI5MWRHSnZkVzVrVkdGbm9SUmVjbVZuWlhod09pNHFYQzV5ZFNUVEZoY0pFQmdaVzI5MWRHSnZkVzVrVkdGblhXUnZiV0ZwYmsxaGRHTm9aWEpXYUhsaWNtbGtwUm9iSEIwZVh4QVFaMlZ2YzJsMFpUcDBaV3hsWjNKaGJWOFFFR2RsYjNOcGRHVTZkMmhoZEhOaGNIQmRaMlZ2YzJsMFpUcGhjSEJzWlY1blpXOXphWFJsT21kdmIyZHNaVjVuWlc5emFYUmxPbWwwZFc1bGMyMEFVZ0JWQUMwQVJBQnBBSElBWlFCakFIVFlQTjMzMkR6ZCtscEpVRTl1UkdWdFlXNWtYeEFrUXpRelFrVTVSRGt0T0RGQk15MDBRamhGTFRrM1JrTXRPRFE0TlVFNFJqZENRelkyQUFnQUV3QVpBQ2NBTEFBN0FFQUFSQUJOQUZzQVlnQmxBSEVBZUFCNUFIc0FoQUNMQUpBQW5BQ2VBSzBBdEFEQUFNNEExUURiQU80QkFRRVBBUjRCTFFGSUFWTUFBQUFBQUFBQ0FRQUFBQUFBQUFBaUFBQUFBQUFBQUFBQUFBQUFBQUFCZWc9PQ==

Эта вторая конфигурация содержит 3 правила, 1-е для всех российских IP‑адресов по GeoIP, второе для всех .ru‑доменов, а третье также напрямую пропускает трафик до google, apple, telegram и whatsapp — возможно во время блокировок месседжеров или ютуба не самая лучшая идея, в случае чего это третье правило можно удалить.

Другие достойные клиенты под iOS: FoxRay (бесплатный):

Роутинг настраивается выбором Routing & DNS -> Simple -> Domain rule set = RU

А ещё есть довольно свежая разработка v2raytun:

Нажав на Direct Service можно настроить прямой роутинг к доменам Rai, а также разным сервисам на выбор (Google, YouTube, мессенджеры, российские банки).

И ещё один клиент, который можно упомянуть - Shadowrocket, но он платный.

Просто: добавляем Shadowsocks

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

Добавим в наш конфиг возможность подключаться через Shadowsocks, так сказать, на черный день. В секцию inbounds в нашем конфиге после нашего первого inbound'а (не забудьте добавить запятую после скобки), добавим еще один inbound:

...
{
"port": 54321,
"tag": "ss-in",
"protocol": "shadowsocks",
"settings": {
"method": "2022-blake3-aes-128-gcm",
"password": "WmhpdmUgQmVsYXJ1cyEhIQ==",
"network": "tcp,udp"
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
...

В поле "port" впишите какой-нибудь номер порта (не тот, что в примере!), в поле password вставьте произвольный ключ длиной 16 байт в формате Base64, можно сгенерировать его командой openssl rand -base64 16

Скрытый текст
{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"listen": "IP_адрес_вашего_сервера",
"port": 443,
"protocol": "vless",
"tag": "reality-in",
"settings": {
"clients": [
{
"id": "ваш_UUID",
"email": "user1",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "ваш_маскировочный_домен:443",
"xver": 0,
"serverNames": [
"ваш_маскировочный_домен"
],
"privateKey": "ваш_ПРИВАТНЫЙ_ключ",
"minClientVer": "",
"maxClientVer": "",
"maxTimeDiff": 0,
"shortIds": [""]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
},
{
"port": 54321,
"tag": "ss-in",
"protocol": "shadowsocks",
"settings": {
"method": "2022-blake3-aes-128-gcm",
"password": "WmhpdmUgQmVsYXJ1cyEhIQ==",
"network": "tcp,udp"
}
},
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"routing": {
"rules": [
{
"type": "field",
"protocol": "bittorrent",
"outboundTag": "block"
}
],
"domainStrategy": "IPIfNonMatch"
}
}

Ссылка делается еще проще:
ss://method:password@IP_адрес_сервера:порт

Пример для конфига выше:

ss://2022-blake3-aes-128-gcm:WmhpdmUgQmVsYXJ1cyEhIQ==@77.88.21.37:54321#MyShadowsocksServer

Это ссылку тоже можно копипастить в клиенты, генерировать из нее QR-код и делиться с друзьями.

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

Просто: настройка SSH-прокси

И добавим еще про запас SSH. SSH-сервер вы уже перевесили на нестандартный порт, как я советовал выше (не 22, ведь перевесили же, правда?). Больше никаких особых действий не требуется, но я бы посоветовал создать на сервере отдельного системного пользователя для SSH-прокси, ограничив его в правах, чтобы подключаясь к серверу логином-паролем клиент не мог выполнять никаких команд в системе. Сделать это можно так:

adduser --no-create-home --shell /bin/true proxyclient # создали юзера

Готово!

Ссылка может быть такой:
ssh://proxyclient:пароль@IP_адрес_сервера:порт#MySshServer
такую ссылку понимает только Streisand и больше никто.

В Hiddify‑next, к сожалению, есть баг, ссылка вставляется, подключение создается, но не работает. Пока баг не исправят, на Андроиде можно использовать вышеупомянутый NekoboxAndroid или SSH Custom, создав там подключение с типом SSH и заполнив логин, пароль, адрес сервера и порт руками.

В десктопном Nekobox (не забудьте выбрать Core = sing‑box в Basic Settings) тоже можно добавлять SSH‑подключения, там нет пункта «SSH» в списке типов, но можно выбрать «Custon (sing‑box outbound)» и ввести конфиг вручную:

{
"type": "ssh",
"server": "IP_адрес",
"server_port": ваш_порт,
"user": "proxyclient",
"password": "ваш_пароль",
"client_version": "SSH-2.0-OpenSSH_7.4p1"
}

Важно: в некоторых дистрибутивах по умолчанию SSHd не разрешает туннелирование трафика. Чтобы разрешить, нужно на сервере в файле /etc/ssh/sshd_config добавить/заменить параметр AllowTcpForwarding yes.

Просто: увеличиваем скорость

Можно настроить на сервере Bottleneck Bandwidth и Round-trip propagation time (BBR) congestion control algorithm. В файл /etc/sysctl.conf вписать

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

и потом выполнить команду sysctl -p

Чуть сложнее: добавляем QUIC

Изначально тут была описана настройка mKCP, но он, кажется, с каких-то пор сломан в XRay и работает нестабильно. Поэтому мы вместо него настроим QUIC. Он, как и mKCP, работает по UDP, оптимизирован для работы под плохие каналы, а еще он умеет маскировать свои пакеты под SRTP (FaceTime), DTLS (он используется в WebRTC, тоже звонки в мессенджерах) и uTP (Bittorrent), поэтому заслуживает внимания. Один минус — как и mKCP он не поддерживается в клиентах на базе Sing‑box, то есть в Hiddify‑next работать не будет, как и Nekobox. Зато можно настроить его в Nekoray (с ядром XRay), v2rayN, v2rayNG, и т. д.

Добавьте еще один inbound:

"inbounds": [
...
{
"port": ПОРТ,
"protocol": "vless",
"tag": "kcp-in",
"settings": {
"clients": [
{
"id": "ВАШ_UUID",
"email": "user1"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "quic",
"quicSettings": {
"quicSettings": {
"security": "aes-128-gcm",
"key": "MySecretPassword",
"header": {
"type": "srtp"
}
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
},
...

«port» — любой нестандартный порт. «id» — ваш UUID, как в других примерах с VLESS. «header» — можно выбрать srtp, utp, dtls, либо, если вы полностью удалите параметр "header", то пакеты будут не похожи ни на что; «key» — придумайте какой‑нибудь пароль для шифрования.

Ссылка для клиентов, которые поддерживают mKCP (например, v2rayN, v2rayNG, Nekoray, Streisand, Foxray)

vless://ваш_UUID@IP_адрес_вашего_сервера:порт/?encryption=none&type=quic&security=none&quicSecurity=aes-128-gcm&key=ВАШ_ПАРОЛЬ&headerType=ваш_header_type&packetEncoding=xudp

Если на сервере у вас нет "header", то уберите также "headerType" из URL.

Пример:

vless://a69578b6-bc45-48bd-94c4-a22c10a86c9d@77.88.21.37:443?security=none&encryption=none&quicSecurity=aes-128-gcm&key=password&headerType=srtp&type=kcp#MyQuicServer

Сложно: переадресация на Cloudflare WARP

Считается, что если у вас есть прокси за границей, то лучше не ходить на него на сайты расположенные в РФ или имеющие отношение к ее компаниям. Логика простая: если цензоры могут анализировать ваш трафик, плюс трафик подконтрольных им ресурсов, то сопоставив факт «подключение от вас на иностранный IP‑адрес, и подключение с этого IP‑адреса на сайт внутри страны, ровно в один момент и с одинаковыми объемами принятых‑переданных данных во времени» почти однозначно скажет, что на этом IP‑адресе есть прокси.

Поэтому часто советуют настраивать раздельную маршрутизацию на клиентах (доступ через прокси только на иностранные сайты, а к ресурсам внутри страны напрямую), но что делать если пользователь не осилил это сделать, или что‑то не сработало? Можно, конечно, отправлять на прокси обращения к российским доменам и российским IP‑адресам в блок, но это не самая user‑friendly тактика.

Зато мы можем сделать следущее. Есть Cloudflare Warp — бесплатный VPN‑сервис для всех желающих от известной телеком‑компании. Он основан на Wireguard, Wireguard блокируется в россии, но в иностранной юрисдикции, где у вас стоит сервер, проблем быть не должно. XRay может работать как wireguard‑клиент, и может переадресовывать на другие сервера запросы, попадающие под определенные критерии, следовательно, если мы сложим этот паззл, то мы сможем выпускать определенные запросы в Интернет с другого IP‑адреса, принадлежащего Cloudflare.

Заодно мы можем заворачивать на WARP запросы к сервисам, которые не пускают к себе пользователей с адресов хостеров, например, ChatGPT. Давайте попробуем сделать это.

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

Вам надо сгенерировать креды доступа к Cloudflare WARP. В интернете есть много скриптов для этого, (раз, два), а в мобильном клиенте NekoboxForAndroid есть даже специальная фича в меню Tools, которая это делает. Для примера я уже сгенерил реальные данные, но сколько они будут работать после публикации на Хабре отвечать не могу :)

Итак, у вас есть реквизиты для доступа к WARP: адрес сервера, порт, локальные ipv4/ipv6 адреса, приватный ключ, публичный ключ, MTU, и строка под названием «Reserved». Создадим новый элемент в конце массива outbound в конфиге XRay для этого:

"outbounds": [
...
{
"protocol": "wireguard",
"tag": "warp",
"settings": {
"secretKey": "KCvEagg0f0HomfZTt/CnnOwNkU0amQWDpdWLFyq6nlU=",
"address": [
"172.16.0.2/32",
"2606:4700:110:86fc:8fa7:2f45:cf12:8db/128"
],
"peers": [
{
"endpoint": "engage.cloudflareclient.com:2408",
"publicKey": "bmXOC+F1FxEMF9dyiK2H5/1SUtzH0JuVo51h2wPfgyo="
}
],
"mtu": 1280,
"reserved": "WPM9",
"workers": 2,
"domainStrategy": "ForceIP"
}
},
...
]

А потом добавим условия в секцию "routing"->"rules":

"routing":
{
"rules":
[
...
{
"type": "field",
"domain": ["geosite:openai", "geosite:category-gov-ru", "domain:ru"],
"outboundTag": "warp"
},
{
"type": "field",
"ip": ["geoip:ru"],
"outboundTag": "warp"
},

...
]
}

Важно! Когда не подходит ни одно из правил в rules, XRay шлёт трафик на первый inbound. Поэтому outbound для WARP лучше передвинуть в конец списка, а первым пусть всегда будет freedom.

Перезапускаемся, и все работает. Если не работает — смотрим логи, почему. Можно для теста открыть какой‑нибудь 2ip.ru и сравнить его результат с 2ip.io.
На клиенте ничего дополнительно настраивать не надо.

Полный список доступных категорий geoip и geosite можно найти вот в этой репе: v2fly/domain-list-community: Community managed domain list. Generate geosite.dat for V2Ray. (github.com)

Сложно: steal-from-yourself, или если у вас есть свой сайт. А еще subscriptions

Возможно вы не хотите зависить от чужих сайтов и доменов, а хотите использовать свой, и готовы ради этого купить домен, настроить веб‑сервер и сертификаты. Или даже возможно у вас уже есть какой‑нибудь свой сайт на своем VPS или любой другой веб‑сервис (например, файлохранилка). И вы хотите на тот же сервер заодно установить прокси, и это отличный варинант.

Решение простое: вы буквально будете маскироваться под свой собственный сайт. Допустим, вы установили на сервер веб‑сервер, зарегистрировали домен, получили на этот домен сертификат с помощью let's encrypt или еще как, настроили сервер с этим сертификатом, наполнили сайт контентом или установили там какой‑то сервис. Веб‑сервер у вас слушает на порту 443.

Чтобы добавить прокси, вам надо перевесить веб‑сервер на какой‑нибудь другой порт, например 8443, и сделать так, чтобы он слушал не на всех IP‑адресах (0.0.0.0), а только на localhost (127.0.0.1).

После этого настраиваете XRay с XTLS‑Reality так, как было описано в самом начале, только в «serverNames» указываете не какой‑то чужой, а ваш домен, а в «dest» пишете «127.0.0.1:8443».

После этого у вас на 443 порту по‑прежнему доступен ваш сайт/сервис, но вместе с тем вы можете подключаться к нему как к прокси с XTLS‑Reality и ни от кого не зависеть. Идеальная маскировка.

И еще один плюс такой схемы. На своем веб‑сервере мы можете разместить все используемые ссылки для подключения к прокси («vless://», «ss://» и т. д.) где‑нибудь в текстовом файле, ограничив доступ к нему с robots.txt, чтобы его не индексировали поисковики. После этого вы можете раздавать знакомым и друзьям и вставлять в клиенты уже не ссылки на прокси, а одну ссылку на этот ваш файл — прокси‑клиент скачает файл с вашего сервера и добавит все ссылки из него к себе. Этот механизм обычно называют «Subscriptions». А если что‑то поменялось, то достаточно нажать на кнопку типа «Обновить подписки», и клиент скачает обновление, а некоторые клиенты даже умеют делать это автоматически по расписанию. Удобно, да?

Сложно: VLESS over HTTP/2

XRay, как и многие другие прокси, при стандартной настройке на каждое подключение от вашего компьютера (браузера) к какому‑либо удаленному серверу создает новое подключение от вашего компьютера (прокси‑клиента) к прокси‑серверу. Условно говоря, если вы в браузере открываете сайт, при этом браузер обращается к 5 хостам в Интернете, от вашего прокси‑клиента к вашему прокси‑серверу будет установлено 5 соединений (и еще одной для DNS‑резолвов). Некоторые считают это неэффективным. В прокси‑клиентах существует режим «Mux» для мултиплексирования соединений, но он работает не всегда. Например, если у вас и на клиенте и на сервере XRay, то он будет работать без проблем, если у вас и на клиенте и на сервере Sing‑box, то тоже, а вот если у вас на клиенте Sing‑box, а на сервере XRay, то после включения этого режима наоборот все перестанет работать.

Но есть решение, которое работает со всеми клиентами и серверами — HTTP/2 в качестве транспорта. HTTP/2 имеет мультплексирование на уровне протокола, и прокси будет его использовать, в итоге вместо множества подключений от прокси‑клиента к прокси‑серверу будут висеть всего одно или два. Единственный минус, пока что HTTP/2-транспорт не совместим с XTLS‑Vision, нужно будет убрать поле «flow» и на клиенте и на сервере.

Не буду вдаваться в подробности, это все описано в документации и в примерах XRay, просто приведу пример inbound'а в конфиге и ссылки для такого подключения:

  "inbounds": [
{
"listen": "IP_адрес_вашего_сервера",
"port": 443,
"protocol": "vless",
"tag": "reality-in",
"settings": {
"clients": [
{
"id": "ваш_UUID",
"email": "user1"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "http",
"httpSettings": {
"host": ["somefakedummytext.com"],
"path": "/0J3QsNCy0LDQu9GM0L3Ri9C5",
"read_idle_timeout": 10,
"health_check_timeout": 15,
"method": "GET"
},
"security": "reality",
"realitySettings": {
"show": false,
"dest": "ваш_маскировочный_домен:443",
"xver": 0,
"serverNames": [
"ваш_маскировочный_домен"
],
"privateKey": "ваш_ПРИВАТНЫЙ_ключ",
"minClientVer": "",
"maxClientVer": "",
"maxTimeDiff": 0,
"shortIds": [""]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
},

Ссылка: vless://ваш_UUID@IP_адрес_вашего_сервера:443/?encryption=none&type=http&sni=домен_сайта&host=somefakedummytext.com&path=%2F0J3QsNCy0LDQu9GM0L3Ri9C5&fp=chrome&security=reality&alpn=h2&pbk=ваш_публичный_ключ&packetEncoding=xudp

Сложно: работа через CDN

CDN могут быть отличным запасным вариантом, когда ваш сервер попал под блокировку или возникли какие‑то проблемы с Reality. Прямо скажем, вероятность бана CDN существенно ниже, чем какого‑то отдельного адреса или домена.

Напрямую с VLESS/XTLS/SS работать через CDN нельзя, но мы можем использовать Websocket‑транспорт, который отлично пролезает через популярные CDN такие как Cloudflare, GCore, Amazon Cloudfront, Fastly и другие. Кстати, ещё вебсокеты хорошо пролезают через всякие корпоративные системы фильтрации интернета в офисах.

Настраивается оно довольно просто, если бы не одно но. У нас на 443 порту уже висит XTLS‑Reality, маскируясь под чужой сайт, 80 порт тоже лучше не занимать чем‑то иным (будет странно, если на разных портах отвечают разные сайты), поэтому встает вопрос, как совместить на одном сервере и то и то. В своей статье MiraclePtr предлагал для этого довольно сложные варианты с SNI‑прокси или цепочки, когда запрос с XRay уходит на Nginx, потом обратно на XRay, и все это с сертификатами. Мы же существенно упростим схему.

Итак, доступны два варианта, и вам надо решить, какой именно будете использовать. Вариант первый, если 1) у вас есть домен (любой, хоть самый всратый.ru с распродажи за 100 рублей) и 2) у вашего сервера есть IPv6-адрес (а он сейчас есть почти всегда) — вы можете проксироваться через Cloudflare.

Вариант второй, если у вас есть карточка иностранного банка или кто‑нибудь у кого можно ее попросить (платить не надо, она нужна для регистрации бесплатного аккаунта на Amazon Cloud, деньги списывать не будут, там в бесплатном тарифе включен один терабайт трафика) — то вы можете проксировать через Amazon Cloudfront. Домен покупать не нужно.

Настраиваются оба эти варианта со стороны сервера почти одинаково.

Дополнительный Inbound будет выглядеть как‑то так:

"inbounds": [
...
{
"port": ПОРТ,
"listen": "IP_АДРЕС",
"protocol": "vless",
"tag": "ws-in",
"settings": {
"clients": [
{
"id": "ваш_UUID",
"email": "user1"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/0J3QsNCy0LDQu9GM0L3Ri9C5"
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"quic",
"http",
"tls"
]
}
}

«/0J3QsNCy0LDQu9GM0L3Ri9C5» в «path» надо заменить на что‑то свое, уникальное (любая строка из латинских букв и цифр, путь URL). rprx‑xtls‑vision не используется, он не работает через CDN. А вот дальше внимательно. В зависимости от того, какую схему будете использовать.

Если используете Cloudflare, то: в поле «listen» пишете IPv6‑адрес вашего сервера, а порт ставите 80. Обратите внимание, IPv6-адрес в конфиге XRay должен быть в фигурных скобках, например «[aaaa:bbbb:cccc::1]».

Если используете Amazon, то: в поле «listen» пишете IPv4‑адрес вашего сервера (как с Reality), а порт ставите какой‑нибудь нестандартный, например 33380.

Почему так? Cloudflare умеет проксировать IPv4 в IPv6, но номера портов поддерживает только стандартные. Amazon не умеет работать с IPv6-origins, зато не возражает против нестандартного порта (о которых цензор даже и не узнает).

Теперь надо настроить саму CDN. Начнем с Cloduflare. Регистрируетесь там, регистрируете домен (где угодно), добавляете домен в Cloudflare и делегируете его на те сервера, которые вам скажет CF. У CF отличный хелп, а если что‑то не ясно, в интернете есть тонна инструкций обо всем этом.

Дальше. В «DNS» в интерфейсе Cloduflare Dashboard создайте запись типа AAAA для вашего домена, можно для главного (@), можно для какого‑то поддомена, обязательно поставьте активной галочку Proxy status и сохраните:

Не сомневайтесь, что у домена есть только AAAA (IPv6) запись. Cloudflare умный, и с включенныи проксированием заполнит и поля A, и поля AAAA для домена своими серверами, и будет проксировать IPv4 в IPv6, если у клиента нет IPv6.

Далее, на вкладке «SSL», выберите режим «Flexible». При нем Cloduflare будет принимать запросы от вашего прокси по TLS, автоматически сгенерировав для домена валидный сертификат и подписав его своим корневым сертификатом, а вот к вашему серверу будет идти по обычному HTTP по IPv6. Мы так сделали для упрощения настройки сервера, это только для трафика между CF и вашим сервером, цензоры его никогда и не увидят.

В заключение на вкладке "Network" проверьте, что включены IPv6 и вебсокеты:

На этом настройка окончена. Можете попробовать зайти браузером на свой домен, который вы прописали в CF — должна отобразиться 404 ошибка (это нормально), но без ошибок сертификатов.

Теперь переходим к Amazon Cloud. Регистрируетесь, привязываете карточку (можно иметь на ней нулевой баланс, деньги не списывают). Идете в Cloudfront, там нажимаете «Create distribution» и заполняете поля:

В поле «Origin domain» Amazon требует именно домен, просто IP‑адрес ввести нельзя. У вас домена может не быть, он особо и не нужен. Идите на dynu.org или любой другой DynDNS‑сервис, зарегистрируйтесь там, создайте бесплатный dynamic dns домен, направив его на IPv4-адрес вашего сервера — Amazon схавает такой бесплатный домен вообще без проблем.

В поле HTTP Port впишите не 80 порт (на картинке неправильно), а тот нестандартный порт, который вы выбрали на сервере в новом inbound. Дальше пройдитесь по параметрам, отключите всевозможные Origin Shield, firewall, кэширование (CachingDisabled), завершите создание домена кнопкой «Create distribution» и подождите 5–10 минут. Amazon создаст для вас домен типа *.cloudfront.net, который вы будете использовать для подключения к вашему прокси.

Осталось сгенерировать ссылку для подключения к таким прокси (ее структура будет одинаковая и для Cloudflare, и для Amazon):

vless://ваш_UUID@ваш_домен:443/?encryption=none&type=ws&sni=ваш_домен&host=ваш_домен&path=%2Fваш_path%3Fed%3D2048&ed=2048&eh=Sec-Websocket-Protocol&security=tls&fp=chrome&packetEncoding=xudp

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

vless://uuid@domain.xyz:443?security=tls&sni=domain.xyz&fp=chrome&type=ws&path=/anypath?ed%3D2048&host=domain.xyz&encryption=none

если вдруг что-то не работает, можно вставить ссылку в Nekobox, посмотреть, во что она разобралась, подправить если что не так, и сгенерировать ее оттуда (функция Share) еще раз.

Скрытый текст

vless://a69578b6-bc45-48bd-94c4-a22c10a86c9d@somedomain.xxx:443/?encryption=none&type=ws&sni=somedomain.xxx&host=somedomain.xxx&path=%2F0J3QsNCy0LDQu9GM0L3Ri9C5%3Fed%3D2048&ed=2048&eh=Sec-Websocket-Protocol&security=tls&fp=chrome&packetEncoding=xudp#MyCdnServer

Тут все так же, UUID, домент (ваш или от Amazon, он в ссылке встречается три раза), ваш_path — это то, что вы указали как «path» в конфиге (в примере «0J3QsNCy0LDQu9GM0L3Ri9C5»), и в ссылке к этому path добавляется %3Fed%3D2048 — это нужно для активации websocket early data в клиентах на базе XRay, при расшифровке оно будет видно как «?ed=2048). IP‑адреса сервера в ссылке нет и не должно быть. Порт всегда 443.

Дополнение: кажется, Cloudflare тоже умеет обращаться к серверу на произвольный порт (как Amazon), то есть его можно использовать и без IPv6. Поиграйтесь с опцией "Rules -> Origin rules", там, судя по всему, можно для отдельных урлов (как раз для урла вашего websocket-inbound) задавать нестандартный порт.
А если вы используете IPv6, то можете сделать переадресацию вебсокет-урла на нестандартном порту, а на стандартном (для всех урлов по умолчанию) поднять обычный веб-сервер с фейковым сайтиком.

Список литературы и полезные ссылки

Заключение

, Я благодарю MiraclePtr, чьи статьи очень многому меня научили и вдохновили, ChatGPT за исправление моих кривых фраз, кота Чачу, который отвлекал меня в процессе написания статьи, а также... хотя не, про остальных участников и что они делали я лучше здесь писать не буду, потому что это будет уже пропаганда нетрадиционных отношений, а это в современной России запрещено (как, впрочем, и распространение знаний об обходе блокировок, стоит об этом задуматься).

Теги:
Хабы:
Всего голосов 445: ↑437 и ↓8+489
Комментарии373
+373
Закрыть

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Комментарии 373

ЗакрепленныеЗакреплённые комментарии
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Для тех, кому, также как мне, лень вручную очищать такие полезные статьи, чтобы сохранить в PDF - написал bookmarklet - он оставит только статью и комментарии, а также раскроет все спойлеры - останется только отправить на печать в PDF-принтер.

Пользуйтесь на здоровье
javascript:(function(){( () => {document.querySelectorAll( "details" ).forEach( i => i.setAttribute( "open", "" ) ); const dels = [".tm-base-layout__header",".tm-header",".tm-page__sidebar",".tm-comment-form",".tm-block_spacing-bottom",".tm-comment-navigation",".tm-footer-menu",".tm-footer",".tm-article-sticky-panel",];let el;for ( const s of dels ) {const els = document.querySelectorAll( s );if ( els ) for ( el of els ) el.remove();}el = document.querySelector( ".tm-page__main" );el.style.maxWidth = "100%";} )()})()

Активы маршрутизации
Активы маршрутизации

Спасибо за статью! Все давно настроено, но посмотрел, нет ли чего новенького)))

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

Также, кому важно, протестировал все клиенты на Android TV / Google TV. Корректно работает только Hiddify Next. Правда стандартным пультом не зайти в настройки. Только включить и отключить. Покопаться в настройках и все сделать можно через AnyDesk, мышкой, управлением с телефона (кому как удобнее). Понравилось раздельное проксирование (Кинопоиск напрямую, а Prime и Netflix через сервер). Очень удобно.

У меня получилось завести. Был затык в том, что по умолчанию SSH сервер не разрешает туннелирование трафика. Чтобы разрешить, нужно на сервере в файле /etc/ssh/sshd_config добавить/заменить параметр AllowTcpForwarding yes.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Да тебе медаль за такое надо дать!

Как только кто-нибудь настучит, так в лучшем случае российские госорганы заставят Хабр закрыть ее для пользователей из России, в худшем случае — удалить целиком. 

Статьи из списка уже начинают прикрывать. Одно радует, их можно читать через иностранный VPN.

Hidden text

Это какая конкретно статья?

Кстати, было бы неплохо собрать все такие статьи в архив и распространять скажем торрентом.

Это статья "четыре" из приведенного в начале списка.

Ее бывший адрес https://habr.com/ru/articles/728836/

Хотел посмотреть как это выглядит в ленте статей (есть ли ссылка, или вообще ничего нет), но вы, хабр показывает только 50 страниц, а статья явно где-то раньше.

С Казахстана открывается

Почему -"бывший"? Только что зашёл с Канады.

И кстати, если маршрутизировать российские IP и домены напрямую, то обход блокировок из статьи не поможет. А если всё пускать через прокси, то, как в статье и написано, возможно будет сопоставить трафик туда и обратно.

Вот только спойлеры не раскрываются

Расширение SinglePage раскрывает спойлеры при конвертации

Я все сохраняю в mhtml. Для этого достаточно в браузере на базе хрома включить опцию save-page-as-mhtml. Но вот все спойлеры приходится открывать заранее перед сохранением, это явно какая-то недоработка формата (они же наверняка не по ajax запрашиваются при открытии, а сразу приходят вместе со страницей? в общем непонятно)

У меня похожая бурда была одно время при просмотре страниц в режиме Reader View из FF. Потом, вроде, стало лучше. Это должно лечиться правильной вёрсткой, статья (и комментарии, которых в Reader View до сих пор не видно) должны быть при упрощённом просмотре текста с утюгов не умеющих в js, всяких инстапаперов, е-книг и прочих медиа-реквестах типа @media print, но все забивают

Еще неплохой вариант сохранить в markdown файлы, расширением типа Markdownload, а потом в базу знаний - например в Obsidian. У меня там все статьи уважаемого MiraclePtr на эту тему уже надежно хранятся. И кстати, в makrdow и спойлеры сохраняются и код корректно отображается.

Слава тебе Господи, не я один такой сумасшедший)

А сразу её выложить в PDF++?

не вижу ссылки на pdf, который нужно распространять.

НЛО прилетело и опубликовало эту надпись здесь

в созданном pdf (драйвер млкософта) нет части форматирования. например, код не выделяется цветом фона и поэтому сливается с обычным текстом.

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

и еще умиляют 300 человек, которые статью в закладочки добавили.

НЛО прилетело и опубликовало эту надпись здесь

Не совсем
PDF не лучшее решение для сохранения страниц, например сожрутся строки с горизонтальной прокруткой.
лучшее решение на мой взгляд - https://github.com/gildas-lormeau/SingleFile
заодно подтягивает все фреймы, lazy картинки. На выходе удобный HTML все-в-одном, при желании еще и сжатый.

заодно подтягивает все фреймы, lazy картинки

Судя по опыту сохранения статей Хабра с длинными тредами он не всегда все комментарии сохраняет. Выход - перед сохранением прокрутить все ветки комментариев чтобы они все прогрузились.

В настройках можно посмотреть - кажется умеет двигать. Но для надежности да - к концу страницы и потом нажимать.

да, это расширение сохраняет норм, в отличие от pdf.

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

.tm-article-sticky-panel{position:sticky;bottom

на

.tm-article-sticky-panel{bottom

Лет 15 использую расширение браузера ScrapBook (сейчас другой разработчик и наименование другое - WebScrapBook). Сохраняет web-страницы: отдельные, с заданной глубиной вложенности, по маске... Все вырезки держу в отдельном каталоге, который автоматически синхронизируется с моими рабочими компами. Можно просматривать вырезки по сети на встроенном web-сервере (python), но только просматривать, а не дополнять - поэтому синхронизирую с компами.

Сохраненные страницы можно редактировать - убирать лишние блоки, выделять текст маркерами, создавать заметки к частям текста...

Нет проблем с отображением всех комментариев? Или необходимо страницу докручивать до конца перед сохранением?

Проверил... если открыть ссылку и и сразу захватить страницу, то комментарии не развернуты:

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

PS. Свёрнутые (скрытые) блоки - разворачиваются после захвата

выбираю save as pdf в distination. код без фона, как я писал выше.

В чем проблема использовать сохранение в .html?

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

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

нет части форматирования. например, код не выделяется цветом фона и поэтому сливается с обычным текстом.

При печати в том же Chrome выбрать More settings -> Background graphics

спасибо, помогло

и еще умиляют 300 человек, которые статью в закладочки добавили.

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

Сохранил в веб архив

https://archive.ph/48HMR

Спасибо браток.

Рекомендую сделать копию статьи на телеграф

Жаль на Хабре заблокирован Instant View, так бы могли читать прямо в превью Телеграма.

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

$ docker run --rm -v /tmp/run:/work yaroslaff/nudecrawler nudecrawler --total 0 -a "обход блокировок"
# No cache file /work/cache.json, start with empty cache
Loading nudenet classifier....
INTERESTING (ALL) https://telegra.ph/obhod-blokirovok-03-19 (0.0s)
  Total images: 0

INTERESTING (ALL) https://telegra.ph/obhod-blokirovok-03-18 (0.0s)
  Total images: 0

INTERESTING (ALL) https://telegra.ph/obhod-blokirovok-03-17 (0.0s)
  Total images: 0

INTERESTING (ALL) https://telegra.ph/obhod-blokirovok-03-17-2 (0.0s)
  Total images: 0

INTERESTING (ALL) https://telegra.ph/obhod-blokirovok-03-13 (0.47s)
  Total images: 1

Самостоятельный поиск - хорошая штука, когда обычный поиск недоступен или фильтруется.

Ещё вы можете выложить эту же самую статью (либо в markdown формате, либо в PDF) на github/gitlab либо вообще magnet-ссылкой на торрент.

P.S. Я вообще все свои статьи так дублирую, потому что они мне дороги и я не хочу зависеть от администрации хабра. Мой репозиторий для примера: https://github.com/Kright/my-articles

Поставил бы плюс, если бы мог. Статья - супер.

Хотя надеюсь не дожить до того дня когда в моей стране мне это понадобится.

Но сохранил тем не менее.

И VPN у меня давно есть :)

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

Я сохраняю полный слепок страницы в html, для этого использую плагин браузера SingleFile.

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

Прошу заметить, что в действительно ХУДШЕМ случае за эту статью могут включить весь ресурс в список запрещенных. :((

--

17 ноября 2023 г. правительство РФ выпустило постановление, позволяющее Роскомнадзору включать в Единый реестр запрещенной информации сайты, которые раскрывают способы обхода блокировок других онлайн-ресурсов. Для включения того или иного интернет-ресурса в Единый реестр запрещенной информации появилось еще одно основание. Если на нем есть сведения, как получить доступ к сайту, который уже заблокирован в России, то ресурс подпадает под ограничения.

Tor - адреса входных нод доступны в публичном реестре, и поэтому могут быть легко заблокированы. Бриджи (bridges) пока работают, но РКН в прошлом неоднократно их выборочно банил

Рано вы Тор хороните, на который и в Китае управы нет, старый добрый obfs4 хорошо работает. Мосты живут по несколько месяцев, если брать их не из тор-браузера. Только сегодня трансляцию SpaceX в твиттере через него смотрел. А мосты из браузера да, давно уже банят.

перспективы tor сомнительны, я предполагаю что на его удушение росТОРнадзор до сих пор не выделил достаточно ресурсов в т.ч. интеллектуальных. в любом случае лучше иметь проверенный запасной вариант, чем не иметь.

НЛО прилетело и опубликовало эту надпись здесь

Мы пока не Китае и операторы Tor успешно борятся с РКН.

НЛО прилетело и опубликовало эту надпись здесь

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

РКН успешно поблочил спаршенные бриджи obfs из вшитых конфигов сетапера тора, snowflake держится уже год-полторта.
В последний раз snowflake отвалился не из-за РКН, а из-за хостера Fastly, которым прикрывались в domain fronting. Но это полечили, там по ссылке есть рекомендация.
А еще есть webtunel транспорт, который тоже вполне работает.

Я с начала февраля не могу подобрать входную ноду, чтобы TorBrowser заработал (Ростелеком, Москва). Он или бесконечно коннектится, или падает.

Можете подсказать источник доступных нод?

НЛО прилетело и опубликовало эту надпись здесь

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

У телеграм-бота запрашивал около 20 штук, ни одна не заработала.

Про емайл-адрес попробую. Спасибо!

Разработчики Tor'а на днях выкатили новый протокол для бриджей WebTunnel, можно запросить через сайт (позже можно будет и через тг и мейл). У меня работает.

НЛО прилетело и опубликовало эту надпись здесь

Точно, перепутал.

Скачал новую версию 13.0.11 - она сама нашла бриджи, когда указал, что я в России. Старая 13.0.8. так не могла. Спасибо разрабам за прогресс!

Спасибо, обновился, заработало с WebTunnel. Хотя пришлось с настройками повозиться, опять они в torrc все поменяли, со старым конфигом не хотел заводиться.

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

Кстати, тор умеет работать как сервис ОС, а не как компонент браузера. То есть TorBrowser не обязателен для работы тор, у меня он даже не установлен.

Если все кажется очень сложным

Мне кажется вы сами все делаете предельно сложным.
А ведь можно просто разместить в статье конфиги на Terraform и Ansible или их аналоги.

скиньте в комментариях конфиги!

Как говорил мой начальник - ок, жду pull request

НЛО прилетело и опубликовало эту надпись здесь

Какая интересная компания...

В этот список можно же добавить отдельно Украину, вышеупомянутый Туркменистан, ненулевое кол-во других стран азии и африки, ЕС (451 из-за GDPR), ЕЭС (санкции), доступ к госсайтам извне (и другим, блокирующим по гео-признаку). Веселье только начинается.

НЛО прилетело и опубликовало эту надпись здесь

Ладно, Украина - она банит русскую пропаганду, но ЕС чем не угодил? Я тут живу, кроме всяких торрентов, ничего забаненного не встречал.

Скорее наоборот, из ЕС ряд сайтов в США недоступен. Мол, сорямба, мы не готовы следовать GDPR, пожалуйте на выход.

Можешь привести пример? Чисто, ради интереса, потестировать.

Регулярно встречал местечковые новостные сайты США (точнее, они же под кем-то находятся), которые вместо cookie banner тебе 451 дают, что мол не можем из-за легальной ситуации вам сейчас дать доступ из Европы. Ссылок нет, такое найти намеренно будет не проще, чем припаркованный домен (полчаса потратил тогда).

Регулярно = достаточно часто, что запомнилось.

Получается, что не в Европе цензура, а сами местечковые сайты доступ не дают.

А я это комментировал в контексте "нужен инструмент с выбором (любой) целевой страны".

https://www.timesargus.com/

451: Unavailable due to legal reasons

We recognize you are attempting to access this website from a country belonging to the European Economic Area (EEA) including the EU which enforces the General Data Protection Regulation (GDPR) and therefore access cannot be granted at this time. For any issues, contact customerservices@timesargus.com or call 802-479-0191.

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

Я ж не зря ЕЭС отдельно привел. Не хотел распространяться тут, но Google с Youtube очень странные вещи творил еще до официально принятых решений против СВО. Я не вдавался в подробности, потому лишь текстом напишу:

Геоблок на каналы рос. СМИ в YT. На странице поиска каналы были видны, при переходе ошибка (не помню какая именно, но не буквальная). Геоблок распостранялся не только на - как бы - страны ЕС, а выходя через VPN Норвегии и Швейцарии я наблюдал ту же картину. Вот через США и другие страны доступ был. Пока каналы спустя пару дней полностью не удалили. Потом последовало оф. принятое решение о санкциях, в т.ч. о блокировке и отзывах лицензий СМИ. Если пресса написала о блокировке трансляции RT (к чему и без того несколько лет население готовили), то блокировка rt-com посредством провайдерского DNS прошла практически без фанфар.

https://www.derstandard.de/story/2000134513025/3-und-magenta-blockieren-rtcom-a1-beruft-sich-auf-netzneutralitaet

https://www.sistrix.com/blog/eu-sanctions-takes-rt-com-out-of-google-search-results/

https://www.consilium.europa.eu/en/press/press-releases/2022/03/02/eu-imposes-sanctions-on-state-owned-outlets-rt-russia-today-and-sputnik-s-broadcasting-in-the-eu/ Здесь про веб (еще?) ни слова

https://lv.baltnews.com/News_Latvia/20220317/1025515427/Potomu-chto-potomu-v-Latvii-zablokirovali-rossiyskie-sayty-.html Более менее какой-то список представили по Латвии здесь

Точно так же как и СМИ не освещали практически интернет-цензуру в других странах. Максимум про Китай известно, а про Россию из профильных сайтов-СМИ. Следовательно, нет запроса настраивать граждан против этого феномена.

https://mixnews.lv/latviya/2022/10/19/neplp-zapretil-dostup-k-veb-saytu-kotoryy-ugrozhaet-natsbezopasnosti/

Перенаправляют на страницу http://nelegalssaturs.lv/

Заблокированы, в частности, vk.com и yandex.ru. Блокировки также осуществляют сторонние компании, обнаружил на публичном DNS-резолвере от Cogent/Sprint.

$ dig yandex.ru @204.117.214.10 

; <<>> DiG 9.18.24 <<>> yandex.ru @204.117.214.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38147
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 9ba12e0d97d2717c01000000660abce0f36a89712a2d2512 (good)
;; QUESTION SECTION:
;yandex.ru.                     IN      A

;; ANSWER SECTION:
yandex.ru.              5       IN      CNAME   nelegalssaturs.lv.
nelegalssaturs.lv.      1793    IN      A       81.198.74.204

;; ADDITIONAL SECTION:
lv-blockedzones.        1       IN      SOA     LOCALHOST. support.cogentco.com.lv-blockedzones. 2024032600 3600 900 2592000 7200

;; Query time: 1439 msec
;; SERVER: 204.117.214.10#53(204.117.214.10) (UDP)
;; WHEN: Mon Apr 01 20:55:44 +07 2024
;; MSG SIZE  rcvd: 209

Ага, так же N-ое количество ближневосточных стран ОАЭ, Катар, Саудия, Египет, Оман etc тоже туда. Индия и Пакистан туда же)

Кстати, Дуров там обеспокоен свободой интернета в Дубае, где не половина интернета, но хорошая часть заблокирована или он тоже прокси использует, чтобы позвонить!? :)

У меня в 3X-UI панели в настройках в этой компании еще почему-то Въетнам. Интересно, там тоже что ли все плохо? Как-то не слышал про Въетнамский файервол.

Там выборочный бан всех сайтов, где кто-нибудь говорит плохое про ВВП КПВ или там про протесты внтури страны рассказывает.

В индексе свободы прессы 172 место из 179 стран.

У Украины 79-е -- огонь! =)

У Украины 79-е -- огонь! =)

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

Просто странная позиция в рейтинге с учётом наличия пополняемого списка для обхода блокировок для граждан страны (Заборона) и иных обстоятельств в этой сфере (в смысле СМИ и соцсети). Не думаю, что в Грузии или Армении как-то сложнее с работой журналистов (или Азербайджан, я не запомнил, кто из них ниже был, смотрел на карте проекта).

Вас беспокоят чужие негры? Суд Линча не есть хорошо в любом случае.

Посоветуйте, какой защищенный протокол лучше сделать.

Сейчас стоит pfSense, на который пересылается список блокированных IP который отлавливает сниффер в соседней виртуалке. pfSense по этому списку перебрасывает траффик на другую виртуалку, которая работает как роутер через установленный на нее VPN. Сейчас стоит Wireguard, но нужно его менять, только на что?

Я бы посоветовал openvpn + Cloak. Они нормально запускаются из systemd-юнитов, надёжны, и относительно легко настраиваются. Openvpn я люблю за то что он хорошо работает в режиме бриджа "сеть-сеть" и нормально поддерживают любую сложную маршрутизацию (хотя там есть нюансы).
Я добавлял Cloak к уже существующему openvpn-серверу и клиенту, это вообще работа на полчаса по инструкции. С openvpn придётся повозиться, если нет опыта, но зато он богат по возможностям. Читал (но сам не пробовал) что можно использовать Amnezia для установки как раз связки OpenVPN + Cloak на сервере и дальше экспортировать конфигурацию, которую использовать в консольных клиентах (и их запускать автоматически).

Спасибо, быстро глянул про Cloak. На сколько понял, Cloak создает дополнительный интерфейс, через который и работает. Получается, можно существующий WG через него же пустить.

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

Главное чтобы страницы с картинками грузились, большие скорости не требуются.

Бродить по интернету и смотреть видео вполне комфортно

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

Я так и сделал. Cloak не интерфейс создает, а порт слушает на localhost клиента (этот порт - endpoint для WG), а на сервере шлет на порт WG также на localhost. Оба работают как сервисы systemd.

Про скорость. Канал 170Мбит/с. Клиент: WG+Cloak на Ubuntu 22.04 минипк N95/4 ядра, RAM 8. Сервер: дешевая VPS за 3 Евро с 1 ядром и RAM 2G также на базе Ubuntu 22.04. iperf3 через WG без Cloak выдавал 140, с Cloak - 65. Что ОЧЕНЬ важно - размер MTU у WG. При установке стоял у клиента 65535, разумеется, фрагментация. CPU на 4 ядрах подскакивал до 40% при 65Мбит, на сервере MTU был указан 1420. Поставил 1400 везде, теперь CPU у клиента на каждом ядре не выше 5% при тех же 65Мбит. Я полагаю, что узкое звено - это дохлая VPSка, на которой еще крутится ffmpeg, который тянет по RTSP 10Мбит, конвертит аудио и сохраняет потоки. Если сервер на 2 ядрах хотя бы, то вполне 100МБит выжать, думаю. Возможно поможет эта статистика личного пользования.

Спасибо, полезная информация.

Поэтому часто советуют настраивать раздельную маршрутизацию на клиентах

можно упростить двумя методами:

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

2) один браузер и несколько профилей.

НЛО прилетело и опубликовало эту надпись здесь

Почему трудно?

Первый браузер, для обычных сайтов - какой-нибудь Soul, Vuvaldi. Для обходных путей - TorBrowser, WebShuttle. Ну и скрепный ЯндексБраузер, в который тоже можно воткнуть расширения для обхода.

НЛО прилетело и опубликовало эту надпись здесь

Я это к тому, что сложностей нет.

Имея сейчас на борту мобилки этот набор браузеров - спокойно читаю статьи Хабра, отмеченные как 451, захожу на Рутрекеры, вижу стены в ВК, заблоканные для РФ.. Всё изкаропки или пара кликов для установки какого-нибудь расширения, типа NetHealer

А для прочих приложений, не браузеров - есть прекрасно работающий Orbot

НЛО прилетело и опубликовало эту надпись здесь

Пока работают - уже достаточно.

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

НЛО прилетело и опубликовало эту надпись здесь

Именно. Причём высока вероятность, что потом стоимость и сложность резко возрастут.

Можно легче - взять v2rayng или nekobox, запустить там как vpn режим и выбрать приложухи, которые будут идти в обход или наоборот не в обход (в зависимости какой режим выберете). Всё, один браузер заворачиваем в обход, второй нет. Даже давно в клиенте wireguard такое появилось.

один браузер - для обычных сайтов через открытый И-нет, второй - для обходных путей

Есть вариант проще. Расширения для браузера вроде SmartProxy, которые запоминают на какие сайты трафик в прокси заворачивать. Так и с одним браузером не заметно, что существуют какие-то блокировки.

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

Так не надо тупо обновлять, без прогона на тестовых образцах!

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

НЛО прилетело и опубликовало эту надпись здесь

Хорошая статья. Может, я что-то не понял, может просто эта тема не рассматривалась как неоднородная. Вот что такое белые списки? Представим себе вы идете на некий хост, ваш ISP вам сообщил DNS резолвер, который резолвит вам имя в адрес и всё остальное понятно. DNS запросы по UDP идут отрытые, ТСПУ сверяет со своим разрешенным списком и если имя хоста не в списке - то может или заблокировать ответ, или подменить адрес в ответе. Это одна ситуация. Клиент может может использовать DoT протокол и запрос ответ не будут видны и правильный адрес будет доставлен. Но есть ведь и другая ситуация - корневой DNS находится под контролем, все DNS получают обновления только с него, и таким образом всё пространство имен содержит только разрешенные имена. Можно что угодно делать с запросом, но ответ не будет содержать правильный адрес, потому что его никто в этих сетях просто не знает. (если считаете такой сценарий невероятным - вспомните что они недавно подписали уже своим собственным ключем на своем корневом DNS и целый час гоняли и проверяли что и как отваливается, тут не до шуток, чебурнет уже включали - но это моя личная интерпретация, я не обладаю никаким инсайтом). Т.о. тут должна быть фича по поддержке надежного доступа к независимым резолверам и обновление этой информации.

В клиенте Amnezia есть опция поднять на VPN-сервере свой резолвер, или использовать внешние через тот же тоннель. Так что проблема сводится к VPN решению.

НЛО прилетело и опубликовало эту надпись здесь

Видимо, я сформулировал недостаточно прозрачно. Ппонятно, что google, cloudflare и т.п. - первые в списке на явное блокирование при включении в режим чебурнета. И сам 53й порт становится критически важным, чтобы разрешался только по белым адресам. Поэтому, очевидно, критически важно чтобы VPN service discovery работало как-то по-другому. Отсюда и вопрос - есть ли такая фича, потому что только такие и имеют шанс выжить.

НЛО прилетело и опубликовало эту надпись здесь

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

CDN - да примерно так и должно быть. Паша Дуров довольно долго бегал через CloudFront - суть тот же CDN (хотя и не только) и попробуй его заблокировать, а имена хостов в нем - дело сугобо личное и TLS-защищенное. Но сам CDN - если приложение его находит по именам, то нужен DNS, а его нет. В общем замкнутый круг курица-яйцо.
Схема, разрывающая этот порочный круг может выглядеть так -- актуальные адреса в большом количестве вшиваются в текущую версию дистрибутива и сидят в нем в зашифрованном виде. Приложение открывает первый блок используя встроенный ключ и начинает работать с адресами из него. Если получается, то оно получает ключ для расшифровки второго блока и этот ключ приходит из этих сервисов первого блока. Суть этих сервисов лишь проверить аутентичность приложения и выдать ключ для второго блока. А дальше второй блок - это уже endpoints сервисов выдачи актуальной новой версии приложения, где могут быть обновленные адреса, -- ее надо скачать и поставить если сейчас работает устаревшая версия. Дальше следующий ключ и следующий блок дает доступ к доменным именам, по которым находятся текущие endpoints VPN сервисов. Чем гибче схема, тем дольше ее разматывать и блокировать. Но я не видел где, кроме телеги, подобное реализовано. Впрочем, может быть Паша сподобится добавить и VPN в телегу.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Как обходить блокировки с другой стороны, т.е. когда нас банят по российскому IP ? Мне бы найти способ попроще типа PlanetVPN (у меня он перестал работать) под Windows 7/10. Паре приложений нужен доступ для обновлений. Анонимность не интересует. Спасибо.

У способов попроще есть тот недостаток, что однажды они могут просто попасть под раздачу вместе с теми, кому анонимность нужна. Собственно, в статье об этом есть - OpenVPN уже банят.

Никак. Эти идиоты теперь ведут список регионов адресов интернет-провайдеров "последней мили". Арендовать VPS в России бесполезно, так как добавляют только адреса провайдеров, работающих с физлицами.
Более того, люто страдают российские абоненты мелких провайдеров, которые не могут на сайт налоговой и всякие госуслуги зайти, так как диапазона их провайдера нет в списке. В качестве решения предлагают абонентам звонить провайдеру, а провайдеру уже писать в Роскомнадзор, Ростелеком и Минцифры.
Так и живут - страдают, не работает, звонят друг-другу, чинят, потом адреса меняются и всё по новой. Плачут, но едят какутс.
В качестве хоть какого-то решения возможны только малинка или сервер на домашнем интернете.

С цель повышения градуса абсурда сейчас пытаются составить всероссийский список IP-адресов, чтобы "упорядочить" блокировки. Но, как вы понимаете, список составляют вручную (!!!), так как все эти ваши ASN и BGP, это богомерзкие западные изобретения, которым верить нельзя. В результате уже понятно, что совершенно неизбежно снова всё поломают, но теперь на уровне магистральных провайдеров. Опять будут звонить, вручную править списки, которые будут непрерывно устаревать, будут проблемы с распространением списков и тому подобное... короче, неизбежно станет хуже, но всем плевать и все заняты делом.
Дикари-с

Однако-ж, речь об обратной ситуации - когда зарубежные ресурсы блокируют российские адреса, разве нет?

Кстати, тут недавно всплыл очень забавный кейс с использованием VPN. Мне почту забанили в Google. Говорят робот. И не верят что человек. Почта новая. Но регестрировал я её через VPN, но номер указал российский...

НЛО прилетело и опубликовало эту надпись здесь

А для игр что лучше использовать?
Навыки эникейщик.
Условия карточка "Мир"

вам сетевые игры в стим и других платформах тоже эРКээНят?

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

А просто пинг что говорит? какой пинг до 1.1, 8.8.8.8 и других популярных серверов без амнезии и сколько с ней?

Без UI тяжело, тем более новичкам. Мне нравится X-UI. Легко настраивать, баги оперативно фиксятся.

НЛО прилетело и опубликовало эту надпись здесь

https://dropmefiles.com/yQhU8

Сохранено как single-file html (включая часть 4, которую уже успели забанить). Спойлеры работают.

На 14 дней, не особо знаю куда сейчас нормально надолго залить можно.

На mega.nz

Ваша ссылка почему-то не открывается.

Можно на github/gitlab, если файлы не сильно большие.
Ещё можно сделать раздачу в торренте и шарить магнет-ссылку, вот это запретить только вместе с остальными торрентами получится

Этот коммент раньше был написан, чем автор статью дополнил и попросил пересохранить, имейте в виду

Кстати, интересный вопрос: а как DPI соотносится с законом "О связи", который требует от операторов пропускать весь не запрещенный явно трафик без изменений? При этом самые гуманные в мире суды запрещают доступ к определенным сайтам/IP, но не пропуск пакетов, которые по чьему-то оценочному суждению могут использоваться для...

Никак. Законы не работают.

Мы боремся с симптомами в виде конечных блокировок, а надо бороться с причиной.

Автор жару дал конечно, + в карму за огромный объем работы. Вообще ряд популярных впн сервисов работает в направлении маскировки трафика, но пока их дождешься... готовь дрова летом что называется.

Спасибо за труд! Но можно же назвать как-то попроще без слова "блокировка". Типа "Инструменты для удаленного соединения между двумя офисами. Обзор современных решений."

Из каких соображений не приводятся бесплатные сервера с конфигами?

НЛО прилетело и опубликовало эту надпись здесь

это я пытаюсь объяснить детям, когда они создают себе сети для игры в локалке через RAdmin.
А доблесные провайдеры, чтобы создать внутри города ВПН, не получается, горячий привет Фридому, что ИСЧ... Создал сервер впн на своем домашнем ip, с штатными или легко настраиваемыми в виндах впн-клиентами, чтобы не лепили горбатого на какой-то бесплатный сервис ВПН-сетей. Так всё, кроме этих бесплатных забугорных сервисов у клиентов зарезано. Тупо. Созванивался с их техподами - у нас ничего не заблокировано, проблема клиента.

Решения типа Tailscale/ZeroTier не гоняют через себя трафик если можно этого избежать, а если внутри города - прямые соединения (если получится пробить nat) - будут бодрыми. Если не получится пробить nat - ваш вариант решения будет быстрее (но обычно получается). Да и в целом, поиграть детям в локалке - ваше решение более чем достаточно

Хотя тут остается риск утечки метаинформации. Но есть и аналогичные селфхост-решения

спасибо.

НЛО прилетело и опубликовало эту надпись здесь

Действительно круто, что вы написали такую информативную и важную статью. Себе сохранил) Удачи автору, надеюсь, ваша работа найдет своих читателей и будет оценена по достоинству!

Спасибо большое автору! Собрал основное в одном месте и очень понятно разъяснил. Сохранил себе статью)

А что-нибудь насчет I2P сказать можете? Там те же проблемы что и у Tor?

НЛО прилетело и опубликовало эту надпись здесь

А можно ли еще одного или нескольких user в config?

НЛО прилетело и опубликовало эту надпись здесь

с vpn достоупна

и автор MiraclePtr удален(

Нет же

Статьи написаны неким Deleted-user, доступ к профилю MiraclePtr закрыт. Надеюсь, у него самого всё хорошо.

Он разочаровался в местном сообществе, остатки обсуждения можно найти здесь - Новая блокировка OpenVPN и Wireguard замедляет интернет в России / Комментарии / Хабр (habr.com)

Сами комментарии MiraclePtr потёрты, но по ответам можно примерно догадаться, да и в кеше Bing пока ещё что-то сохранено.

Для тех, кому, также как мне, лень вручную очищать такие полезные статьи, чтобы сохранить в PDF - написал bookmarklet - он оставит только статью и комментарии, а также раскроет все спойлеры - останется только отправить на печать в PDF-принтер.

Пользуйтесь на здоровье
javascript:(function(){( () => {document.querySelectorAll( "details" ).forEach( i => i.setAttribute( "open", "" ) ); const dels = [".tm-base-layout__header",".tm-header",".tm-page__sidebar",".tm-comment-form",".tm-block_spacing-bottom",".tm-comment-navigation",".tm-footer-menu",".tm-footer",".tm-article-sticky-panel",];let el;for ( const s of dels ) {const els = document.querySelectorAll( s );if ( els ) for ( el of els ) el.remove();}el = document.querySelector( ".tm-page__main" );el.style.maxWidth = "100%";} )()})()

Спасибо

Правда, например здесь спойлеры не раскрывает

У меня получилось по-другому, внизу статьи ваш скрипт оставляет всякое. И вроде спойлеры в этой статье тоже раскрывает

Вот моя версия
(function(){
for (const el of document.getElementsByTagName('details')) {
    el.setAttribute('open', '')
}
for (const el of document.getElementsByClassName('spoiler')) {
    el.classList.add('spoiler_open')
}

const toDelete = ["tm-base-layout__header", "tm-header", "tm-page-progress-bar", "tm-page__sidebar", "tm-comment-form", "tm-comment-navigation", "tm-footer-menu", "tm-footer", "tm-article-sticky-panel", "tm-placeholder-courses", "placeholder-wrapper", "tm-stories-block", "tm-events-block", "tm-project-block_variant-vacancies", "tm-project-block_variant-tasks"]
for (const s of toDelete) {
    const els = document.querySelectorAll('.' + s);
    for (const el of els) el.remove()
}

const article_blocks = document.querySelector('.tm-article-blocks')
const len = article_blocks.children.length;
for (let i = 2; i < len; i++) {
	article_blocks.children[article_blocks.children.length - 1].remove();
}

document.querySelector('.tm-page__main').style.maxWidth = "100%"
})()

У меня vless стал дисконнектиться в этом году каждые минут 10-20, хотя раньше работало стабильно сутками. Вряд ли это всё проживет долго, так что смысл сохранять в pdf вижу околонулевой.

НЛО прилетело и опубликовало эту надпись здесь

Главное проверяйте внимательно, совсем дешевые VPS (за 7 долларов в год) могут не иметь публичного IPv4-адреса (только IPv6 и NAT-IPv6). Поставить и использовать прокси на них тоже можно (через Cloudflare CDN), но неопытным пользователям я бы в это ввязываться не советовал.

Что я видел - обычно самые душман решения имеют IPv6 и открытые несколько портов IPv4 (типа один IPv4 адрес на много клиентов), конечно нет 443 порта, но для некоторых целей сгодятся. Совсем нет статического IPv4 у "мейнстримовых" более дорогих/популярных провайдеров, но там прямая цель, "нужна виртуалка, IPv6 хватит". Кстати, как понимаю в цитате опечатка, NAT-IPv4 должно быть.

И кто-нибудь stunnel проверял? Я понимаю, что это HTTPS, но какой fingerprint, устойчивость к обнаружению?

НЛО прилетело и опубликовало эту надпись здесь

Отличная статейка, спасибо сохранил себе)

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

НЛО прилетело и опубликовало эту надпись здесь

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

У кого-нибудь получилось завести ssh proxy в Streisand? У меня отображается как подключённый, но по факту не работает. Пробовал и с pubkey, и с password аутентификацией. При этом `ssh -D` с компа работает.

НЛО прилетело и опубликовало эту надпись здесь

Вручную делал. Может быть из-за того, что у меня юзер, которого я сделал для ssh proxy, без шелла, т.е. c /bin/false? Либо в типе публичного ключа, я сделал пару ec25519... Непонятненько.

НЛО прилетело и опубликовало эту надпись здесь

У меня получилось завести. Был затык в том, что по умолчанию SSH сервер не разрешает туннелирование трафика. Чтобы разрешить, нужно на сервере в файле /etc/ssh/sshd_config добавить/заменить параметр AllowTcpForwarding yes.

У меня X-Ray не завёлся. Клиент к серверу подключается, а вот трафик от сервера дальше никуда не уходит. Не работает ни напрямую, ни через WARP.

Логи сервера

[Info] [4045738493] proxy/vless/inbound: firstLen = 1186
[Info] [4045738493] proxy/vless/inbound: received request for tcp:2ip.io:443
[Info] [4045738493] proxy: Xtls Unpadding new block, content 168 padding 950 command 0
[Info] [4045738493] proxy: XtlsFilterTls found tls client hello! 168
[Info] [4045738493] app/dispatcher: sniffed domain: 2ip.io
[Info] [4045738493] app/dispatcher: default route for tcp:2ip.io:443
[Info] [4045738493] proxy/dns: handling DNS traffic to tcp:2ip.io:443
188.242.236.180:50759 accepted tcp:2ip.io:443 [reality-in >> dns] email: darkdaskin
[Info] [4045738493] app/proxyman/outbound: failed to process outbound traffic > proxy/dns: connection ends > unexpected EOF
[Info] [4045738493] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > io: read/write on closed pipe

Попробовал поставить Amnezia, через неё трафик ходит нормально.

НЛО прилетело и опубликовало эту надпись здесь

Спасибо, с обновлённым конфигом заработало.

НЛО прилетело и опубликовало эту надпись здесь

На Гитхабе статью схороните дополнительно. Ну и правки там, обсуждение и всё такое

НЛО прилетело и опубликовало эту надпись здесь

Уже было, правда, ненадолго. 10 лет назад РКН нашёл в каком-то репозитории файлик suicide.txt. Формально это действительно инструкция по самовыпилу, но способы там были из разряда «воспользуйся машиной времени, чтобы устранить себя в прошлом», и склонить кого-либо к деструктивным действиям оно явно неспособно.

Было бы отлично! Чем больше беZумия чинуш, тем больше саморазрушительных последствий для режима, и тем лучше.

Спасибо за идею. Надо заняться наполнением крупнейших git площадок всякой запрещённой информацией. Особенно инструкциями о VPN и прочем. Пусть роZкомпоZор всё блочит. Пусть стреляют себе по ногам. ?

А уж айтишникам давно пора освоить все способы обхода блокировок. Время такое. Увы.

На моменте создания uuid установка не продвигается:

xray: command not found

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

НЛО прилетело и опубликовало эту надпись здесь

Благодарю, помогло. Но возникла другая беда: systemctl status xray выдает ошибку xray.service: Failed with result 'exit‑code'.

Проверяю через journalctl -u xray — пишет infra/conf/serial: failed to read config: /opt/xray/config.json > open /opt/xray/config.json: no such file or directory, хотя такой файл есть и json проверен через ��алидатор.

Пробовал запустить через ./xray run /opt/xray/config.json, и он вроде бы показывает конкретную проблему: Failed to start: main: failed to load config files: [/opt/xray/config.json] > infra/conf: Failed to build REALITY config. > infra/conf: please fill in a valid value for "dest". Но параметр dest у меня назначен согласно инструкции. В общем, я в тупике.

Решил проблему. В dest и serverNames нужно указывать домен без протокола https. Возможно, стоит обозначить это в статье — вдруг кто-то столкнется с той же ошибкой.

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

НЛО прилетело и опубликовало эту надпись здесь

Понемногу заливаю статьи по обходам блокировок в IPFS: /ipns/k51qzi5uqu5dlerxnsvstxd80o2xq9h23rhews1ouk5eafyi4avabjxm37vy6e (или через gateway), ссылка если что постоянная. Попутно перевожу их в markdown, что чутка запарно и времязатратно, поэтому коллекция будет пополняться по мере появления свободного времени :) В планах залить туда все статьи MiraclePtr

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

Спасибо за идею, учту

Автору большое спасибо за компиляцию и статью. Уже настраивал ранее VLESS, но решил поэкспериментировать еще и столкнулся со странным: в базовой настройке с подменным доменом все коннектит и цепляет, но скорость не позволяет использовать такое соединение всерьез: дальше отрисовки хедеров страниц дело не идет, просто невероятно медленно. Хотя по логам пакеты бегают и все как будто бы работает

Кто-то отмечал такое поведение? Как лечить?

НЛО прилетело и опубликовало эту надпись здесь

Не, сам разобрался.
В первых версиях конфига из статьи в outbounds первым был выход на dns-out, а надо на freedom, они последовательно читаются.
Видимо, я начал раньше, чем были внесены правки. Поставил первым freedom, и все полетело.

Кстати, bbr не будет работать для виртуализации OpenVZ, на Ubuntu 20 просто нет таких модулей. Я пробовал доустановить, но тщетно

Сегодня пытался настроить по гайду автора прокси-сервер и у меня на моменте с клиентом все начинает сходить на нет, выдает разные ошибку по типу "tls: internal error" либо "i/o timeout", в документации к hidiffy и на github эти проблемы нормально не описаны и я совершенно без понятия как эти ошибки нормально отлавливать, на серверной стороне все хорошо.

НЛО прилетело и опубликовало эту надпись здесь

В общем, штатные фокусы с VLESS и Shadowsocks проверил, работает.
А вот нештатные с Cloudflare (CF) так и не смог победить: не проходят запросы от клиента на сервер.
Кажется, какая-то ошибка в сборке строки подключения в статье. Кто-то еще это (вебсокет через CF) проверил, получилось?
Домен был, в его NS прописал у регистратора NS-cервера CF, в самой панели CF выполнил нужные настройки, все проверил несколько раз. Подождал письма от CF, в котором они говорят: можете использовать свой домен. Убедился, что при входе на него пропали ошибки вроде 500, 502, а возвращает 404 по https.
Собрал строку подключения, она валидна, Hiffify-Next пытается слать пакеты, но на сервере тишина, входящих нет.

Пока без идей, что не так.

НЛО прилетело и опубликовало эту надпись здесь

Заработало. Помог совет засунуть ссылку в клиента Neko сначала и там сравнить с вашим скриншотом. Подправил по аналогии и получислось так:

vless://uuid@domain.xyz:443?security=tls&sni=domain.xyz&fp=chrome&type=ws&path=/anypath?ed%3D2048&host=domain.xyz&encryption=none

И сразу заработало уже в Hiddify-Next
И да, квадратные скобки в listen конфига для IPv6 не нужны. Работает обычное указание адреса в кавычках

Спасибо, попробовал!

Если пойти в браузере на domain.xyz:443/?encryption=none&type=ws&sni=domain.xyz&host=domain.xyz&path=%2Fanypath%3Fed%3D2048&ed=2048&eh=Sec-Websocket-Protocol&security=tls&fp=chrome&security=tls&packetEncoding=xudp

, где значение anypath = anypath в серверном конфиге, то будет 404

И на domain.xyz:443/?encryption=none&type=ws&sni=domain.xyz&host=domain.xyz&path=%2Fanypath тоже 404

До Bad request не добираюсь


Пока меня смущает "listen": "[0000:0000:10:d::0000]" — точно в таком виде в конфиге IPv6 передаем? Зачем там эти квадратные, не фигурные, скобки? ))

НЛО прилетело и опубликовало эту надпись здесь

Обновил свой камент выше, сорри :)
Спасибо вам большое еще раз!

А как поживает I2P в плане устойчивости к блокировкам? Или из-за малого количества контента в этой сети проект так и останется тёмной пустой прослойкой.

НЛО прилетело и опубликовало эту надпись здесь
logs

14:34:41 [Info] proxy/vless/inbound: firstLen = 184
14:34:41 [Info] proxy/vless/inbound: received request for tcp:cp.cloudflare.com:80
14:34:41 [Info] proxy: Xtls Unpadding new block, content 76 padding 29 command 0
14:34:41 [Info] app/dispatcher: sniffed domain: cp.cloudflare.com
14:34:41 [Info] app/dispatcher: default route for tcp:cp.cloudflare.com:80
14:34:41 [Info] transport/internet/tcp: dialing TCP to tcp:cp.cloudflare.com:80
14:34:41 46.146.170.131:53111 accepted tcp:cp.cloudflare.com:80 [reality-in >> direct] email: user1
14:34:41 [Info] proxy/vless/inbound: firstLen = 1036
14:34:41 [Info] proxy/vless/inbound: received request for tcp:ipwho.is:443
14:34:41 [Info] proxy: Xtls Unpadding new block, content 247 padding 719 command 0
14:34:41 [Info] proxy: XtlsFilterTls found tls client hello! 247
14:34:41 [Info] app/dispatcher: sniffed domain: ipwho.is
14:34:41 [Info] app/dispatcher: default route for tcp:ipwho.is:443
14:34:41 [Info] transport/internet/tcp: dialing TCP to tcp:ipwho.is:443
14:34:41 46.146.170.131:53114 accepted tcp:ipwho.is:443 [reality-in >> direct] email: user1
14:34:41 [Info] proxy/freedom: connection opened to tcp:cp.cloudflare.com:80, local endpoint 77.238.227.150:53772, remote endpoint 104.16.132.229:80
14:34:41 [Info] proxy: XtlsPadding 756 126 0
14:34:42 [Info] proxy/freedom: connection opened to tcp:ipwho.is:443, local endpoint 77.238.227.150:44392, remote endpoint 5.188.158.161:443
14:34:42 [Info] proxy: XtlsFilterTls short server hello, tls 1.2 or older? 2896 70
14:34:42 [Info] proxy: XtlsFilterTls found tls 1.2! 2896
14:34:42 [Info] proxy: XtlsPadding 2896 214 0
14:34:42 [Info] proxy: XtlsPadding 378 1020 0
14:34:42 [Info] proxy: Xtls Unpadding new block, content 126 padding 952 command 0
14:34:42 [Info] proxy: XtlsPadding 258 847 0
14:34:42 [Info] proxy: Xtls Unpadding new block, content 159 padding 857 command 1
14:34:42 [Info] proxy: XtlsPadding 973 149 1
14:34:43 [Info] app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > context canceled
14:34:51 [Info] proxy/vless/inbound: firstLen = 1117
14:34:51 [Info] proxy/vless/inbound: received request for tcp:u.myteam.vmailru.net:443
14:34:51 [Info] proxy: Xtls Unpadding new block, content 517 padding 518 command 0
14:34:51 [Info] proxy: XtlsFilterTls found tls client hello! 517
14:34:51 [Info] app/dispatcher: sniffed domain: u.myteam.vmailru.net
14:34:51 [Info] app/dispatcher: default route for tcp:u.myteam.vmailru.net:443
14:34:51 [Info] transport/internet/tcp: dialing TCP to tcp:u.myteam.vmailru.net:443
14:34:51 46.146.170.131:53126 accepted tcp:u.myteam.vmailru.net:443 [reality-in >> direct] email: user1
14:34:51 [Info] proxy/freedom: connection opened to tcp:u.myteam.vmailru.net:443, local endpoint <IP_server>:34750, remote endpoint <мой_IP>
14:34:51 [Info] proxy: XtlsFilterTls found tls 1.3! 4420 TLS_AES_256_GCM_SHA384
14:34:51 [Info] proxy: XtlsPadding 4420 92 0
14:34:51 [Info] proxy: Xtls Unpadding new block, content 80 padding 1286 command 0
14:34:51 [Info] proxy: Xtls Unpadding new block, content 92 padding 1133 command 2
14:34:51 [Info] proxy: CopyRawConn readv
14:34:51 [Info] proxy: XtlsPadding 684 622 2
14:34:51 [Info] proxy: CopyRawConn splice

Config
{
  "log": {
    "loglevel": "info"
  },
  "inbounds": [
    {
      "listen": "My IP",
      "port": 443,
      "protocol": "vless",
      "tag": "reality-in",
      "settings": {
        "clients": [
          {
            "id": "мой_UUID",
            "email": "user1",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "www.yahoo.com:443",
          "xver": 0,
          "serverNames": [
            "www.yahoo.com"
          ],
          "privateKey": "privateKey",
          "minClientVer": "",
          "maxClientVer": "",
          "maxTimeDiff": 0,
          "shortIds": [""]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ],
  "routing": {
    "rules": [
      {
        "type": "field",
        "protocol": "bittorrent",
        "outboundTag": "block"
      }
    ],
    "domainStrategy": "IPIfNonMatch"
  }
}

Господа, уже поломал голову, но так и не заставил это работать.

В конфиге была проблема с блоком dns - его я сразу убрал - подключается.

Пробовал несколько доменов для маскировки: microsoft, oreilly, samsung, yahoo - результат один:

  • через Hiddify подключение выполняется, логи на сервере появляются и дальше ничего не происходит.

  • при попытке подключиться через NekoRay - вообще ничего не происходит.

Строка для подключения одинаковая

При этом 2ip.io как показывал мой реальный IP, так и показывает.

НЛО прилетело и опубликовало эту надпись здесь

это логи с сервера.

Конфиг под вторым спойлером :)

НЛО прилетело и опубликовало эту надпись здесь

Мда, дело было не "бабине".

У меня стоят расширения к рутрекеру и линкедину. Оказалось, что один из них был включен. Это приводило к тому, что браузер использовал его в качестве прокси.

Спасибо за помощь! :)

@UranusExplorer, спасибо большое. Отдельное спасибо за баланс между "хау-ту без пояснений" и "сейчас я устрою лекцию, как оно устроено, а как пользоваться, сами разберётесь".

Это был явный знак проапгрейдить стародавний shadowsocks, который я не трогал со времён битвы с телеграмом.

Завёл аккаунт у Оракла, создал бесплатную виртуалку (для тех, кто знает где взять "насто��щую" visa/mastercard - рекомендую). А вот дальше начались боль и страдания большого энтерпрайза.

Во-первых, все входящие соединения у них запрещены, их надо разрешать в ДВУХ местах - во внешнем файрволе через веб-морду оракла и внутри виртуалки через iptables. (если делать невнимательно - теряется доступ по ssh. Хорошо, что не было ничего ценного...).

Во-вторых, внешний адрес и адрес внутри виртуалки - не одно и то же, там где-то по пути какой-то NAT стоит. При этом xray пишет в лог невразумительное cannot bind port. (я в итоге в конфиге xray указал inbounds / listen = 0.0.0.0, пусть все интерфейсы слушает, мне не жалко).

В-третьих, почему-то мне не повезло пару раз с доменом, используемом для маскировки. Т.е. curl -bla -bla успешно отдаёт страничку, а при подстановке этого в xray соединение не устанавливается (с какой-то мутной диагностикой). Это пока не решил, www.microsoft.com из примера работает. Если кто-то подскажет, как и куда смотреть, буду благодарен, метод тыка довольно долгий.

НЛО прилетело и опубликовало эту надпись здесь

Я чайник...
добавил нового пользователя , но под ним нельзя редактировать файл config. Наверно надо как-то права новому пользователю расширить, а потом уже закрыть пользователя root?

НЛО прилетело и опубликовало эту надпись здесь

usermod -aG sudo "your_username" без кавычек

после этого все команды, требующие привилегий, начинать с sudo

Спасибо! Попробую

Спасибо, хорошая работа)

Активы маршрутизации

Спасибо за статью! Все давно настроено, но посмотрел, нет ли чего новенького)))

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

Также, кому важно, протестировал все клиенты на Android TV / Google TV. Корректно работает только Hiddify Next. Правда стандартным пультом не зайти в настройки. Только включить и отключить. Покопаться в настройках и все сделать можно через AnyDesk, мышкой, управлением с телефона (кому как удобнее). Понравилось раздельное проксирование (Кинопоиск напрямую, а Prime и Netflix через сервер). Очень удобно.

Доброго дня.

Спасибо за мануал, все получилось с VLESS. Запрещенные сайты работаю, но обычные ходят без VLESS. А можно как-то заставить вообще весь трафик заворачивать в туннель? Клиент поставил Hiddify, подключаюсь в режиме VPN.

НЛО прилетело и опубликовало эту надпись здесь

Спасибо большое за статью!
Сохранил в md через экстеншн из хрома и добавил в свой Obsidian. Так же как и все остальные статьи по теме.

У меня вопрос. Как в HiddifyNext подправить конфиг, чтобы в зоне RU нужные сайты шли через VPN? И наоборот, чтобы нужные зарубежные шли напрямую?

НЛО прилетело и опубликовало эту надпись здесь

Огромная благодарность за статью.

Не могли бы Вы поделится чем то подобным или хотя бы ссылками на особенностях подъема VPN серверов на модных и дешевых сейчас VPS типа OpenVZ, LXC, .. Там местами большие трудности и в первую очередь с wireguard.

НЛО прилетело и опубликовало эту надпись здесь

Здравствуйте. Я, что называется, чайник. Настраивал сервер через Windows PowerShell, однако больше не могу попасть на него таким же способом. При попытке войти выдает сообщение: "ssh: connect to host <IP сервера> port 22: Connection refused". В чем моя ошибка?

НЛО прилетело и опубликовало эту надпись здесь

Да, похоже дело было в этом, спасибо.

Спасибо за статью, сохранил. А пока пользуюсь goodbye dpi. Я так понял автор это называет HTTP Custom ? Минусы конечно есть, вроде того, что это вообще не анонимно, но вроде бы смертным пока и не запрещено заходить на заблокированные сайты.

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

НЛО прилетело и опубликовало эту надпись здесь

Еще один нормальный клиент для iOS - V2Box. За несколько месяцев пользования серьезных проблем не встретил. Бесплатный, есть не слишком досаждающая реклама.

НЛО прилетело и опубликовало эту надпись здесь

Отличная статья! Но стоит добавить, что у метода заворачивания всего не РУ сегмента есть уязвимость. Предположим, на устройстве включен клиент, пользователь с этого устройства заходит на любой гос. ресурс (те же госуслуги):

  1. В верстке присутствует безобидный <img src="//negosuslugi.com/pixel.jpg?tratata">, где tratata - это закодированная пара user_id;client_ip, а по user_id можно идентифицировать пользователя

  2. negosuslugi.com хостится за пределами РФ, но подконтролен гос-ву

  3. Всё, что делает скрипт пикселя - сохраняет в базуuser_id, client_ip, proxy_ip, если client_ip != current_client_ip и current_client_ip не из РУ сегмента. А так как хостится этот пиксель за пределами РФ, то трафик пойдет через VPN и current_client_ip будет отличаться от client_ip из закодированной пары.

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

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

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

Верно. Однако в статье есть параграф о настройке клиентов, в котором есть абзац:

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

И при такой конфигурации "из коробки" юзер будет подвержен описанной уязвимости. Из самого безобидного - потенциальный бан ip сервера РКН'ом.

НЛО прилетело и опубликовало эту надпись здесь

Да уж... Рано обрадовался. Всë настроил, запустил клиент, подключение устанавливается, но доступа в Интернет нет.

Если кто-то может подсказать, что не так, буду премного благодарен:

Конфиг

{

  "log": {

    "loglevel": "info"

  },

  "inbounds": [

    {

      "port": 18882,

      "protocol": "vless",

      "tag": "kcp-in",

      "settings": {

        "clients": [

          {

            "id": "",

            "email": "user1"

          }

        ],

        "decryption": "none"

      },

      "streamSettings": {

        "network": "kcp",

        "kcpSettings":  {

          "mtu": 1350,

          "tti": 20,

          "uplinkCapacity": 10,

          "downlinkCapacity": 20,

          "congestion": false,

          "readBufferSize": 1,

          "writeBufferSize": 1,

          "header": {

            "type": "srtp"

           },

          "seed": ""

        }

      },

      "sniffing": {

        "enabled": true,

        "destOverride": [

          "http",

          "tls",

          "quic"

        ]

      }

    },

    {

      "listen": "",

      "port": 443,

      "protocol": "vless",

      "tag": "reality-in",

      "settings": {

        "clients": [

          {

            "id": "",

            "email": "user1",

            "flow": "xtls-rprx-vision"

          }

        ],

        "decryption": "none"

      },

       "streamSettings": {

        "network": "tcp",

        "security": "reality",

        "realitySettings": {

          "show": false,

          "dest": "www.yahoo.com:443",

          "xver": 0,

          "serverNames": [

            "www.yahoo.com"

          ],

          "privateKey": "",

          "minClientVer": "",

          "maxClientVer": "",

          "maxTimeDiff": 0,

          "shortIds": [""]

        }

      },

      "sniffing": {

        "enabled": true,

        "destOverride": [

          "http",

          "tls",

          "quic"

        ]

      }

    },

   {

        "port": 19222,

        "tag": "ss-in",

        "protocol": "shadowsocks",

        "settings": {

          "method": "2022-blake3-aes-128-gcm",

          "password": "",

          "network": "tcp,udp"

         },

        "sniffing": {

          "enabled": true,

          "destOverride": [

            "http",

            "tls",

            "quic"

          ]

        }

   }

  ],

  "outbounds": [

    {

        "protocol": "wireguard",

        "tag": "warp",

        "settings": {

          "secretKey": "",

          "address": [

            "",

            ""

          ],

          "peers": [

            {

              "endpoint": "",

              "publicKey": ""

            }

          ],

          "mtu": 1280,

          "reserved": "WPM9",

          "workers": 2,

          "domainStrategy": "ForceIP"

        }

    },

    {

      "protocol": "freedom",

      "tag": "direct"

    },

    {

      "protocol": "blackhole",

      "tag": "block"

    }

  ],

  "routing": {

    "rules": [

      {

        "type": "field",

        "domain": ["geosite:openai", "geosite:category-gov-ru", "domain:ru"],

        "outboundTag": "warp"

     },

     {

        "type": "field",

        "ip": ["geoip:ru"],

        "outboundTag": "warp"

     },

      {

        "type": "field",

        "protocol": "bittorrent",

        "outboundTag": "block"

      }

    ],

    "domainStrategy": "IPIfNonMatch"

  }

}

v2rayNG при проверке соединения пишет: net/http:TLS handshake timeout

А в системном журнале Hiddify нашёл вот что:

9210): measureV2rayDelay: go.Universe$proxyerror: Get "https://cp.cloudflare.com/generate_204": net/http: TLS handshake timeout

Это как-то связано с WARP?

НЛО прилетело и опубликовало эту надпись здесь

Вы взяли конфиг варпа из статьи полностью (его уже могли заблокировать), или сгенерировали свой, но забыли изменить это поле?

Я сгенерировал данные через скрипт wgcf, но в конфиге для WireGuard не было строки «Reserved». Я заметил, что некоторые данные совпадают с Вашими, в частности publickey, ipv4, mtu, endpoint. Я подумал, что reserved тоже подойдёт (да и делать мне было особо нечего; в конфиге этого параметра попросту не было).

Сейчас проверю, если дело в WARP, попробую по-другому сгенерировать данные.

НЛО прилетело и опубликовало эту надпись здесь

Проблема всё-таки была в warp: убрал его из outbounds — и всё заработало. Видимо, параметр reserved был необходим для подключения. Буду искать способы, как сделать конфиг с ним.

UPD: переставил warp в конец outbounds — не работают российские сайты; поэтому да, проблема была в нём.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

А вот сейчас не понял. Через mKCP почему-то warp работает. Почему он отказывается работать с xtls — для меня загадка.

НЛО прилетело и опубликовало эту надпись здесь

Клиент тот же — v2rayNG. Конфиг тот же, что и в моëм первом комментарии, только outbound warp идёт после freedom.

UPD: Сейчас ещё раз проверил — через mKCP уже не работает. Странно, конечно.

Сгенерировал через NekoBox. Теперь всë работает. Огромная благодарность Вам — за статью и за помощь.

Еще хотелось бы узнать: если я не создавал нового пользователя, а только поменял порт для ssh, это ведь никак не отразится на работе? Всё равно к серверу нет доступа ни у кого, кроме меня.

НЛО прилетело и опубликовало эту надпись здесь

Респект автору и тем кто схоронил.

Где почитать как настроить Streisand, он QR код из ссылки не читает, когда вручную вбиваешь он делает вид что подключается, но соединения нет.

НЛО прилетело и опубликовало эту надпись здесь

В том то и дело, клиент на Windows Hiddify отлично работает, туже строку пытаюсь скормить Streisand, он ее не хочет принимать. А в ручную вбиваю, он делает пишет коннект, но поля ip пустые, то есть по факту не коннект. FoXray тоже самое.

Посмотрел Nekoray, он выставляет Security TLS, а у меня было в Streisand, Reality. Поменял на TLS, но теперь из UI пропал пункт куда вводить Public Key... Ну и как итог ниче не подключается)

НЛО прилетело и опубликовало эту надпись здесь

Я логи не смотрел, вроде все заработало. Как раз тестирую приложение V2RayTun которое вы написали. Там даже роутинг легко настраивается. Спасибо. Кстати 2ip.io при проверки на анонимность говорит что у меня Defining tunnel (two way ping). Я так понял мне просто на сервер надо обрубить возможность пинговать его?

НЛО прилетело и опубликовало эту надпись здесь

Короче какой-то бред. Сгенерил QR код из Nekoray, Streisand его понял и все заработало. Я еще раз посмотрел профили вручную и тот который вставился. Они полностью идентичные, но вручную не работает) П..ц

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

Как-то сложно все. Может спросить - "GPT, как мне обойти блокировку?"

А тут, внезапно, для доступа к GPT и нужны эти сложности.

Спасибо за статью! Вроде всё понятно, буду пробовать.

Вопрос по хостеру VDSina - даёт ли он к серверу за 2 доллара IPv4 адрес или его придётся докупать отдельно за дополнительн��ю плату? А ещё там пополнение счёта только от 20 долларов.

НЛО прилетело и опубликовало эту надпись здесь

Спасибо за ответ!

Такие условия у них сейчас

У меня карта Тинька хоть и Visa, но была отклонена. Видимо, российская виза. Видимо, придётся 20 долларов считать вступительным взносом.

На 2-долларовом тарифе полноценный белый IPv4 адрес. Мало того, они практически даром дают /64 IPv6 подсеть.

Спасибо за статью!

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

Подключаюсь с мобильного с помощью Hiddify‑Next. Подлючение происходит сразу, но интернет на устройстве после подключения не работает.

Конфиг
{
  "log": {
    "loglevel": "info",
    "access": "/var/log/xray/access.log",
    "error": "/var/log/xray/error.log"
  },
  "inbounds": [
    {
      "listen": "255.255.255.255",
      "port": 443,
      "protocol": "vless",
      "tag": "reality-in",
      "settings": {
        "clients": [
          {
            "id": "xxxxxxxx",
            "email": "user@example.com",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "www.asus.com:443",
          "xver": 0,
          "serverNames": [
            "www.asus.com"
          ],
          "privateKey": "yyyyyyyy",
          "minClientVer": "",
          "maxClientVer": "",
          "maxTimeDiff": 0,
          "shortIds": [""]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "dns",
      "tag": "dns"
     }, 
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ],
  "routing": {
    "rules": [
      {
        "type": "field",
        "protocol": "bittorrent",
        "outboundTag": "block"
      }
    ],
    "domainStrategy": "IPIfNonMatch"
  }
}

Лог

2024/03/18 17:53:30 [Debug] app/log: Logger started
2024/03/18 17:53:30 [Debug] app/proxyman/inbound: creating stream worker on 10.0.0.99:443
2024/03/18 17:53:30 [Info] transport/internet/tcp: listening TCP on 10.0.0.99:443
2024/03/18 17:53:30 [Warning] core: Xray 1.8.9 started
2024/03/18 17:53:45 [Info] transport/internet/tcp: REALITY: processed invalid connection
2024/03/18 17:53:45 [Info] transport/internet/tcp: REALITY: processed invalid connection
2024/03/18 17:53:45 [Info] transport/internet/tcp: REALITY: processed invalid connection
2024/03/18 17:53:46 [Info] transport/internet/tcp: REALITY: processed invalid connection
2024/03/18 17:53:46 [Info] transport/internet/tcp: REALITY: processed invalid connection
2024/03/18 17:53:46 [Info] transport/internet/tcp: REALITY: processed invalid connection

В чём может быть причина?

НЛО прилетело и опубликовало эту надпись здесь

Удалось решить проблему? Столкнулся с такой же ошибкой: processed invalid connection

DNS inbound был убран изначально.

НЛО прилетело и опубликовало эту надпись здесь

Пробовал делать и с microsoft. Пробовал пересоздавать uid и связку ключей. Всё равно выдаёт ошибку на сервере:

[Info] transport/internet/tcp: REALITY: processed invalid connection

Через Hiddify он пишет Timeout на главном окне, в журнале программы пишет:

inbound/mixed[mixed-in]: process connection from 127.0.0.1:64761: reality verification failed

Через NekoRay пробую запускать тесты, там ругается:

pp/proxyman/outbound: failed to process outbound traffic > proxy/vless/outbound: failed to find an available destination > common/retry: [REALITY: processed invalid connection] > common/retry: all retry attempts failed

Не пойму что я упускаю(

Конфиг
{
  "log": {
    "loglevel": "info"
  },
  "inbounds": [
    {
      "listen": "ip_моего_сервера",
      "port": 443,
      "protocol": "vless",
      "tag": "reality-in",
      "settings": {
        "clients": [
          {
            "id": "мой_uid",
            "email": "user1",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "www.microsoft.com:443",
          "xver": 0,
          "serverNames": [
            "www.microsoft.com"
          ],
          "privateKey": "Мой_приватный_ключ",
          "minClientVer": "",
          "maxClientVer": "",
          "maxTimeDiff": 0,
          "shortIds": [""]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ],
  "routing": {
    "rules": [
      {
        "type": "field",
        "protocol": "bittorrent",
        "outboundTag": "block"
      }
    ],
    "domainStrategy": "IPIfNonMatch"
  }
}

В моё случае проблема решилась, когда на клиенте я поменял адрес сайта с microsoft.com на www.microsoft.com

Оказывается эти параметры должны быть максимально одинаковыми и на сервере и на клиенте. В примере статьи было указано без www и меня это сбило с толку)

Спасибо за статью, продолжу дальше настраивать)

Пробема в моём случае решилось заменой dest и serverNames в конфиге. При указании www.asus.com получал processed invalid connection . Выбрал microsoft и сразу всё заработало. Сейчас заменил на свой собственный сайт.

А есть ли клиенты для windows, которые бы оборачивали полностью весь трафик в этот прокси? Потому что Hiddify‑Next и nekoray в режиме vpn/tun пропускают например трафик телеги или торрент клиентов. Браузер идет через прокси, но хотелось бы чтобы шел весь трафик системы. Или это невозможно реализовать?

НЛО прилетело и опубликовало эту надпись здесь

слишком умный qBittorrent это с упреком?

НЛО прилетело и опубликовало эту надпись здесь

Объясните пожалуйста подробнее про эти настройки
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

НЛО прилетело и опубликовало эту надпись здесь

Я читал, что первая версия BBR имеет негативный побочный эффект в виде агрессивного перетягивания одеяла на себя с других методов. В следующей версии это доработали, но в Linux на данный момент входит именно первая. Насколько важно и нужно её включать? Что это даст и какие будут минусы? Если BBR это так круто, как описывают в статьях, то почему по-умолчанию оно выключено?

НЛО прилетело и опубликовало эту надпись здесь

А как настроить клиент чтоб он торренты тоже не проксировал?

НЛО прилетело и опубликовало эту надпись здесь

Я использую Hiddify, не могу понять как в нем настроить чтоб qbittorent качал напрямую, не через прокси.

НЛО прилетело и опубликовало эту надпись здесь

Любители VLESS, объясните почему этот протокол уже два года как

WARNING

VLESS is deprecated and subject to removal.

Please consider using the Trojan protocol as a replacement for new deployments.

НЛО прилетело и опубликовало эту надпись здесь

Отличная статья! Спасибо!

Настроил всё, используя панель панель 3X-UI. Также добавил ко всему VLESS-gRPC через CloudFlare. С панелью гораздо удобнее, конечно, если по умному настроить.

Несколько дней пытаюсь настроить VLESS c XTLS-Reality, но сервис не стартует. Имеется VPS с ограниченным диапазоном портов. Устанавливал и скриптом и врусную.

конфиг

{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"listen": "ххх.ххх.ххх.ххх",
"port": 14414,
"protocol": "vless",
"tag": "reality-in",
"settings": {
"clients": [
{
"id": "bafb29bc-0911-45c8-8ec6-9102ff2dcd3e",
"email": "user1",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.microsoft.com:14414",
"xver": 0,
"serverNames": [
"www.microsoft.com"
],
"privateKey": "WGorELK2TcGAdqSgvPVN4EuqrFlKcipES_0ncAF7m3A",
"minClientVer": "",
"maxClientVer": "",
"maxTimeDiff": 0,
"shortIds": [""]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"routing": {
"rules": [
{
"type": "field",
"protocol": "bittorrent",
"outboundTag": "block"
}
],
"domainStrategy": "IPIfNonMatch"
}
}

лог

● xray.service – Xray

Loaded: loaded (/etc/systemd/system/xray.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/xray.service.d

└─10-donot_touch_single_conf.conf

Active: activating (auto-restart) (Result: exit-code) since Fri 2024-03-22 12:06:48 GMT; 28s ago

Process: 2345 ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json (code=exited, status=255)

Main PID: 2345 (code=exited, status=255)

Mar 22 12:06:48 antiputin.gullo.me systemd[1]: xray.service: main process exited, code=exited, status=255/n/a

Mar 22 12:06:48 antiputin.gullo.me xray[2345]: Failed to start: app/proxyman/inbound: failed to listen TCP on 14...dress

Mar 22 12:06:48 antiputin.gullo.me systemd[1]: Unit xray.service entered failed state.

Mar 22 12:06:48 antiputin.gullo.me systemd[1]: xray.service failed.

Подскажите, плз, куда копать?

НЛО прилетело и опубликовало эту надпись здесь

Попытка с Shadowsocks, к сожалению, тоже неудачная((

Конфиг

GNU nano 7.2 /etc/shadowsocks-libev/config.json {
"server":["::1", "ххх.ххх.ххх.ххх"],
"mode":"tcp_and_udp",
"server_port":14402,
"local_port":1080,
"password":"rvJEyvyWv7Sd",
"timeout":86400,
"method":"chacha20-ietf-poly1305"
}

Лог

× shadowsocks-libev.service - Shadowsocks-libev Default Server Service
Loaded: loaded (/lib/systemd/system/shadowsocks-libev.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Mon 2024-03-25 09:56:58 CET; 3s ago
Duration: 13ms
Docs: man:shadowsocks-libev(8)
Process: 1980 ExecStart=/usr/bin/ss-server -c $CONFFILE $DAEMON_ARGS (code=exited, status=255/EXCEPTION)
Main PID: 1980 (code=exited, status=255/EXCEPTION)

Mar 25 09:56:58 antiputin.gullo.me systemd[1]: Started shadowsocks-libev.service - Shadowsocks-libev Default Server Service.
Mar 25 09:56:58 antiputin.gullo.me ss-server[1980]: 2024-03-25 09:56:58 INFO: UDP relay enabled
Mar 25 09:56:58 antiputin.gullo.me ss-server[1980]: 2024-03-25 09:56:58 INFO: initializing ciphers... chacha20-ietf-poly1305
Mar 25 09:56:58 antiputin.gullo.me ss-server[1980]: 2024-03-25 09:56:58 INFO: tcp server listening at [::1]:14402
Mar 25 09:56:58 antiputin.gullo.me ss-server[1980]: 2024-03-25 09:56:58 INFO: tcp server listening at 144.76.97.102:14402
Mar 25 09:56:58 antiputin.gullo.me ss-server[1980]: 2024-03-25 09:56:58 ERROR: bind: Cannot assign requested address
Mar 25 09:56:58 antiputin.gullo.me ss-server[1980]: 2024-03-25 09:56:58 ERROR: failed to bind address
Mar 25 09:56:58 antiputin.gullo.me systemd[1]: shadowsocks-libev.service: Main process exited, code=exited, status=255/EXCEPTION
Mar 25 09:56:58 antiputin.gullo.me systemd[1]: shadowsocks-libev.service: Failed with result 'exit-code'.

mKCP: я так понимаю не может считать конфиг. Но почему?

конфиг

/opt/xray/config.json

{
"log": {
"loglevel": "info"
},
"inbounds": [
{
"port": 14400,,
"protocol": "vless",
"tag": "kcp-in",
"settings": {
"clients": [
{
"id": "d6be3310-81e3-4904-b40d-8ad7d33ab431",
"email": "user1"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "kcp",
"kcpSettings": {
"mtu": 1350,
"tti": 20,
"uplinkCapacity": 10,
"downlinkCapacity": 20,
"congestion": false,
"readBufferSize": 1,
"writeBufferSize": 1,
"header": {
"type": "WebRTC"
},
"seed": "bhyBYGbjkuVYXJ1cyEhIQ"
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
},
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
],
"routing": {
"rules": [
{
"type": "field",
"protocol": "bittorrent",
"tag": "block"
}
],
"domainStrategy": "IPIfNonMatch"
}
}

статус

● xray.service - XRay
Loaded: loaded (/lib/systemd/system/xray.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Mon 2024-03-25 12:05:32 UTC; 2s ago
Process: 9743 ExecStart=/opt/xray/xray run -c /opt/xray/config.json (code=exited, status=23)
Main PID: 9743 (code=exited, status=23)

Mar 25 12:05:32 antiputin.gullo.me xray[9743]: A unified platform for anti-censorship.
Mar 25 12:05:32 antiputin.gullo.me xray[9743]: Failed to start: main: failed to load config files: [/opt/xray/config.json] > infra/conf/serial: failed to decod>
Mar 25 12:05:32 antiputin.gullo.me systemd[1]: xray.service: Main process exited, code=exited, status=23/n/a
Mar 25 12:05:32 antiputin.gullo.me systemd[1]: xray.service: Failed with result 'exit-code'.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

А вот такой вопрос. При настройке VLESS с XTLS-Reality включается маскировка под другой сайт. Но разве нельзя получить список адресов этого сайта и увидеть, что нашего IP в списке нет? Тем же curl, который вы советуете использовать для проверки сайта. Он в начале пишет:

>curl -v -L --tlsv1.3 --http2 -s https://yahoo.com

  • Host yahoo.com:443 was resolved.

  • IPv6: (none)

  • IPv4: 74.6.231.21, 74.6.143.26, 98.137.11.164, 74.6.143.25, 98.137.11.163, 74.6.231.20

  • Trying 74.6.231.21:443...

  • Connected to yahoo.com (74.6.231.21) port 443

НЛО прилетело и опубликовало эту надпись здесь

Настроил VLESS+XTLS-Reality, вроде работает, curl выдаёт страничку маскировочного сервера. Но в выводе RealiTLScanner мой сервер не появился, что-то не так?

НЛО прилетело и опубликовало эту надпись здесь

А я не с сервера запускаю, а со своего домашнего. Адрес пробовал менять (параметр -addr), но нет.

НЛО прилетело и опубликовало эту надпись здесь

"можно сгенерировать его командой openssl rand -base64 16"

Там бинарный выхлоп, xray нужен текстовый.

Ну и стоило бы явно написать какие порты нужно открывать, при наличии файервола на сервере.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Значит статья хорошая :)

MiraclePtr рассказывал не просто сложный вариант с CDN, а как подключится к Reality через CDN, используя nginx. У вас же просто VLESS (без Reality) через CDN. Может быть копнёте глубже и раскроете тему подключения к Reality через CDN?

НЛО прилетело и опубликовало эту надпись здесь

Хмм, возможно я неправильно понял. Вот его прямая цитата "Обратите внимание: если у вас на сервере настроен XTLS-Reality, то черезWebsocket/gRPC подĸлючаться ĸ нему нужно тольĸо через CDN!" Разве из неё не следует, что к Reality можно подключится через CDN? То есть будем подключаться к Reality не через IP VPS, а через адрес домена (CDN CF, например). То есть к Reality можно будет подключиться, даже если IP VPS попал в бан.

НЛО прилетело и опубликовало эту надпись здесь

Спасибо за разъяснение. Грустно, конечно. Казалось, что MiraclePtr нашёл способ совместить CDN и Reality :(

НЛО прилетело и опубликовало эту надпись здесь

Отличная статья, настроил себе xtls-reality с маскировкой под небольшой сайтик на nginx

Правда похоже что nekoray неправильно понимает параметры mKCP, с ним он ни в какую не заработал. А вот по той же самой ссылке v2rayNG на андроиде — работает

Ибо в логах на сервере такое:

transport/internet/kcp: discarding invalid payload from udp:<IP>:44139

Низкий поклон за статью. К сожалению, не хватает репы отлайкать по достоинству) Настроила вот по этому пункту: Просто: Настройка VLESS c XTLS-Reality. Hiddify-next на андроиде работает отлично, а вот под линуксом не работает совсем (та же ссылка, тот же клиент). В какую сторону можно копнуть? Я не полный чайник, но близко к тому, прошу помочь)

НЛО прилетело и опубликовало эту надпись здесь

Приложение запускается, делает вид, что подключено, но санкционные сайты не открываются. Остальной ру интернет работает как обычно. В настройках стоит регион Россия. Причем уже на двух ПК с Линукс попробовала - ситуация такая же. И в том числе пробовала, как в статье указано, отключиться и подключиться повторно, не помогло. Логи попробую добыть чуть позже, я ведь почти чайник)

Из того, что удалось найти:

app.log

Memory Limit: false
18:47:14.399073 - [D] ConnectionRepositoryImpl: setting up singbox
18:47:14.460605 - [D] FFISingboxService: starting, memory limit: [false]
18:47:14.465909 - [I] ConnectionNotifier: connection status: CONNECTING
18:47:14.471054 - [D] SystemTrayNotifier: updating system tray
18:47:15.624016 - [I] ConnectionNotifier: connection status: CONNECTED
18:47:15.624434 - [D] IpInfoNotifier: disposing
18:47:15.624753 - [D] ProxyRepositoryImpl: getting current ip info using [https://ipwho.is/]
18:47:15.624922 - [D] FFISingboxService: singbox native libs path: "libcore.so"
18:47:15.626902 - [D] SystemTrayNotifier: updating system tray
18:47:22.791998 - [D] LogsOverviewNotifier: resuming
18:47:24.080049 - [D] SettingsRepositoryImpl: checking battery optimization status
18:47:24.083425 - [D] PreferencesEntry<PerAppProxyMode, String>: getting persisted preference per_app_proxy_mode
18:47:24.111240 - [D] LogsOverviewNotifier: pausing
18:47:26.160426 - [D] SettingsRepositoryImpl: checking battery optimization status
18:47:26.977079 - [D] IpInfoNotifier: entering idle mode
18:47:26.977254 - [D] IpInfoNotifier: disposing
18:47:44.112415 - [D] LogsOverviewNotifier: disposing
18:48:48.324466 - [D] LogsOverviewNotifier: adding listeners

box.log - вообще пусто

Не подскажете, где и как еще можно посмотреть?

+ box.log

Hidden text

+0300 2024-03-30 20:03:02 INFO router: Hiddify!notifyNetworkUpdate 1
+0300 2024-03-30 20:03:02 INFO router: updated default interface wlan0, index 3
+0300 2024-03-30 20:03:02 INFO router: loaded geoip database: 250 codes
+0300 2024-03-30 20:03:02 INFO clash-api: restful api listening at 127.0.0.1:6756
+0300 2024-03-30 20:03:02 INFO inbound/mixed[mixed-in]: tcp server started at 127.0.0.1:2334
+0300 2024-03-30 20:03:02 INFO inbound/direct[dns-in]: tcp server started at 127.0.0.1:6450
+0300 2024-03-30 20:03:02 INFO inbound/direct[dns-in]: udp server started at 127.0.0.1:6450
+0300 2024-03-30 20:03:02 INFO sing-box started (0.199s)
+0300 2024-03-30 20:03:02 INFO outbound/vless[vless § 0]: outbound connection to cp.cloudflare.com:80
+0300 2024-03-30 20:03:02 INFO [2158745755 0ms] inbound/mixed[mixed-in]: inbound connection from 127.0.0.1:39718
+0300 2024-03-30 20:03:02 INFO [2158745755 1ms] inbound/mixed[mixed-in]: inbound connection to ipwho.is:443
+0300 2024-03-30 20:03:02 DEBUG [2158745755 3ms] router: sniffed protocol: tls, domain: ipwho.is
+0300 2024-03-30 20:03:02 INFO [2158745755 4ms] outbound/vless[vless § 0]: outbound connection to ipwho.is:443
+0300 2024-03-30 20:03:02 INFO outbound/vless[vless § 0]: outbound connection to cp.cloudflare.com:80
+0300 2024-03-30 20:03:02 INFO [2158745755 215ms] outbound/vless[vless § 0]: outbound connection to ipwho.is:443
+0300 2024-03-30 20:03:03 DEBUG outbound/urltest[auto]: outbound vless § 0 available: 254ms
+0300 2024-03-30 20:03:48 INFO router: Hiddify!notifyNetworkUpdate 1
+0300 2024-03-30 20:03:48 INFO router: updated default interface wlan0, index 3
+0300 2024-03-30 20:03:48 INFO router: loaded geoip database: 250 codes
+0300 2024-03-30 20:03:48 INFO clash-api: restful api listening at 127.0.0.1:6756
+0300 2024-03-30 20:03:48 INFO inbound/mixed[mixed-in]: tcp server started at 127.0.0.1:2334
+0300 2024-03-30 20:03:48 INFO inbound/direct[dns-in]: tcp server started at 127.0.0.1:6450
+0300 2024-03-30 20:03:48 INFO inbound/direct[dns-in]: udp server started at 127.0.0.1:6450
+0300 2024-03-30 20:03:48 INFO sing-box started (0.188s)
+0300 2024-03-30 20:03:48 INFO outbound/vless[vless § 0]: outbound connection to cp.cloudflare.com:80
+0300 2024-03-30 20:03:48 INFO [504311486 0ms] inbound/mixed[mixed-in]: inbound connection from 127.0.0.1:36310
+0300 2024-03-30 20:03:48 INFO [504311486 0ms] inbound/mixed[mixed-in]: inbound connection to ipwho.is:443
+0300 2024-03-30 20:03:48 DEBUG [504311486 1ms] router: sniffed protocol: tls, domain: ipwho.is
+0300 2024-03-30 20:03:48 INFO [504311486 1ms] outbound/vless[vless § 0]: outbound connection to ipwho.is:443
+0300 2024-03-30 20:03:48 INFO outbound/vless[vless § 0]: outbound connection to cp.cloudflare.com:80
+0300 2024-03-30 20:03:48 TRACE outbound/vless[vless § 0]: XtlsPadding 76 223 0
+0300 2024-03-30 20:03:48 INFO [504311486 595ms] outbound/vless[vless § 0]: outbound connection to ipwho.is:443
+0300 2024-03-30 20:03:48 TRACE outbound/vless[vless § 0]: XtlsFilterTls found tls client hello! 247
+0300 2024-03-30 20:03:48 TRACE outbound/vless[vless § 0]: XtlsPadding 247 736 0
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: Xtls Unpadding new block 21 772 padding 235 0
+0300 2024-03-30 20:03:49 DEBUG outbound/urltest[auto]: outbound vless § 0 available: 163ms
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: Xtls Unpadding new block 21 3864 padding 253 0
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: XtlsFilterTls short server hello, tls 1.2 or older? 1163 70
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: XtlsFilterTls found tls 1.2! 1163
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: Xtls Unpadding new block 5 491 padding 890 0
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: XtlsPadding 126 1212 0
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: Xtls Unpadding new block 5 258 padding 1119 0
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: XtlsPadding 155 921 1
+0300 2024-03-30 20:03:49 TRACE outbound/vless[vless § 0]: Xtls Unpadding new block 5 978 padding 1 1
+0300 2024-03-30 20:03:52 DEBUG [504311486 4.47s] inbound/mixed[mixed-in]: connection closed: process connection from 127.0.0.1:36310: download: read tcp 192.168.100.13:58400->xxx.xxx.xxx.xxx:443: use of closed network connection | upload: raw-read tcp 127.0.0.1:2334->127.0.0.1:36310: use of closed network connection | upstream: context canceled
+0300 2024-03-30 20:04:05 INFO router: Hiddify!notifyNetworkUpdate 1
+0300 2024-03-30 20:04:05 INFO router: updated default interface wlan0, index 3
+0300 2024-03-30 20:04:05 INFO router: loaded geoip database: 250 codes
+0300 2024-03-30 20:04:05 INFO clash-api: restful api listening at 127.0.0.1:6756
+0300 2024-03-30 20:04:05 INFO inbound/mixed[mixed-in]: tcp server started at 127.0.0.1:2334
+0300 2024-03-30 20:04:05 INFO inbound/direct[dns-in]: tcp server started at 127.0.0.1:6450
+0300 2024-03-30 20:04:05 INFO inbound/direct[dns-in]: udp server started at 127.0.0.1:6450
+0300 2024-03-30 20:04:05 INFO sing-box started (0.177s)

Ну и дальше уже такие же однотипные записи.

В общем, и hiddify, и nekoray на ПК в режиме системного прокси не завелись, работают только в режиме tun/vpn, что не очень удобно, т.к. запускать нужно под админом. Пока не понимаю, почему так. И, главное, какие последствия могут быть при использовании этого варианта.

НЛО прилетело и опубликовало эту надпись здесь

По идее и chrome, и brave по умолчанию используют системный прокси. Но настройка не открывается, т.к. нет для нее gui. Это те два браузера, что изначально пыталась использовать.

Поставила дополнительно firefox, в настройках эта опция стоит. Hiddify в режиме системного прокси так и не завелся, а вот nekoray работает.

Ну а хром, как уже писала ранее, только в режиме tun/vpn как в hiddify, так и в nekoray. Пока не могу победить. Гугл подсказывает, что прокси нужно явно задать в переменных окружения, но что-то не понимаю, что туда вписывать в контексте используемых клиентов. Не адрес же своего сервера писать. Или да?

НЛО прилетело и опубликовало эту надпись здесь

Точно обычный хром, но использую голый оконный менеджер без DE. А гуи обычно как часть окружения идут. И при попытке открыть настройки прокси хром пишет:

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

Но вы все же можете выполнить конфигурацию с помощью командной строки. Подробнее о флагах и переменных окружения вы можете узнать в руководстве к google-chrome.

Я попробовала из терминала запустить с флагами --proxy-server="мой сервер", но так тоже не завелось.

Разумеется не заведется, на вашем сервере никакого стандартного прокси нет, иначе бы смысла в xray не было. А подключаться надо к локалхосту, где клиент поднимет локальный socks5 прокси для использования софтом. По аналогии как tor на порту 9050 его поднимает.

А как прописывать — смотрите мой комментарий ниже.

Если используете hiddify, то для хрома аргумент --proxy-server="socks5://localhost:2334"

Для Firefox просто в настройках прокси тип socks5, локалхост и порт 2334. И поставить галочку на проксирование DNS.

Таким способом получилось с хромом, спасибо. Не могу плюсануть. но очень благодарна :)

Спасибо за статью! К сожалению не могу поставить плюс.

Статью сразу прочитал, пошел покупать VPS и пробовать настроить.

Сам я не айтишник, никогда до этого не имел опыта с удаленными серверами, никогда в глаза не видел Debian и линукс. Мне было сложно разобраться с нуля, но я смог запустить Xray и VLESS. Это заработало.

Но не я не могу добавть Shadow Socks, в конфиге из статьи есть ошибка....

Вот что пишет валидатор:

Ошибка

Если убарать запятую перед "]" квадратной скобкой, то скрипт валидацию проходит. Но если я вставляю этот скрипт в конфиг /usr/local/etc/xray/config.json , Shadow Socks на сервере не запускается.

При рестарте xray ругается на: infra/conf: invalid field rule > infra/conf: neither outboundTag nor balancerTag is specified in routing rule

Ошибка SS

× xray.service - Xray Service
Loaded: loaded (/etc/systemd/system/xray.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/xray.service.d
└─10-donot_touch_single_conf.conf
Active: failed (Result: exit-code) since Sat 2024-03-30 04:35:38 CET; 40s ago
Duration: 38ms
Docs: https://github.com/xtls
Process: 4793 ExecStart=/usr/local/bin/xray run -config /usr/local/etc/xray/config.json (code=exited, status=23)
Main PID: 4793 (code=exited, status=23)
CPU: 31ms

Mar 30 04:35:38 vm2235376.stark-industries.solutions systemd[1]: Started xray.service - Xray Service.
Mar 30 04:35:38 vm2235376.stark-industries.solutions xray[4793]: Xray 1.8.9 (Xray, Penetrates Everything.) 37f8654 (go1.22.1 linux/amd64)
Mar 30 04:35:38 vm2235376.stark-industries.solutions xray[4793]: A unified platform for anti-censorship.
Mar 30 04:35:38 vm2235376.stark-industries.solutions xray[4793]: Failed to start: main: failed to load config files: [/usr/local/etc/xray/conf>
Mar 30 04:35:38 vm2235376.stark-industries.solutions systemd[1]: xray.service: Main process exited, code=exited, status=23/n/a
Mar 30 04:35:38 vm2235376.stark-industries.solutions systemd[1]: xray.service: Failed with result 'exit-code'.

Может кто подскажет как поправить конфиг, что бы SS заработал?

P.S. Эту статью из Росси уже не видно...

НЛО прилетело и опубликовало эту надпись здесь

Спасибо,

Да, я понял что запятая лишняя. Валидацию конфиг проходит, но когда я его запускаю на xray, выходит ошибка: infra/conf: invalid field rule > infra/conf: neither outboundTag nor balancerTag is specified in routing rule

code=exited, status=23

Гугление не помогло... Xray не запускается, пришлось восстановить конфиг только с vless.

НЛО прилетело и опубликовало эту надпись здесь

У меня точно так же как в статье. Я ничего не менял...

outbounds and routing

"outbounds":

[ { "protocol": "freedom", "tag": "direct" }, { "protocol": "blackhole", "tag": "block" }

],

"routing": { "rules": [ { "type": "field", "protocol": "bittorrent", "tag": "block" } ], "domainStrategy": "IPIfNonMatch" }}

Когда делаешь вставляешь, вся разметка слетает :((

НЛО прилетело и опубликовало эту надпись здесь

Спасибо, все верно. Исправил на "outboundTag" и xray заработал.

Shadowsocks работает на Windows и на Android. Благодарен за помощь и поддержку :)

Есть вопрос, когда я подключаюсь через vless в клиенте винды сыпятся ошибки:

Hiddify

Но в тоже время в клиенте андроида такого нет, там все чисто.

Это можно как-то починить? Или это глюк какой-то?...

НЛО прилетело и опубликовало эту надпись здесь

Вопрос по Hiddify

Установил клиент Hiddify для винды, в хроме все вроде работает, заходит куда надо. Но при выключении Hiddify в хроме не открывается ни один сайт, пишет No Internet. WiFi работает, сетевые настройки не трогал, все по умолчанию.

Где смотреть, куда копать?.... Может кто сможет подсказать?

НЛО прилетело и опубликовало эту надпись здесь

Заметил проблемы с мобильным приложением instagram на андроид при подключении через XTLS-Reality (настроил в 3x-ui). Контент то загружается быстро, то совсем не грузится ничего (ни посты, ни комментарии, ни список подписчиков - ничего). Бывает, что всё отваливается сразу после открытия приложения, но иногда при запуске всё работает как надо, а через пару минут может отлететь, после чего может заработать через несколько десятков секунд, а может не заработать. Какую-то закономерность я выявить не смог.

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

Hidden text

app/proxyman/outbound: failed to process outbound traffic > proxy/freedom: failed to open connection to tcp:[2a03:2880:f223:e6:face:b00c:0:6e2e]:5222 > common/retry: [dial tcp [2a03:2880:f223:e6:face:b00c:0:6e2e]:5222: connect: network is unreachable] > common/retry: all retry attempts failed

Клиент nekobox. Пробовал Hiddify - та же проблема. Пробовал пускать трафик geosite:meta через warp (client->vps->warp->instagram). Проблема не решилась.

От интернет провайдера как будто бы не зависит.

Попробовал подключиться через wireguard (vps один и тот же) - с ним таких проблем нет и раньше не было.

Что интересно, при использовании сайта всё быстро, как и ожидается.

Подобных проблем с какими-либо другими сайтами и приложениями не выявлено.

Есть вариант, что это фича самого приложения инсты. Может кто-то сталкивался с этим?

НЛО прилетело и опубликовало эту надпись здесь

Недавно решил добавить в конфиг работу через CDN. Настроил, всё работает с одним "но": если направить трафик через warp, то при использовании на клиенте функции "проверка подключения", иногда пишет:

Сбой проверки интернет-соединения: io: read/write on closed pipe

А может и сообщать об успешном соединении. То есть раз 5 подряд нажать — будет выдавать и успех, и ошибку. Стоит убрать warp — и ошибка пропадает. В принципе, соединение работает нормально и меня всё устраивает. Мне не дает покоя сам факт ошибки: откуда она и можно ли её исправить. Вот что указано в логах на сервере:

app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > proxy/vless/inbound: failed to transfer request payload > websocket: close 1006 (abnormal closure): unexpected EOF

app/proxyman/inbound: connection ends > proxy/vless/inbound: connection ends > proxy/vless/inbound: failed to transfer request payload > websocket: close 1000 (normal)

common/mux: unexpected EOF > common/mux: failed to read metadata > io: read/write on closed pipe

Просмотр запросов на гитхабе и других тематических ресурсах так и не дал ответа. Буду признателен за помощь.

НЛО прилетело и опубликовало эту надпись здесь

У меня все inbound проходят через warp, и с ними таких проблем нет. Я не особо разбираюсь в тонкостях вопроса, но, возможно, дело в websockets? Нашёл похожие проблемы — там говорят, что ему не хватает времени и он закрывается и советуют увеличить время в handshake.

Нашёл этот параметр в Local Policy в документации конфига Xray. Но там не понятная мне система с level.

Как думаете, дело может быть в этом?

НЛО прилетело и опубликовало эту надпись здесь

Спасибо за инструкцию! Ранее ставил уже какие-то обходы блокировок на уровне "скопировать код+заменить Алексею поля". Эту инструкцию осилил на 80%.

Вопрос: вижу, что вариант подключения с SS работает значительно быстрее, чем базовый. Есть риски скомпрометировать IP VPS и все остальные методы, если я буду использовать его?

Если будете корректировать статью для нубов типа меня (пришлось интуитивно разбираться через логи и валидатор json по ошибкам) :

1) почему-то копипаст uuid и ключей не работает в вашей статье. Установка xray и получение ключей с uuid почему-то помогла из смежной статьи. Далее шел по вашей инструкции.

2) в правилах inbound в json в каждом случае в конце стоит } с запятой, хотя интуитивно ты добавляешь каждый следующий вариант следующим. В самой статье написано про запятую, но код и коммент не бьются в случае внесения правил ниже, а не выше старых.

3) в каком-то из примеров ссылок скопировалась куча пробелов. Долго разглядывал, нашел один, потом - второй, убил штук 6 в ворде через "найти и заменить"

4) mKCP не знает параметр хедера "webrtc". Бегло погуглил - его нет списка возможных параметров.

4) с вариантом http/2 так и не разобрался. Надо убить первое правило inbound из статьи?

НЛО прилетело и опубликовало эту надпись здесь

Что-то случилось с рунетом буквально сегодня. Перестали открываться сайты, которые ещё утром открывались через FastProxy. Везде пишет ERR_TUNNEL_CONNECTION_FAILED. Тор открылся, потом на пол-дороге перестал работать. Теперь снова не открывается даже со свежеполученными мостами.

Тор открылся, потом на пол-дороге перестал работать. Теперь снова не открывается даже со свежеполученными мостами.

Если оператор поддерживает IPv6, то используйте бридж webtunnel. С ними никогда проблем не было, да и соединяется довольно быстро.

Hidden text

НЛО прилетело и опубликовало эту надпись здесь

Все webtunnel бриджи которые мне выдавал Тор имели IPv6 точку входа. Поэтому подумал, что они работают только через IPv6. Если это не так, то был не прав.

Hidden text

НЛО прилетело и опубликовало эту надпись здесь

Спасибо. Не знал о такой особенности.

Большое спасибо за статью. А возможен ли такой вариант развёртывания XRay: у меня есть домашняя сервер-файлопомойка на собственном домене, для связи с глобалкой использую Cloudflare Tunnel вместо статического IP. Но поскольку сервер в РФ и трафик идёт через местного провайдера, то сработает ли эта затея?

Очень ёмкая и полезная статья, автору большое спасибо! За 10-15 минут можно всё развернуть и пользоваться. Похоже, что мы только в начале пути, т.к. дальше нас ждёт всё больше "хитрых" DPI "замедлений".

На днях натолкнулся на одно из таких со включенным VPN (VLESS). Всё вроде работает хорошо, но на телефоне "тормозили" YouTube и Google Play. На десктопе всё было ок, с другого оператора тоже всё работает. Если вдруг ошибаюсь, поправьте меня (я не сетевой инженер), но всё указывает на DPI.

Для тех, у кого РосТелеком, может быть крайне полезно отключить "sniffing", т.к. у меня проблема была именно из-за этой опции:

"sniffing": { "enabled": false }

Успешно заработало), спасибо!

Подскажите пожалуйста, а должно происходить если браузером на IP ВПСки сходить? Мне хостер предустановил апач, и вылезала его дефолтная страница, апач убил. Теперь там только SSL_ERROR_UNRECOGNIZED_NAME_ALERT.

Это ок, или меня должно на маскировочный сайт перекинуть?

Нашел ответ как проверить в одном из гайдов:

"Чтобы проверить работоспособность маскировки XRay сервера под популярный сайт, на своем локальном компьютере добавляем в файл hosts (в Linux это файл /etc/hosts, а в Windows это файл C:\Windows\System32\drivers\etc\hosts) строку:

12.34.56.79 www.amazon.com

где 12.34.56.79 — это IP адрес XRay сервера;

www.amazon.com — это домен популярного сайта, под который маскируется XRay сервер.

Останавливаем XRay сервер командой:

systemctl stop xray

На своем локальном компьютере, в адресной строке браузера набираем домен популярного сайта (www.amazon.com), под который маскируется XRay сервер. И соединение с сайтом не должно быть установлено, т.к. XRay сервер остановлен.

Запускаем XRay сервер:

systemctl start xray

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

Проверяем TLS сертификат сайта, нажав на «замочек» в адресной строке браузера.

Ура! TLS сертификат валидный, настоящий. Маскировка работает!"

Спасибо за гайд.
А насколько (без)опасно вешать на такой сервер свой поддомен - для удобства и чтобы можно было отправку почты с сервера настроить, с SPF/DKIM/etc?
И вообще, вот мы маскируемся под гугл.ком, а ведь можно сделать reverse dns запрос на айпи сервера и убедиться, что там никакого гугл.ком нет?

mKCP, но он, кажется, с каких-то пор сломан в XRay

Похоже и QUIC поломан в XRay (1.8.24), работают конфиги с WS, GRPC, httpupgrade, httpsplit, но как только ставлю транспорт QUIC ("network": "quic"), перестает работать вообще всё, даже носки, хотя сам XRay запускается без ошибок.

НЛО прилетело и опубликовало эту надпись здесь

Проверил разные версии, посмотрел логи, хоть и статус в начале active (running), но потом сваливается в failed и XRay 1.8.24 и последний 29.4.30 пишут: Failed to start: main: failed to load config files: [/opt/xray/config.json] > infra/conf: Config: unknown transport protocol: quic.

Версия 1.8.16 и правда не пишет про незнакомый транспорт.

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

Поясню. В панели Hiddify есть возможность создать не один профиль. Например, я бы хотел сделать два домена xxx.com, yyy.com, две настройки с ними, два профиля и динамически переключать их в клиенте. Можно как-то настроить сервер так, чтобы дружили рядом 1+ таких настроек?

НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Читают сейчас

Истории

Спрошу у лида
Сладость или гадость?
Актуальные зарплаты аналитиков
Топ-7 годных статей из блогов компаний
Облачный IT-турнир
Как продвинуть машину времени?
Как учить детей программированию

Работа

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань