TGViewer
DEV: Рубиновые тона DEV: Рубиновые тона @dev_in_ruby_colors · 3.28K subscribers
Post #1375 1.78K
Сегодня нашёл интересную штуку (с трудом, так как наши друзья, разрабатывающие xray-core, очень любят писать весь changelog на китайском).

Оказывается буквально несколько дней назад они добавили поддержку Finalmask - это дополнительный слой маскировки трафика поверх обычных транспортов вроде XHTTP/REALITY/TLS.

Там есть несколько вариантов работы. Самый простой это fragment - "мягкая" фрагментация начала соединения. Он режет стартовые пакеты, например TLS ClientHello, на несколько частей с небольшими задержками. За счёт этого DPI сложнее распознать протокол по первому крупному и "красивому" пакету. Плюс fragment в том, что он почти не ломает совместимость и обычно даёт минимум побочек. Это, конечно, не волшебная таблетка, но в целом штука неплохая.

Например, можно при желании использовать это на участке между двумя вашими серверами. Для этого на промежуточном сервере просто пишется вот такое в раздел streamSettings (для outbound)

        "finalmask": {
"tcp": [
{
"type": "fragment",
"settings": {
"packets": "tlshello",
"length": "100-200",
"delay": "10-20",
"maxSplit": "3-6"
}
}
]
}


На сервере-получателе ничего менять не надо. Учтите, что xray нужно обновить по крайней мере до версии 26.3.27.

Есть и более мощная штука, называется sudoku. Она не просто дробит поток, а меняет его внешний вид по согласованному правилу/паролю между клиентом и сервером. Это сложнее, поэтому обе стороны должны поддерживать sudoku и иметь одинаковые настройки. Плюс sudoku в том, что трафик становится менее похож на стандартный Xray/REALITY/XHTTP и хуже ловится простыми сигнатурами.

Увы, похоже на участке между двумя серверами это особо работать не будет, если на сервере-получателе (сервер Б) стоит caddy и работает как reverse proxy. Зато это можно настроить между клиентом и первым сервером вот так, тоже в streamSettings, но для inbound:

  "finalmask": {
"tcp": [
{
"type": "fragment",
"settings": {
"packets": "tlshello",
"length": "100-200",
"delay": "10-20",
"maxSplit": "3-6"
}
},
{
"type": "sudoku",
"settings": {
"password": "длинный пароль",
"paddingMin": 8,
"paddingMax": 64
}
}
]
}


Но на клиенте обязательно тоже нужно настроить finalmask. Так, v2rayn это уже умеет, там просто жмётся в расширенных настройках finalmask и вставляется json вот такой

{
"tcp": [
{
"type": "sudoku",
"settings": {
"password": "тот же пароль",
"paddingMin": 8,
"paddingMax": 64
}
},
{
"type": "fragment",
"settings": {
"packets": "tlshello",
"length": "100-200",
"delay": "10-20",
"maxSplit": "3-6"
}
}
]
}


Далее там можно сформировать share link (она довольно большая тк кодируется json). Другие клиенты это умеют не все. Streisand - нет, happ - для винды вроде да, для мака не похоже, onexray - да, v2rayng - вроде должен, но там судя по всему только в пре-релизной версии. Но думаю в ближайшие месяцы это добавят много где
  • ❤ 17
  • 👍 8
  • 🔥 4
More from @dev_in_ruby_colors
  1. Sep 22, 2026А тем временем сказ о ведьмаке, потерявшем память, уже доступен в виде аудиокниги. Целых 1…
  2. Sep 20, 2026В этом уроке по абстрактной алгебре продолжаем говорить о кольцах: в частности о subrings…
  3. Sep 17, 2026Сделал обзор актуальных библиотек JS для сбора данных, 10 штук бодрых решений на все случа…
  4. Sep 13, 2026В общем, мне тут особо было нечего делать и я подумал создать небольшой скрипт для решения…
  5. Sep 12, 2026Oh shit here we go again https://x.com/thlarsen/status/2098544270361964576
  6. Sep 7, 2026Гугл проказничает опять. На сей раз они начали менять то, как выглядят ссылки в поисковой…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →