Trojan — Xray-core
Trojan یک تونل بهشکل TLS با دستدهی گذرواژه است. در Xray-core پیادهسازی با مشخصات اصلی Trojan تطبیق دارد و پسوند XTLS flow را پشتیبانی نمیکند — فیلد flow همچنان برای سازگاری تجزیه میشود اما هر مقدار غیرخالی خطای قطعی تولید میکند (infra/conf/trojan.go:73, 128).
خروجی
settings برای یک خروجی با "protocol": "trojan":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (unset) | <host> | شکل سادهشده — نام میزبان یا IP سرور. |
port | uint16 | (required with address) | <port> | پورت سرور. |
level | byte | 0 | <byte> | سطح کاربر (شکل سادهشده). |
email | string | (unset) | <string> | شناسهٔ کاربر که در آمار گزارش میشود. |
password | string | (required with address) | <string> | گذرواژهٔ مشترک برای دستدهی Trojan. |
flow | string | (must be empty) | — | ویژگی حذفشده. تعیین هر مقدار غیرخالی موجب رد پیکربندی در زمان راهاندازی میشود. |
servers | []*TrojanServerTarget | (use simplified shape) | [TrojanServerTarget] | شکل کامل. باید دقیقاً یک سرور داشته باشد؛ چندین سرور به چند خروجی بهعلاوهٔ یک متعادلکننده نیاز دارد. |
منبع: infra/conf/trojan.go:30-38 · ثابتشده در v1.260327.0 (d2758a0)
servers[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | *Address | (required) | <host> | نام میزبان یا IP سرور. |
port | uint16 | (required) | <port> | پورت سرور. |
level | byte | 0 | <byte> | سطح کاربر. |
email | string | (unset) | <string> | شناسهٔ کاربر. |
password | string | (required) | <string> | گذرواژهٔ Trojan. |
flow | string | (must be empty) | — | حذف شده؛ مقدار غیرخالی رد میشود. |
منبع: infra/conf/trojan.go:20-27 · ثابتشده در v1.260327.0 (d2758a0)
سادهشده در برابر servers
خروجی یا شکل سادهشدهٔ سطح بالا (address, port, password, ...) را میپذیرد یا شکل کامل servers با دقیقاً یک مدخل را. برای پیکربندی چندسرور از چندین خروجی Trojan بهعلاوهٔ یک متعادلکنندهٔ بار مسیریابی استفاده کنید.
ورودی
settings برای یک ورودی با "protocol": "trojan":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
clients | []*TrojanUserConfig | (required) | [TrojanUserConfig] | فهرست کاربران پذیرفتهشده. |
fallbacks | []*TrojanInboundFallback | [] | [TrojanInboundFallback] | مقاصد جایگزین که وقتی ترافیک ورودی پیچیده در TLS شبیه Trojan به نظر نرسد به آنها رجوع میشود. |
منبع: infra/conf/trojan.go:113-116 · ثابتشده در v1.260327.0 (d2758a0)
clients[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
password | string | (required) | <string> | گذرواژهٔ Trojan. |
level | byte | 0 | <byte> | سطح policy برای این کاربر. |
email | string | (unset) | <string> | برچسب در خروجی آمار/لاگ. |
flow | string | (must be empty) | — | حذف شده؛ مقدار غیرخالی رد میشود. |
منبع: infra/conf/trojan.go:105-110 · ثابتشده در v1.260327.0 (d2758a0)
fallbacks[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (unset) | <TLS server name> | تطبیق با SNI ورودی TLS؛ مقدار خالی با هر چیزی تطبیق میکند. |
alpn | string | (unset) | h2 | http/1.1 | | تطبیق با ALPN مذاکرهشده؛ مقدار خالی با هر چیزی تطبیق میکند. |
path | string | (unset) | /<path> | پیشوند مسیر HTTP. اگر غیرخالی باشد باید با `/` آغاز شود. |
type | string | (auto) | tcp | unix | serve | پروتکل پشتیبان. در صورت حذف از روی `dest` استنباط میشود. |
dest | json.RawMessage | (required) | <host:port> | <port> | <unix path> | مقصد ارسال. عدد صحیح خالی = پورت روی localhost. |
xver | uint64 | 0 | 0 | 1 | 2 | نسخهٔ PROXY-protocol. 0 غیرفعال میکند. |
منبع: infra/conf/trojan.go:95-102 · ثابتشده در v1.260327.0 (d2758a0)
زنجیرهٔ fallback ترایجن مانند VLESS است: به ترتیب روی اولین بایت جریان پیچیده در TLS تطبیق میشود و کلیدهای آن (name, alpn, path) هستند.
مثالها
ورودی حداقلی با یک کاربر و TLS:
{
"inbounds": [
{
"tag": "trojan-in",
"listen": "0.0.0.0",
"port": 443,
"protocol": "trojan",
"settings": {
"clients": [
{ "password": "<password>", "email": "alice" }
]
},
"streamSettings": { "network": "tcp", "security": "tls" }
}
]
}خروجی سادهشده:
{
"outbounds": [
{
"tag": "trojan-out",
"protocol": "trojan",
"settings": {
"address": "example.com",
"port": 443,
"password": "<password>",
"email": "alice"
},
"streamSettings": {
"network": "ws",
"security": "tls",
"wsSettings": { "path": "/tj" }
}
}
]
}نکات
flowدر Trojan یک ویژگی حذفشده در Xray-core است. فیلد ساختار همچنان برای تجزیهٔ سازگار-با-عقب وجود دارد، اما تامین هر مقدار غیرخالی موجبPrintRemovedFeatureError("Flow for Trojan")در زمان راهاندازی میشود. زمان اجرا همچنین یک بنر منسوخشدن چاپ میکند که «VLESS with Flow & Seed» را توصیه مینماید (infra/conf/trojan.go:42, 120).passwordالزامی است. یک خروجی با گذرواژهٔ خالی ساخته نمیشود (infra/conf/trojan.go:69-71).fallbacksدقیقاً مانند fallbackهای VLESS کار میکند — همان شکل فیلد و همان استنباط خودکارtypeازdest.
نکات بینهستهای
- sing-box از
users[](باname/password) بهجایclients[]استفاده میکند و زنجیرهٔ fallback Xray را با دو گزینهٔ متمایز جایگزین میکند: یک مقصد تکfallbackبهعلاوهٔfallback_for_alpnکه با ALPN کلیدبندی میشود. به Trojan — sing-box مراجعه کنید. - mihomo شکل استاندارد خروجی تک-شیء-پراکسی را دارد و همچنین یک لایهٔ سازگاری Shadowsocks-over-Trojan (
ss-opts) برای کلاینتهای trojan-go ارائه میدهد. به Trojan — mihomo مراجعه کنید.
منبع: infra/conf/trojan.go:20-116 · v1.260327.0 (d2758a0)
