Trojan — sing-box
sing-box هر دو سر Trojan را پیادهسازی میکند. هیچ فیلد flow وجود ندارد — پیادهسازی از مشخصات اصلی Trojan پیروی میکند نه از فورک XTLS. معنای fallback غنیتر از Xray است: یک هدف fallback واحد بهعلاوهٔ یک نگاشت fallback_for_alpn کلیدشده با ALPN.
ورودی
ورودی type: "trojan":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | []TrojanUser | [] | [TrojanUser] | فهرست کاربران پذیرفتهشده. |
fallback | *ServerOptions | (none) | ServerOptions | هدف بازگشت — وقتی یک درخواست بهعنوان Trojan احراز نشود، جریان خام به اینجا بازارسال میشود. حاوی `server` + `server_port` است. |
fallback_for_alpn | map[string]*ServerOptions | {} | {<alpn>: ServerOptions} | نگاشت بازگشت برای هر ALPN. وقتی ALPN مذاکرهشده با یک کلید تطبیق داشته باشد، بر `fallback` تقدم دارد. |
multiplex | *InboundMultiplexOptions | (disabled) | InboundMultiplexOptions | چندسوسازی (mux) سمت سرور. |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | ترابرد اختیاری به سبک V2Ray (ws، http، grpc، quic). |
منبع: option/trojan.go:3-11 · ثابتشده در v1.13.11 (553cfa1)
این ساختار ListenOptions (آدرس شنود، پورت، sniff، …) و InboundTLSOptionsContainer (مواد TLS) را درون خود جای میدهد.
users[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (unset) | <string> | نام نمایشی استفادهشده در آمار و لاگها. |
password | string | (required) | <string> | گذرواژهٔ Trojan. |
منبع: option/trojan.go:13-16 · ثابتشده در v1.13.11 (553cfa1)
خروجی
خروجی type: "trojan":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
password | string | (required) | <string> | گذرواژهای که سرور بالادست انتظار دارد. |
network | NetworkList | (tcp+udp) | tcp | udp | | محدود کردن به فقط TCP یا فقط UDP. خالی هر دو را فعال میکند. |
multiplex | *OutboundMultiplexOptions | (disabled) | OutboundMultiplexOptions | چندسوسازی (mux) سمت کلاینت (باید با سرور تطبیق داشته باشد). |
transport | *V2RayTransportOptions | (plain TCP) | V2RayTransportOptions | بستهبندی ترابرد به سبک V2Ray. |
منبع: option/trojan.go:18-26 · ثابتشده در v1.13.11 (553cfa1)
DialerOptions، ServerOptions (server، server_port) و OutboundTLSOptionsContainer (tls) را درون خود جای میدهد.
مثالها
ورودی با یک کاربر و بازگشت HTTPS:
{
"inbounds": [
{
"type": "trojan",
"tag": "trojan-in",
"listen": "::",
"listen_port": 443,
"users": [
{ "name": "alice", "password": "<password>" }
],
"tls": {
"enabled": true,
"server_name": "example.com",
"certificate_path": "/etc/ssl/cert.pem",
"key_path": "/etc/ssl/key.pem"
},
"fallback": { "server": "127.0.0.1", "server_port": 8080 },
"fallback_for_alpn": {
"h2": { "server": "127.0.0.1", "server_port": 8443 },
"http/1.1": { "server": "127.0.0.1", "server_port": 8080 }
}
}
]
}خروجی:
{
"outbounds": [
{
"type": "trojan",
"tag": "trojan-out",
"server": "example.com",
"server_port": 443,
"password": "<password>",
"tls": {
"enabled": true,
"server_name": "example.com"
},
"transport": { "type": "ws", "path": "/tj" }
}
]
}نکات
- طراحی fallback از Xray متفاوت است: Xray فهرستی از fallbackها را که بر اساس چندتاییهای
(sni, alpn, path)تطبیق مییابد میپذیرد، درحالیکه sing-box یکfallbackپیشفرض واحد بهعلاوهٔ یک نگاشت کلیدشده با ALPN میپذیرد. تطبیق در سطح مسیر ارائه نشده است — برای آن، TLS را در جلوی sing-box خاتمه دهید. fallback_for_alpnابتدا بررسی میشود؛ اگر ALPN مذاکرهشده با یک کلید تطبیق داشته باشد، آن هدف استفاده میشود؛ در غیر این صورتfallbackپیشفرض اعمال میشود.- هیچ گزینهٔ
flowندارد. کلاینتهایی که XTLS Vision را برای Trojan ارائه میدهند (Xray-core باflowغیرخالی) نمیتوانند به یک سرور Trojan sing-box متصل شوند.
نکات بینهستهای
- Xray از
clients[]و یکfallbacks[]به شکل فهرست استفاده میکند. به Trojan — Xray-core مراجعه کنید. - mihomo از یک شکل تکشیء proxy با
passwordدر خروجی و یکpasswordهر کاربر در ورودی استفاده میکند؛ همچنینss-optsاز trojan-go را برای رمزنگاری زنجیرهای Shadowsocks ارائه میدهد. به Trojan — mihomo مراجعه کنید.
منبع: option/trojan.go:3-26 · v1.13.11 (553cfa1)
