Скрипт для Sing-Box + Nginx/HAProxy — мнения?

Нашёл интересный проект на гитхабе, и хотелось бы услышать мнение знающих людей о нём и об аналогичных методах.

Этот скрипт позволяет быстро настроить Sing-Box, спрятанный за Nginx/HAProxy с сайтом-заглушкой, ничего лишнего и работает довольно стабильно. Но насколько там всё грамотно сделано с точки зрения маскировки прокси? Сам не особо разбираюсь, поэтому прошу совета.

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

Но:

  1. Ровно того же можно добиться если настроить XRay с XTLS-Reality в режиме steal-from-yourself, поставив за ним тот же самый Nginx.
  2. Поскольку TLS-подключение терминируется на веб-сервере, а не на прокси, то нельзя использовать XTLS-Vision. Насколько это важно - пока не ясно. РКН пока что судя по всему не умеет детектировать TLS-inside-TLS. Но примеры алгоритмов такого детектирования уже есть на гитхабе, и по странному совпадению - именно для Trojan протокола, который предлагает использовать автор.
  3. С вебсокетами проблема другая - вебсокеты могут работать только с HTTP/1.1, с HTTP/2 уж нет. Соответственно при установлении соединения (чтобы веб-сервер понял, что от него надо) в ALPN будет “http/1.1” вместо “h2”, что в наше время выглядит немного подозрительно.
  4. Я бы дважды подумал прежде чем делать ставку на sing-box. Он написан очень хорошо (код там гораздо понятнее чем в xray и лучше организован), но автор… мягко говоря, странный. Например, он испытывает какую-то необъяснимую ненависть к XHTTP и просто без комментариев закрывает темы где его просят добавить поддержку XHTTP. И в целом уже несколько раз случалось, что к нему приходили с предложениями как улучшить маскировку sing-box сервера (типа защиты от active probing), на что он отвечал “в данный момент GFW такое детектирование не делает”, а когда ему отвечали “сейчас не делает, но нет никаких гарантий что в любой момент не начнет делать” и “китайский GFW - не единственный GFW, и в других странах такое уже делают” он просто закрывал или удалял тему.

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

Спасибо за подробный ответ!

Насчет TLS-inside-TLS: там написано, что для решения этой проблемы используется мультиплексирование. Только как это может работать?

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

В этом плане, при невозможности использовать XTLS-Vision, более полезным был бы XHTTP с разделением потоков туда-обратно (в идеале на разные адреса и домены), но sing-box его не умеет по каким-то непонятным личным соображениям разработчика.

Но как я уже сказал, наш родной (чтоб он сгорел в аду) РКН до такого детектирования пока еще не дорос и видимо не скоро дорастет.

Смело используйте этот проект. Как показывает практика, в РКН не особо задумываются о сопутствующем уроне, предпочитая тупые блокировки TLS/IP/etc вместо продвинутых механизмов из всяких научных статей.

Т.е. можно все настроить идеально и при этом случайным образом попасть под блокировку, с дальнейшими гаданиями на кофейной гуще вида “а как они нашли?”. Не стоит сильно погружаться в “premature optimizations”, аля оценивать риски TLS-in-TLS и прочее теоретизированное.

Насчет xray-core vs sing-box. Рекомендую sing-box, автор работает за троих, регулярные обновления, отличное качество кода и полная кросс-платформенность. Одна и та же конфигурация без модификаций работает на ios/android/window/linux.

Да, имеется какая-то drama с майнтейнерами xray-core, обе стороны отказываются добавлять фичи и поддерживать совместимость (с интеграцией anytls и sing-box-tun в xray ситуация как с xhttp в sing-box). Но честно, по части удобства использования sing-box ушел далеко вперед. Плюсы сильно перевешивают отсутствие xhttp.

Меня конечно несколько смущает XHTTP, ведь его может забанить не РКН, а сами CDN, им же тоже не выгодно, что люди гоняют кучу трафика бесплатно. Но надо будет и его попробовать ради интереса.

Спасибо за совет, у sing-box конечно есть и заметный минус - постоянно меняют конфиги, но это не проблема, если всё за меня автоматизировано

XHTTP можно использовать и без CDN.

А если с CDN, то CDN можно использовать платные - им пофиг, что вы там гоняете, до тех пор пока платите за трафик :slight_smile: