Pull to refresh
24
0

Software Engineer

Send message



Та фронт сделан на обычном React, ну MUI, по этому и выглядит неплохо ).

Ну в целом принцип работы тот же, что и у youtubeUnblock (кстати, забыл сказать, что если он используется, то стоит отключить на время работы b4, ибо они как раз конфликтуют, борясь за место под солнцем в nfqueue). B4 работает на уровне netfilter/nfqueue, перехватывая TCP пакеты до их отправки.

Основные мешалки у меня (но я многое подглядел у youtubeUnblock и byeDpi):
- TCP frag - разбивка TCP payload на несколько сегментов с корректировкой sequence numbers. Можно split в начале SNI, в середине SNI, или в обоих местах сразу. Каждый сегмент - валидный TCP пакет с правильными чексуммами.

- IP frag - разбивка на IP уровне с манипуляцией fragment offset. DPI не всегда корректно реассемблирует фрагменты, особенно если отправить в обратном порядке.

- TLS record splitting - разбивка TLS ClientHello на несколько TLS records. Если DPI ожидает увидеть весь handshake в одном record.

- По QUIC - UDP пакеты с QUIC Initial фрагментируются на IP уровне. Перед отправкой реального пакета отправляется серия fake UDP пакетов с неправильной чек суммой.

- Desync - отправка фейковых пакетов с неверной TCP checksum, чтобы они дошли до DPI, но были отброшены конечным сервером. DPI думает, что соединение идёт в одном направлении, а реальный сервер видит другое.

- ClientHello frag - разбивка TLS handshake на мелкие TCP сегменты или TLS записи, чтобы DPI не мог собрать полную картину SNI в одном пакете.

- TCP window manipulation - заигрывания с размером TCP окна, чтобы контролить, какие данные DPI успевает обработать.

- Out-of-Band (ну oob) данные и SACK dropping - использование TCP флагов и selective acknowledgments для дезориентации DPI. TCP urgent pointer для маркировки данных как "срочных". Многие DPI могут некорректно обрабатывать OOB данные.

- Пытаюсь в мутации ClientHello - изменение порядка extensions, добавление padding, split на уровне TLS records. Главное отличие от SOCKS proxy - мы работаем после маршрутизации, перед самой отправкой в сеть, поэтому можем манипулировать реальными пакетами, а не создавать отдельный туннель.

Как-то так.

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

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

Да, в настройках нужно подключить геодаты от xray и в Bypass IPs указать желаемые подсети из базы

Но вообще я за точечность, это прям стрельба по мухам из пушки :). Так можно себе весь интернет поломать. Вообще в геодате от RUNET Freedom вот такая на сегодняший день статистика по подсетям получается

Вы имеете ввиду примеры типа openai? Да, модуль нормально работает совместно с впнами, они не должны никак конфликтовать, принцип работы несколько разный.

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

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

Из плюсов - поддерживает геофайлы xray/v2ray, обновляя все на лету без перезагрузок, по сути тот же дпи байпас только с веб мордой удобной.

Вот тут подробнее как поставить https://github.com/DanielLavrushin/b4/blob/main/docs/docs/intro.md

Читал, читал, но так и не понял зачем всё это.

Значит вам просто это не сильно нужно.

Да вроде бы стабилен... ну народ пользуется. Бывают баги и косяки, стараюсь их править быстро (сейчас уже меньше появляются). Но иногда находят и хорошие неленивые люди даже заносят в телеграмм-группу. В целом фидбек - работает.
Но, опять же - много чего может влиять, из-за чего может быть впечатлнение, что причина в самом плагине. По факту же, это может быть роутер, может быть провайдер, может быть сервер (VPS), может быть сам xray-core, который неверно настроен. В общем, непростое это решение.

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

  1. Это прям новость какая-то... даже ума не приложу как может пропасть весь контент файла. У меня там удаляются только все строки с xrayui

    sed -i '/#xrayui/d' /jffs/scripts/services-star
  2. А какая версия у вас? Попробуйте обновиться, я вчера вроде как исправил это (0.37.0). Справа внизу можно обновить скрипт через интерфейс.

  3. Вы имеете ввиду что-то такое вам нужно? Кстати, у нас есть группа в телеграмме, можете туда тоже писать и спрашивать.

  4. Имеется ввиду сам основной конфиг xray config.json? Он бэкапится перед обновлением/установкой в /opt/etc/xray/config.json.bak. Или вы не про это?

