Freedom — Xray-core
Freedom خروجی دورزن Xray است — ترافیک را بدون هیچ پروتکل پراکسی واسطهای به مقصد واقعی ارسال میکند. همچنین دو ویژگی ضد-DPI را حمل میکند: قطعهبندی TCP/TLS و تزریق دلخواه بستهٔ نویز.
خروجی
settings برای یک خروجی با "protocol": "freedom":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
targetStrategy | string | asis | asis | useip | useipv4 | useipv6 | useipv4v6 | useipv6v4 | forceip | forceipv4 | forceipv6 | forceipv4v6 | forceipv6v4 | نحوهٔ تفکیک آدرس مقصد پیش از برقراری اتصال. `asis` هرچه موتور مسیریابی تحویل داده باشد بدون تغییر عبور میدهد؛ `useip*` فقط در صورت نیاز به IP تفکیک میکند؛ `forceip*` همیشه تفکیک و جایگزین میکند. پسوندهای `*v4v6` / `*v6v4` کنترل میکنند کدام خانواده اول امتحان شود. |
domainStrategy | string | (inherits targetStrategy) | <same values> | نام مستعار قدیمی برای `targetStrategy`. تنها وقتی `targetStrategy` خالی است خوانده میشود. |
redirect | string | (unset) | <host:port> | بازنویسی مقصد هر اتصال. برای ارسال به یک سرویس محلی صرف نظر از مسیریابی سودمند است. |
userLevel | uint32 | 0 | <uint32> | سطح policy پیشفرض برای اتصالهای عبوری از این خروجی. |
fragment | *Fragment | (disabled) | Fragment | قطعهبندی TCP در سطح سگمنت برای دور زدن DPI مبتنی بر طول. |
noise | *Noise | (removed) | (use noises) | فیلد حذفشده. از آرایهٔ `noises` استفاده کنید. تنظیم `noise` در ساخت پیکربندی خطای صریح تحریک میکند. |
noises | []*Noise | (unset) | [Noise] | فهرست بستههای نویز که پیش از (یا بین) بستههای واقعی ارسال میشوند تا تطبیق الگو را گمراه کنند. |
proxyProtocol | uint32 | 0 | 0 | 1 | 2 | افزودن یک سرآیند PROXY-protocol به اتصالهای خروجی. 0 غیرفعال میکند؛ 1 / 2 بهترتیب v1 (متنی) یا v2 (دودویی) را تنظیم میکنند. |
منبع: infra/conf/freedom.go:17-26 · ثابتشده در v1.260327.0 (d2758a0)
fragment
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
packets | string | (all) | tlshello | <from-to> | | کدام بستهها قطعهبندی شوند. `tlshello` فقط TLS ClientHello را قطعهبندی میکند (ظریفتر، برای ابهامسازی SNI سودمند). یک بازه مانند `"1-3"` بستههای آن بازهٔ آفست را قطعهبندی میکند. خالی هر بسته را قطعهبندی میکند — تهاجمیترین حالت. |
length | *Int32Range | (required) | {from, to} | بازهٔ بایتها به ازای هر قطعه. حداقل باید > 0 باشد. |
interval | *Int32Range | (required) | {from, to} | بازهٔ میلیثانیههای تأخیر بین قطعهها. |
maxSplit | *Int32Range | (unbounded) | {from, to} | بازهٔ کل تقسیمها به ازای هر بسته. سقف اختیاری. |
منبع: infra/conf/freedom.go:28-33 · ثابتشده در v1.260327.0 (d2758a0)
noises[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
type | string | (required) | rand | str | hex | base64 | شکل بار بستهٔ نویز. `rand` بایتهای تصادفی تولید میکند که طول آن از `packet` (یک رشتهٔ بازه) میآید. `str`/`hex`/`base64` مقدار `packet` را تحتاللفظی تفسیر میکنند. |
packet | string | (required) | <bytes or range> | محتوای بار. قالب به `type` بستگی دارد. |
delay | *Int32Range | (unset) | {from, to} | بازهٔ میلیثانیههای صبر پیش از ارسال این بستهٔ نویز. |
applyTo | string | ip | ip | all | ipv4 | ipv6 | محدود کردن تزریق نویز به یک خانوادهٔ IP. `ip` و `all` به هر دو اعمال میشوند. |
منبع: infra/conf/freedom.go:35-40 · ثابتشده در v1.260327.0 (d2758a0)
مثالها
خروجی Freedom ساده (عبوری):
json
{
"outbounds": [
{ "tag": "direct", "protocol": "freedom", "settings": {} }
]
}اجبار تفکیک IPv4-سپس-IPv6:
json
{
"outbounds": [
{
"tag": "direct-v4",
"protocol": "freedom",
"settings": { "targetStrategy": "forceipv4v6" }
}
]
}قطعهبندی TLS-hello (تلاش اول خوب برای ابهامسازی SNI):
json
{
"outbounds": [
{
"tag": "frag",
"protocol": "freedom",
"settings": {
"fragment": {
"packets": "tlshello",
"length": { "from": 10, "to": 20 },
"interval": { "from": 10, "to": 20 }
}
}
}
]
}تزریق نویز (4 بایت تصادفی پیش از هر اتصال IPv4، با تأخیر 0-1 میلیثانیه):
json
{
"outbounds": [
{
"tag": "noisy",
"protocol": "freedom",
"settings": {
"noises": [
{
"type": "rand",
"packet": "4-4",
"delay": { "from": 0, "to": 1 },
"applyTo": "ipv4"
}
]
}
}
]
}ارسال همه چیز به یک سرویس محلی (کمککار آزمون):
json
{
"outbounds": [
{
"tag": "redir",
"protocol": "freedom",
"settings": { "redirect": "127.0.0.1:8080" }
}
]
}نکات
targetStrategyفیلد مدرن است؛domainStrategyتنها بهعنوان جایگزین وقتیtargetStrategyخالی است خوانده میشود (infra/conf/freedom.go:46-48). پیکربندیهای جدید باید فقطtargetStrategyرا تنظیم کنند.- رشتههای استراتژی ناشناخته بهجای جایگزین بیصدا خطای راهاندازی تولید میکنند (
infra/conf/freedom.go:72-73). noise(مفرد) حذف شده است. پیام خطا در راهاندازی به شما میگوید بهnoises = [ { ... } ]مهاجرت کنید (infra/conf/freedom.go:128-130).fragment.packets: "tlshello"نقطهٔ شروع توصیهشده است — قطعهبندی فقط TLS ClientHello مانع DPI مبتنی بر SNI میشود اما بقیهٔ اتصال را دستنخورده میگذارد (سربار بایتی فقط یکباره است).fragment.length.fromوfragment.intervalوقتیfragmentحضور دارد الزامی هستند (infra/conf/freedom.go:102-118). بازهٔmaxSplitاختیاری است.proxyProtocolخارج از1..2بیصدا نادیده گرفته میشود — فقط آن دو مقدار خروجی سرآیند تولید میکنند (infra/conf/freedom.go:162-164).
نکات بینهستهای
- sing-box این را Direct مینامد و خروجی تقریباً هیچ گزینهٔ مخصوص خود ندارد — بازنویسی مقصد در 1.13 حذف شد؛ برای آن رفتار از اقدامات route استفاده کنید. به Direct — sing-box مراجعه کنید.
- mihomo نوع Direct بهطور مشابهی حداقلی دارد؛ پراکسی توکار
DIRECTدر هر پیکربندی بهصورت ضمنی وجود دارد. به Direct — mihomo مراجعه کنید.
منبع: infra/conf/freedom.go:17-40 · v1.260327.0 (d2758a0)
