Shadowsocks — sing-box
sing-box کل خانوادهٔ Shadowsocks را پیادهسازی میکند: AEAD کلاسیک، Shadowsocks-2022 با چندکاربره EIH، پروتکلهای افزونه برای v2ray-plugin و obfs، و شکل بازپخش سمت سرور که منحصر به SS-2022 است.
ورودی
ورودی type: "shadowsocks":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
network | NetworkList | (tcp+udp) | tcp | udp | | محدود کردن به فقط TCP یا فقط UDP. خالی هر دو را فعال میکند. |
method | string | (required) | none | aes-128-gcm | aes-256-gcm | chacha20-ietf-poly1305 | xchacha20-ietf-poly1305 | 2022-blake3-aes-128-gcm | 2022-blake3-aes-256-gcm | 2022-blake3-chacha20-poly1305 | مجموعهرمز استفادهشده توسط ورودی. مجموعهرمزهای SS-2022 `users[]` و `destinations[]` را فعال میکنند. |
password | string | (required for single-user) | <string> | <base64 key> | گذرواژهٔ تککاربره یا کلید EIH سرور SS-2022. |
users | []ShadowsocksUser | [] | [ShadowsocksUser] | فهرست هر کاربر — فقط SS-2022. هر کاربر کلید EIH اختصاصی خود را دارد. |
destinations | []ShadowsocksDestination | [] | [ShadowsocksDestination] | اهداف بازپخش سمت سرور. سرورهای SS-2022 میتوانند از این برای پخش یک ورودی واحد به آدرسهای بالادست متعدد استفاده کنند، که بر اساس EIH انتخاب میشوند. |
multiplex | *InboundMultiplexOptions | (disabled) | InboundMultiplexOptions | چندسوسازی (mux) سمت سرور. |
managed | bool | false | true | false | فعالسازی پروتکل حالت مدیریتشده که به کلاینتهای سازگار با ssmgmt اجازه میدهد در زمان اجرا کاربران را پیکربندی کنند. |
منبع: option/shadowsocks.go:3-12 · ثابتشده در v1.13.11 (553cfa1)
این ساختار ListenOptions (آدرس شنود، پورت، sniff، …) را درون خود جای میدهد.
users[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (unset) | <string> | نام نمایشی استفادهشده در آمار و لاگها. |
password | string | (required) | <base64 key> | کلید EIH کاربر. طول باید با مجموعهرمز تطبیق داشته باشد (۱۶ یا ۳۲ بایت). |
منبع: option/shadowsocks.go:14-17 · ثابتشده در v1.13.11 (553cfa1)
destinations[]
هر مقصد ServerOptions (server، server_port) را بهعلاوهٔ name/password اختصاصی خود درون میگیرد.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (unset) | <string> | نام نمایشی برای این مقصد. |
password | string | (required) | <base64 key> | کلید EIH مقصد. |
منبع: option/shadowsocks.go:19-23 · ثابتشده در v1.13.11 (553cfa1)
خروجی
خروجی type: "shadowsocks":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
method | string | (required) | <cipher> | مجموعهرمز سرور. |
password | string | (required) | <string> | <base64 key> | گذرواژهٔ سرور / کلید SS-2022. |
plugin | string | (unset) | obfs-local | v2ray-plugin | shadow-tls | kcptun | افزونهٔ خارجی Shadowsocks برای بستهبندی جریان. برای `obfs-local` و `v2ray-plugin` در sing-box کامپایل شده است؛ دیگر افزونهها به یک باینری خارجی روی PATH نیاز دارند. |
plugin_opts | string | (unset) | <plugin-specific string> | گزینههای جداشده با نقطهویرگول که به افزونه بازارسال میشوند (`mode=tls;host=example.com;...`). |
network | NetworkList | (tcp+udp) | tcp | udp | | محدود کردن به فقط TCP یا فقط UDP. |
udp_over_tcp | *UDPOverTCPOptions | (disabled) | UDPOverTCPOptions | بستههای UDP را داخل جریان TCP بستهبندی میکند. شکل شیء: `{enabled, version}`. |
multiplex | *OutboundMultiplexOptions | (disabled) | OutboundMultiplexOptions | چندسوسازی (mux) سمت کلاینت (باید با سرور تطبیق داشته باشد). |
منبع: option/shadowsocks.go:25-35 · ثابتشده در v1.13.11 (553cfa1)
DialerOptions و ServerOptions را درون خود جای میدهد.
مثالها
ورودی کلاسیک AEAD:
{
"inbounds": [
{
"type": "shadowsocks",
"tag": "ss-in",
"listen": "::",
"listen_port": 8388,
"method": "aes-256-gcm",
"password": "<password>"
}
]
}ورودی SS-2022 با دو کاربر:
{
"inbounds": [
{
"type": "shadowsocks",
"tag": "ss22-in",
"listen": "::",
"listen_port": 8388,
"method": "2022-blake3-aes-128-gcm",
"password": "<base64 16-byte server key>",
"users": [
{ "name": "alice", "password": "<base64 16-byte alice key>" },
{ "name": "bob", "password": "<base64 16-byte bob key>" }
]
}
]
}خروجی با v2ray-plugin:
{
"outbounds": [
{
"type": "shadowsocks",
"tag": "ss-out",
"server": "example.com",
"server_port": 8388,
"method": "chacha20-ietf-poly1305",
"password": "<password>",
"plugin": "v2ray-plugin",
"plugin_opts": "mode=websocket;tls;host=example.com;path=/ss"
}
]
}خروجی با UDP-over-TCP v2:
{
"outbounds": [
{
"type": "shadowsocks",
"server": "example.com",
"server_port": 8388,
"method": "2022-blake3-aes-256-gcm",
"password": "<base64 32-byte key>",
"udp_over_tcp": { "enabled": true, "version": 2 }
}
]
}نکات
- sing-box هم نامهای مجموعهرمز IETF (
chacha20-ietf-poly1305) و هم نامهای تاریخی غیر-IETF را میپذیرد — اما داخل لایهٔ پروتکل به یک املای واحد در هر مجموعهرمز محدود میشود. destinations[]ویژهٔ sing-box است. یک سرور SS-2022 با مقاصد به شکل یک بازپخش با تفکیک EIH عمل میکند: هر مقصد کلید EIH اختصاصی خود را دارد و یک اتصال ورودی که در برابر یکی از آنها احراز شود بهserver/server_portآن مقصد بازارسال میشود نه اینکه محلی مدیریت شود.plugin: "v2ray-plugin"وplugin: "obfs-local"در sing-box کامپایل شدهاند (نیازی به باینری خارجی نیست). دیگر نامهای افزونه یک فایل اجرایی خارجی به همان نام را فراخوانی میکنند؛ پروتکل افزونه با مشخصات افزونهٔ shadowsocks-libev تطبیق دارد.udp_over_tcpیک شیء است ({enabled, version}) درحالیکه Xray دو فیلد (uot،uotVersion) استفاده میکند و mihomo نیز دو فیلد با نامهای متفاوت دیگری استفاده میکند.
نکات بینهستهای
- Xray از
clients[](نهusers[]) استفاده میکند و UoT را بهعنوان دو فیلد جداگانه (uot،uotVersion) در خروجی ارائه میدهد. شکل بازپخشdestinations[]ندارد. به Shadowsocks — Xray-core مراجعه کنید. - mihomo از
cipher(نهmethod) استفاده میکند وplugin-optsرا بهعنوان یک نگاشت YAML نوعدار کلیدشده با نام افزونه میپذیرد. به Shadowsocks — mihomo مراجعه کنید.
منبع: option/shadowsocks.go:3-35 · v1.13.11 (553cfa1)