Привет!
1. спасибо большое, подправил в версии 0.37.0.
2. странно, а пробовали перевести все это дело в режим bypass в настройках? Часто помогает. в последней версии я полностью переработал это, так что вообще можно сделать теперь фильтр по устройствам (скажем, Алису вообще не пускать через иксрей). Посмотрите опцию Политика обхода/переадресации в разделе Маршрутизации.

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

Вообще, что такое файл geosite? По сути это скомпилированная и понятная x-ray библиотека, собранная из кучи мелких текстовых файлов, к оторых вы или кто угодно прописывает домены. Ну, например, вот такой файл по ютубу. Как видно, хорошие люди в нем собрали все возможные м невозможные домены, связанные с ютубом. По этому, вместо того, тобы у себя в конфиге иксрея прописывать все эти домены, вам достаточно подгрузить файл geodat.dat и прописать в конфиге geosite:youtube (по сути сказав иксрею - используй все домены из файла youtube). Это будет эквивалентно тому, если вы скопируете весь контент из этого файла и вставите в поле domains в правиле. Так работают эти геодаты.

Теперь, что вам делать, если отсуствуют данные в сообществе.

Есть два варианта:
1. самому создать такой файл - можно воспользоваться в xrayui внутренним компилятором в разделе Routing

и дальше в правиле просто указать `ext:xrayui:nnmclub` (nnmclub по сути название файла с доменами - тег)

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

Надеюсь понятно объяснил.

Это я какой-то тонкой иронии не распознал, или там автор этого подкопа параллельно воюет за другую команду? :)

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

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

Во-вторых, нужно просто создать какое-то такое правило, ну скажем мы хотим устройство с айпишником 192.168.1.66 всегда пускать в директ, миная проксю:

Не уверен, что смогу тут уже помочь. Но, вообще, мое личное мнение - прокировать по дефолту весь трафик (хоть через redirect хоть через bypass) не самая лучшая идея идея, и я бы не советовал так делать.

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

Совершенно верно, крон не переживает ребут роутера.
Ну, например, можно добавить его в /jffs/scripts/services-start.
В таком случае он будет добавляться в cron list после ребута.

я глянул быстренько документацию по xray-core. Все же они пишут, что в правилах между полями логическое И, а внутри поля - логическое ИЛИ (то есть или домен такой или домен сякой И айпи).
Короче, тогда советую создать 2 правила - в одном указать зону РУ по доменам domain:ru, (кстати, не стоит забывать и про .su и про .рф - domain:su и domain:xn--p1ai) а во вотором правиле наоборот указать целевые айпишники РФ geoip:ru.

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

Опять же, даже сейчас ты можешь, только команда будет другой

/jffs/scripts/xrayui service_event geodata communityupdate

Она скачивает файлы и перезагружает xray. Можешь сам ее проверить выполнив на роутере. Ну и соотвественно в расписание прописать через тот же cru. В этом примере раз в день в 7 вечера.

cru a xrayui_geodata "0 19 * * * /jffs/scripts/xrayui service_event geodata communityupdate"

Привет, спасибо!

Насчет первой проблемы (VoWIFI) на первый взгляд приходит пока такая идея - переключить xrayui в режим bypass (в разделе Routing `Ports Bypass/Redirect Policy`) и выдать default ports.

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

Насчет второго вопроса - попробуй в списке Outbounds сделать прокси первым в списке, а FREEDOM и остальные уже после него. Таким образом весь трафик, что не будет попадать под правила будет по дефолту уходить в проксю.
И сделать такое вот правило, которое будет фильтровать трафик ru:

Я пока не очень понял, как работают совместно поля domain и target ip (в том смысле, если правило одновременно содержит значения - значит ли это логическое И или ИЛИ). Так что стоит тоже попробовать просто разбить на два правила (в одном domain:ru, в другом geoip:ru соотвественно).

А что не получилось-то? Если опишите проблему, постараюсь помочь.

Так статья же непосредственно об этом и написана :). У вас должен быть внешний VPS с настроенным xray-core сервером, вот xray-core на роутере к нему и будет подключаться.

1
23 ...

Information

Rating
Does not participate
Location
Дания
Registered
Activity

Specialization

Фулстек разработчик, Разработчик приложений
Ведущий
C#
ООП
Git
Linux
Английский язык
Bash