🧬 ΠžΡ‚ΠΊΡƒΠ΄Π° Π² sing-box ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ²: своя рСализация ΠΈΠ»ΠΈ копия Xray

О Ρ‡Ρ‘ΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°

ΠžΡ‚Π²Π΅Ρ‚ Π½Π° вопрос Β«sing-box просто Π²ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ‡ΡƒΠΆΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ статичными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΈΠ»ΠΈ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΈΡ… сам β€” ΠΈ Π΅ΡΡ‚ΡŒ Π»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ядрами sing-box ΠΈ Xray-core?Β». Π Π°Π·Π±ΠΎΡ€ сдСлан ΠΏΠΎ исходникам sing-box-extended (Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ вСсь upstream sing-box) с прямым сравнСниСм ΠΏΡ€ΠΎΡ‚ΠΈΠ² Xray-core. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство самого Ρ„ΠΎΡ€ΠΊΠ° β€” Π² Ρ€Π°Π·Π±ΠΎΡ€Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. Если Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹ с самой ΠΈΠ΄Π΅Π΅ΠΉ Β«Π΄Π²ΡƒΡ… нСзависимых Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Β» β€” Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с Π²Π²ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ wire-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

TL;DR

  • sing-box ΠΈ Xray-core β€” Π΄Π²Π° нСзависимых ядра Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΎΠ±Ρ‰Π΅ΠΉ строчки прокси-ΠΊΠΎΠ΄Π°: прямых ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π΄Ρ€ΡƒΠ³ ΠΈΠ· Π΄Ρ€ΡƒΠ³Π° ноль Π² ΠΎΠ±Π΅ стороны; Xray-core β€” Ρ„ΠΎΡ€ΠΊ v2ray-core, sing-box написан с нуля Π½Π° экосистСмС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ sagernet/sing. Π§Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚ Β«Π΄Π²Π΅ нСзависимыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Β» β€” Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π²ΠΎΠ΄Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅.
  • Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ VLESS/Trojan/VMess/REALITY ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ wire-спСцификаций (ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π±Π°ΠΉΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅, Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΊΠΎΠ΄), Π° Π½Π΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
  • ΠžΡ‚Π²Π΅Ρ‚ Π½Π° «просто Π²ΡˆΠΈΡ‚Ρ‹ статичныС Ρ„Π°ΠΉΠ»Ρ‹?Β» β€” Π² основном Π½Π΅Ρ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ: VLESS encryption ΠΈ слой common/xray/* β€” Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ дословныС ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ· Xray-core; wire-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Hysteria2 скопирован Π±Π°ΠΉΡ‚-Π²-Π±Π°ΠΉΡ‚ ΠΈΠ· apernet/hysteria. Всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ (VLESS-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Vision, REALITY, VMess, Shadowsocks, Trojan, TUIC) β€” ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
  • Π§ΡƒΠΆΠΎΠΉ ΠΊΠΎΠ΄ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² sing-box трСмя путями: собствСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SagerNet (sing-vmess, sing-quic, …), Ρ„ΠΎΡ€ΠΊΠΈ сторонних ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· go.mod (~13 ΡˆΡ‚ΡƒΠΊ: quic-go, wireguard-go, gvisor, uTLS ΠΈ Π΄Ρ€.) ΠΈ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Π΅ in-tree ΠΏΠΎΡ€Ρ‚Ρ‹ (слой common/xray, mKCP, kTLS ΠΈΠ· Go stdlib).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΡΡ‚ΡŒΡŽ нСзависимыми ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°ΠΌΠΈ ΠΏΠΎ исходникам (июль 2026): Π²Π΅Ρ‚ΠΊΠ° extended Ρ„ΠΎΡ€ΠΊΠ° sing-box-extended, Xray-core, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sing-vmess, sing-quic, sing-shadowsocks2, sing-shadowtls, ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ apernet/hysteria β€” Π²ΠΊΠ»ΡŽΡ‡Π°Ρ прямыС diff-сравнСния Ρ„Π°ΠΉΠ»ΠΎΠ². Π§Π°ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² относится ΠΊ Ρ„ΠΎΡ€ΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, uTLS ΠΎΡ‚ MetaCubeX) ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ upstream sing-box; это ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π² тСкстС.

Π”Π²Π° ядра β€” Π΄Π²Π΅ родословныС

РаспространённоС прСдставлСниС Β«sing-box ΠΈ Xray β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅Β» Π½Π΅Π²Π΅Ρ€Π½ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π°. Xray-core β€” Ρ„ΠΎΡ€ΠΊ v2ray-core ΠΈ нСсёт Π΅Π³ΠΎ наслСдиС: ΠΊΠΎΠ½Ρ„ΠΈΠ³ protobuf-first (78 .proto-Ρ„Π°ΠΉΠ»ΠΎΠ²; JSON ΠΈΠ· ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° конвСртируСтся Π² protobuf-сообщСния слоСм infra/conf/), Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ рССстр ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Π½Π° reflection (common.RegisterConfig ΠΈΠ· init()), собствСнный слой Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² common/buf с MultiBuffer.

sing-box написан с нуля Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ nekohasekai (SagerNet) ΠΏΠΎΠ²Π΅Ρ€Ρ… собствСнной Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sagernet/sing: ΠΊΠΎΠ½Ρ„ΠΈΠ³ β€” чистый JSON, маппящийся Π² Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Go-структуры Π±Π΅Π· protobuf; ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² явных generic-рССстрах (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ β€” Π² Ρ€Π°Π·Π±ΠΎΡ€Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹); Π±ΡƒΡ„Π΅Ρ€Ρ‹ β€” ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sing. Grep ΠΏΠΎ всСм исходникам Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° github.com/xtls/* ΠΈΠ»ΠΈ github.com/v2fly/* Π² sing-box β€” ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° sagernet/sing-box Π² Xray.

ΠŸΡ€ΠΎΡ‰Π΅ говоря: это Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π΄ΠΎΠΌΠ°, построСнных ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅Ρ€Π½Ρ‹Π΅ Π·Π°ΠΌΠΊΠΈ β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹. Π”Π°ΠΆΠ΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ зависимости Ρ€Π°Π·Π²Π΅Π΄Π΅Π½Ρ‹ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΊΠ°ΠΌ: uTLS Ρƒ sing-box-extended β€” Ρ„ΠΎΡ€ΠΊ MetaCubeX (metacubex/utls; Π² upstream sing-box β€” Ρ„ΠΎΡ€ΠΊ sagernet/utls), Ρƒ Xray β€” ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ refraction-networking/utls; quic-go Ρƒ sing-box β€” sagernet/quic-go, Ρƒ Xray β€” apernet/quic-go (ΠΎΠ±Π° β€” нСзависимыС Ρ„ΠΎΡ€ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ quic-go/quic-go).

Как достигаСтся ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: спСцификация, Π° Π½Π΅ копипаста

Основной ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ β€” нСзависимая рСализация Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SagerNet Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ‚Π΅ ΠΆΠ΅ константы, порядок ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Β«Ρ€ΠΎΠ΄Π½Ρ‹Π΅Β» ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ собствСнным ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ свои абстракции. README Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ прямо Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ†Π΅Π»ΡŒ: Β«100% compatible with v2ray-coreΒ» (sing-vmess), Β«Go implementation of shadow-tlsΒ» (sing-shadowtls) β€” ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ, Π½Π΅ заимствованиС исходников.

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π“Π΄Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅
VLESS (wire-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ)Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° sing-vmess/vlessНСзависимая рСимплСмСнтация; Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ совпадаСт с Xray (UUID, addons, flow), ΠΊΠΎΠ΄ β€” Π½Π΅Ρ‚
XTLS-Visionsing-vmess/vless/vision.goРСимплСмСнтация с дословным пСрСносом констант Xray (chunk 8192, ΠΏΠΎΡ€ΠΎΠ³ΠΈ ΠΏΠ°Π΄Π΄ΠΈΠ½Π³Π° 900/500/256, 5-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ) β€” ΠΈΠ½Π°Ρ‡Π΅ Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠΉ совмСстимости Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹
REALITYΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π² Π΄Π΅Ρ€Π΅Π²Π΅ sing-box (common/tls/reality_client.go), сСрвСр Π² Ρ„ΠΎΡ€ΠΊΠ΅ uTLSНСзависимая рСализация; Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° xtls/reality, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Xray, Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° вовсС
VMessΠ±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° sing-vmessНСзависимая рСимплСмСнтация SagerNet
ShadowsocksΠ±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sing-shadowsocks/sing-shadowsocks2НСзависимая рСимплСмСнтация (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Shadowsocks-2022)
TrojanΠ² Π΄Π΅Ρ€Π΅Π²Π΅, transport/trojan/НСзависимая рСимплСмСнтация (Ρ‚Π΅ ΠΆΠ΅ константы Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°: SHA224-hex пароля, CRLF, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ 1/3)
Hysteria v1, TUICΠ±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° sing-quicНСзависимыС Ρ€Π΅ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ SagerNet
Hysteria2Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° sing-quic/hysteria2Π“ΠΈΠ±Ρ€ΠΈΠ΄: Ρ„Π°ΠΉΠ»Ρ‹ wire-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° скопированы ΠΈΠ· apernet/hysteria Π±Π°ΠΉΡ‚-Π²-Π±Π°ΠΉΡ‚, транспорт/obfs/congestion пСрСписаны (см. Π½ΠΈΠΆΠ΅)
SOCKS, HTTPΠ±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° singБвоя рСализация ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… RFC-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ²
NaiveProxyprotocol/naive/Π‘Π΅Ρ€Π²Π΅Ρ€ β€” ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ HTTP/2+HTTP/3 Π½Π° Go; ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„ΠΎΡ€ΠΊΠ΅) β€” ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° Π½Π°Π΄ Chromium Cronet

Π“Π΄Π΅ ΠΊΠΎΠ΄ всё-Ρ‚Π°ΠΊΠΈ скопирован

ΠŸΡ€ΠΎΡ…ΠΎΠ΄Ρ‹ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ нашли Ρ‚Ρ€ΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… мСста, Π³Π΄Π΅ ΠΎΡ‚Π²Π΅Ρ‚ Β«Π²ΡˆΠΈΡ‚ΠΎ статичными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈΒ» β€” ΠΏΡ€Π°Π²Π΄Π°:

  1. VLESS encryption (protocol/vless/encryption/ β€” пост-ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²ΠΎΠ΅ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ ML-KEM + X25519). ΠŸΡ€ΡΠΌΠΎΠΉ diff ΠΏΡ€ΠΎΡ‚ΠΈΠ² xray-core/proxy/vless/encryption/ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ построчноС совпадСниС: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ import-ΠΏΡƒΡ‚ΠΈ, ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ ошибок ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ; Π»ΠΎΠ³ΠΈΠΊΠ° Ρ…Π΅Π½Π΄ΡˆΠ΅ΠΉΠΊΠ°, 0-RTT, ΠΏΠ°Π΄Π΄ΠΈΠ½Π³Π° ΠΈ XorConn совпадаСт дословно. Π­Ρ‚ΠΎ чСстный Π²Π΅Π½Π΄ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π° Xray.
  2. common/xray/* β€” Β«ΠΏΠΎΠ΄Π»ΠΎΠΆΠΊΠ°Β» для ΠΏΡƒΠ½ΠΊΡ‚Π° 1: дословно скопированныС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Xray-core (buf, net, signal, crypto, pipe ΠΈ Π΄Ρ€.) с ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ namespace β€” Π² Ρ„Π°ΠΉΠ»Π°Ρ… Π΄Π°ΠΆΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ doc-ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ xray:api:beta. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚ΡΠ½ΡƒΡ‚ΡŒ вСсь Xray-core ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ.
  3. Wire-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Hysteria2: Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° (internal/protocol/http.go, padding.go β€” Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Hysteria-*, ΠΏΡƒΡ‚ΡŒ /auth, статус-ΠΊΠΎΠ΄ 233) Π² sing-quic ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ apernet/hysteria Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ пустого diff. ΠŸΡ€ΠΈ этом транспорт, сСссии, obfuscation Salamander ΠΈ congestion control Brutal пСрСписаны ΠΏΠΎΠ΄ стСк sing (с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ алгоритмичСскими константами β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, minAckRate=0.8).

К этой ΠΆΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Β«ΠΏΠΎΡ€Ρ‚ Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π΄Π΅Ρ€Π΅Π²ΠΎΒ» относятся транспорты: mKCP (transport/v2raykcp/ β€” ΠΏΠΎΡ€Ρ‚ ΠΈΠ· v2ray-core, Π² ΠΊΠΎΠ΄Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ ссылки Β«mirrors v2ray-core’s kcpΒ»), XHTTP (transport/v2rayxhttp/), simple-obfs ΠΈ SIP003 (ΠΈΠ· shadowsocks-экосистСмы), kTLS (ΠΏΠΎΡ€Ρ‚ crypto/tls ΠΈΠ· Go stdlib, ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Ρ‹ The Go Authors), JA3-парсСр (Open Systems AG).

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ transport/v2ray* β€” это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сСмСйства, Π° Π½Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠΏΠΈΠΈ

WebSocket/gRPC/HTTPUpgrade-транспорты Π² sing-box Π»Π΅ΠΆΠ°Ρ‚ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… с прСфиксом v2ray* (v2raywebsocket, v2raygrpc…), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Β«V2Ray transportΒ» β€” ΡƒΡΡ‚ΠΎΡΠ²ΡˆΠ΅Π΅ΡΡ имя сСмСйства транспортов, ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. Π‘Π°ΠΌΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΌ Π² основном собствСнныС, Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… sing (с Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ mKCP ΠΈ заимствованных Ρ„Π°ΠΉΠ»ΠΎΠ² gRPC-credentials).

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°: Ρ‚Ρ€ΠΈ ΠΏΡƒΡ‚ΠΈ Ρ‡ΡƒΠΆΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

  1. БобствСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SagerNet (Ρ‚Π° ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Ρ‡Ρ‚ΠΎ ΠΈ ядро): sing, sing-vmess, sing-quic, sing-shadowsocks(2), sing-shadowtls, sing-mux, sing-tun. Π­Ρ‚ΠΎ Π½Π΅ Β«Ρ‡ΡƒΠΆΠΎΠΉΒ» ΠΊΠΎΠ΄ β€” это ядро, разнСсённоС ΠΏΠΎ модулям.
  2. Π€ΠΎΡ€ΠΊΠΈ сторонних ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· go.mod (~13 Π² sing-box-extended): quic-go, wireguard-go (ΠΎΡ‚ zx2c4), gvisor (Google), tailscale, uTLS, smux, bbolt ΠΈ Π΄Ρ€. β€” плюс Π² Ρ„ΠΎΡ€ΠΊΠ΅ shtorm-7 ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½ΠΈΡ… Π΅Ρ‰Ρ‘ 9 собствСнных Ρ€Π°Π·Π²ΠΈΠ»ΠΎΠΊ (см. Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ).
  3. In-tree ΠΏΠΎΡ€Ρ‚Ρ‹ β€” Ρ‚ΠΎ самоС Β«Π²ΡˆΠΈΡ‚ΠΎ статичными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈΒ», Π½ΠΎ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎ: слой common/xray + VLESS encryption (ΠΈΠ· Xray), mKCP (ΠΈΠ· v2ray), wire-константы Hysteria2 (ΠΈΠ· apernet), kTLS ΠΈ container/list (ΠΈΠ· Go), JA3.

Π’Ρ‹Π²ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ Ρ„Ρ€Π°Π·ΠΎΠΉ: sing-box Π½Π΅ Β«ΠΏΠΈΡˆΠ΅Ρ‚ всС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ с нуля» ΠΈ Π½Π΅ Β«Π²ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρ‡ΡƒΠΆΠΎΠ΅ ядро» β€” ΠΎΠ½ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ‡ΡƒΠΆΠΈΠ΅ wire-спСцификации ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² 80–90% случаСв (ΠΎΡ†Π΅Π½ΠΊΠ° ΠΏΠΎ числу ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Ρ‹ΡˆΠ΅), Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ дословно лишь Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» слишком свСТий ΠΈΠ»ΠΈ слоТный, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ (пост-ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹ΠΉ VLESS encryption), Π»ΠΈΠ±ΠΎ Π³Π΄Π΅ Π½ΡƒΠΆΠ½Π° гарантированная байтовая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (Hysteria2). И Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ядрами sing-box ΠΈ Xray-core Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ β€” ΠΎΠ±Ρ‰ΠΈΠΉ Ρƒ Π½ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π΅.

πŸ“š Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


πŸ€– Π­Ρ‚ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… ИИ

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ИИ Π½Π° Π½Π°ΡˆΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…. Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ скачиваниС всСго рСпозитория ΠΎΠ΄Π½ΠΈΠΌ zip-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ доступны Π² Forgejo: исходник этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Β· вСсь Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.