خروجیها
outbounds آرایهٔ مقاصد بالادست است. هر مدخل یک شیء تخت است: پاکت type / tag بهعلاوهٔ فیلدهای خود نوع انتخابشده در همان سطح. قاعدهٔ «اولین خروجی پیشفرض است» وجود ندارد — ترافیک تطبیقنیافته به route.final میرود.
پاکت
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
type | string | — | direct | bridge | block | selector | urltest | socks | http | shadowsocks | snell | vmess | trojan | naive | tor | ssh | shadowtls | vless | anytls | hysteria | tuic | hysteria2 | نوع خروجی. تعیین میکند بقیهٔ شیء به کدام ساختار گزینهها رمزگشایی شود. مقدار ثبتنشده در راهاندازی با "unknown outbound type" شکست میخورد. |
tag | string | — | — | نام یکتای این خروجی. قواعد مسیر، route.final، خروجیهای گروهی و detour شمارهگیر به آن ارجاع میدهند. |
منبع: option/outbound.go:22-26 · ثابتشده در v1.14.2 (af6e64c)
فیلدهای هر نوع در صفحات پروتکل مستند شدهاند: Direct، HTTP و SOCKS، Shadowsocks، VMess، Trojan، Naive، Tor، SSH، VLESS، AnyTLS، Hysteria2، TUIC. selector و urltest خروجیهای گروهیاند که میان tag های دیگر انتخاب میکنند. bridge و snell در Bridge و Snell مستند شدهاند.
فیلدهای مشترک شمارهگیری (DialerOptions)
هر خروجی شمارهگیر DialerOptions را درون خود دارد — یعنی detour بهعلاوهٔ فیلدهای AbstractDialerOptions (که ساختاری جداست تا کنش قاعدهٔ مسیر direct بتواند بدون detour از همین فیلدهای شمارهگیری استفاده کند). همهٔ آنها در همان سطح تختِ پاکت ظاهر میشوند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
detour | string | — | — | از راه خروجی دیگری (با آدرسدهی tag آن) شمارهگیری میکند. در صورت تنظیم، سایر فیلدهای شمارهگیری نادیده گرفته میشوند. |
منبع: option/outbound.go:80-83 · ثابتشده در v1.14.2 (af6e64c)
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
bind_interface | string | — | — | رابط شبکهای که اتصالهای خروجی به آن متصل میشوند. |
inet4_bind_address | *badoption.Addr | — | — | آدرس مبدأ IPv4 برای اتصال. |
inet6_bind_address | *badoption.Addr | — | — | آدرس مبدأ IPv6 برای اتصال. |
bind_address_no_port | bool | false | true | false | هنگام اتصال IP_BIND_ADDRESS_NO_PORT میگذارد — تخصیص پورت را تا connect عقب میاندازد. فقط Linux. |
protect_path | string | — | — | مسیر سوکت Unix شبح protect در Android VpnService؛ هر fd سوکت پیش از شمارهگیری به آنجا فرستاده میشود. |
routing_mark | FwMark | — | — | SO_MARK (fwmark) که روی سوکتهای خروجی گذاشته میشود. فقط Linux. |
reuse_addr | bool | false | true | false | SO_REUSEADDR را روی سوکتهای خروجی تنظیم میکند. |
netns | string | — | — | فضاینام شبکه برای شمارهگیری: نام یا مسیر، یا tag یک مدخل network_namespaces سطح بالا. فقط Linux. از ارجاع به فضاینام نوع unshare پرهیز کنید — تنها راه خروج آن TUN خود sing-box است. |
connect_timeout | badoption.Duration | — | — | مهلت اتصال TCP. رشتهٔ مدت، مانند "5s". |
tcp_fast_open | bool | false | true | false | TCP Fast Open را برای اتصالهای خروجی فعال میکند. |
tcp_multi_path | bool | false | true | false | Multipath TCP را برای اتصالهای خروجی فعال میکند. |
disable_tcp_keep_alive | bool | false | true | false | TCP keep-alive را برای اتصالهای خروجی خاموش میکند. |
tcp_keep_alive | badoption.Duration | — | — | مدت بیکاری پیش از شروع پروبهای keep-alive. رشتهٔ مدت. |
tcp_keep_alive_interval | badoption.Duration | — | — | فاصلهٔ بین پروبهای keep-alive. رشتهٔ مدت. |
udp_fragment | *bool | false | true | false | قطعهقطعهکردن بستههای UDP بزرگتر از MTU را بهجای اسقاط اجازه میدهد. |
domain_resolver | *DomainResolveOptions | — | — | کدام سرور DNS (با tag) آدرس سرور را حل کند: یک رشتهٔ tag ساده، یا شیئی با بازنویسیهای هر شمارهگیری (server، strategy، timeout، disable_cache، disable_optimistic_cache، rewrite_ttl، client_subnet). برای direct بهجای آن دامنهٔ درخواست را حل میکند. |
network_strategy | *NetworkStrategy | — | — | استراتژی گزینش میان شبکههای در دسترس (مثل default / hybrid / fallback). فقط ساختهای سکویی با آگاهی از شبکه. |
network_type | badoption.Listable[InterfaceType] | — | — | انواع شبکهٔ ترجیحی (wifi، cellular، ethernet، other) هنگام استفاده از network_strategy. |
fallback_network_type | badoption.Listable[InterfaceType] | — | — | انواع شبکهای که هنگام در دسترس نبودن موارد ترجیحی به آنها بازگشت میشود. |
fallback_delay | badoption.Duration | — | — | درنگ پیش از شروع شمارهگیری جایگزین (به سبک Happy-Eyeballs). رشتهٔ مدت، مانند "300ms". |
domain_strategy | DomainStrategy | — | prefer_ipv4 | prefer_ipv6 | ipv4_only | ipv6_only | به نفع domain_resolver.strategy منسوخ شده است: تنظیم آن راهاندازی را متوقف میکند، مگر اینکه متغیر محیطی ENABLE_DEPRECATED_LEGACY_DOMAIN_STRATEGY_OPTIONS=true تنظیم شده باشد. |
منبع: option/outbound.go:85-112 · ثابتشده در v1.14.2 (af6e64c)
فیلدهای مشترک سرور (ServerOptions)
خروجیهای پروتکلی که به سرور ثابتی وصل میشوند ServerOptions را درون خود دارند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
server | string | — | — | نام میزبان یا IP سرور. |
server_port | uint16 | — | — | پورت سرور. |
منبع: option/outbound.go:183-186 · ثابتشده در v1.14.2 (af6e64c)
مثال حداقلی
{
"outbounds": [
{
"type": "shadowsocks",
"tag": "proxy",
"server": "example.com",
"server_port": 8388,
"method": "2022-blake3-aes-128-gcm",
"password": "<base64-key>"
},
{ "type": "direct", "tag": "direct" }
],
"route": { "final": "proxy" }
}نکات
- خروجی
dnsوجود ندارد — پیکربندی آن خطاست؛ ربودن DNS یک rule action است. خروجیwireguardهم وجود ندارد: بهجایش از نقطهانتهایی WireGuard استفاده کنید. -
shadowsocksrفقط بهصورت جانگهداری که خطا میدهد ثبت است (sing-box پیادهسازی ShadowsocksR ندارد). hysteria،tuicوhysteria2به ساختwith_quicو خروجیnaiveبه ساختwith_naive_outboundنیاز دارند؛ باینریهای انتشار رسمی هر دو را دارند، جزwith_naive_outboundروی چند پلتفرم کمرواج. -
detourخروجیها را با tag زنجیر میکند؛ زنجیری که به خودش برسد خطای راهاندازی است. - وقتی
serverدامنه است، باdomain_resolverحل میشود و در نبود آن بهroute.default_domain_resolverبرمیگردد. هر دو را فقط وقتی میتوان حذف کرد که تنها یک سرور DNS پیکربندی شده باشد؛ وگرنه راهاندازی شکست میخورد. -
bridgeهمتای L3 خروجیdirectاست: اتصالهای L3 (TCP، UDP، ICMP) را از یک TUN یا دیگر نقطهانتهاییهای L3 مستقیماً از یک رابط شبکه بیرون میفرستد و اتصالهای L4 را رد میکند. به دسترسی ممتاز نیاز دارد (Linux، macOS، Windows، Android روتشده، iOS جیلبریکشده) و با کنشrouteدر pre-match تغذیه میشود. -
snellپروتکل Snell متعلق به Surge را برای ورودی و خروجی پیادهسازی میکند (بدون حالت پراکسی QUIC نسخهٔ v5).
نکات بینهستهای
- Xray-core فیلدهای پروتکل را در
settingsتو در تو میکند، باstreamSettings.sockopt.dialerProxyزنجیر میسازد (proxySettingsهنگام راهاندازی رد میشود) و اولین مدخل آرایه را مقصد پیشفرض مسیر میگیرد. خروجیهای Xray را ببینید. - mihomo اینها را
proxiesمینامد و انواع گروهی (select، url-test،fallback،load-balance) گروههای پراکسی جداگانهاند، نه انواع خروجی.
منبع: option/outbound.go:22-26 · v1.14.2 (af6e64c)
