Skip to content

Snell — mihomo

Snell پروتکل پراکسی سبک‌وزنِ Surge است. mihomo هم یک خروجی Snell (برای اتصال به یک سرور Snell) و هم، به‌تازگی، یک شنوندهٔ ورودی Snell (برای عمل‌کردن به‌عنوان یک سرور) را پیاده‌سازی می‌کند. هر دو سمت از لایهٔ مبهم‌سازی simple-obfs با حالت‌های http یا tls پشتیبانی می‌کنند.

خروجی

ورودی زیر proxies: با type: snell. این BasicOption (فیلدهای مشترک خروجی) را در خود جای می‌دهد.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(required)<string>نام یکتای پراکسی.
serverstring(required)<host>نام میزبان یا IP سرور بالادست.
portint(required)<port>پورت سرور بالادست.
pskstring(required)<string>کلید پیش‌مشترک (گذرواژه).
udpboolfalsetrue | falseفعال‌سازی بازپخش UDP (در Snell نسخهٔ ۲ به بعد).
versionint(server default)1 | 2 | 3نسخهٔ پروتکل Snell.
reuseboolfalsetrue | falseاستفادهٔ مجدد از اتصالات زیرین.
obfs-optsmap[string]any(disabled){ mode, host }گزینه‌های مبهم‌سازی، مثلاً `{ mode: http|tls, host: <host> }`.

منبع: adapter/outbound/snell.go:26-36 · ثابت‌شده در v1.19.27 (5184081)

ورودی

ورودی زیر listeners: با type: snell. این BaseOption را در خود جای می‌دهد (listen، port).

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
pskstring(required)<string>کلید پیش‌مشترک (گذرواژه).
versionint(server default)1 | 2 | 3نسخهٔ پروتکل Snell.
udpboolfalsetrue | falseفعال‌سازی بازپخش UDP (در Snell نسخهٔ ۲ به بعد).
obfs-optsSnellObfsOption(disabled)SnellObfsOptionگزینه‌های مبهم‌سازی.

منبع: listener/inbound/snell.go:12-18 · ثابت‌شده در v1.19.27 (5184081)

obfs-opts

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
modestring(unset)http | tlsحالت مبهم‌سازی.
hoststring(unset)<host>هدر host مبهم‌سازی.

منبع: listener/inbound/snell.go:24-27 · ثابت‌شده در v1.19.27 (5184081)

مثال‌ها

خروجی — Snell ساده:

yaml
proxies:
  - name: snell-srv
    type: snell
    server: example.com
    port: 44046
    psk: <pre-shared-key>
    version: 3
    udp: true

خروجی — Snell با مبهم‌سازی HTTP:

yaml
proxies:
  - name: snell-obfs
    type: snell
    server: example.com
    port: 44046
    psk: <pre-shared-key>
    version: 3
    obfs-opts:
      mode: http
      host: bing.com

ورودی زیر listeners:

yaml
listeners:
  - name: snell-in
    type: snell
    listen: 0.0.0.0
    port: 44046
    psk: <pre-shared-key>
    version: 3
    udp: true
    obfs-opts:
      mode: tls
      host: bing.com

نکات

  • psk راز مشترک است؛ خروجی و ورودی باید از همان مقدار استفاده کنند.
  • بازپخش UDP به Snell نسخهٔ ۲ یا جدیدتر نیاز دارد — فعال‌کردن udp روی یک همتای نسخهٔ ۱ رد می‌شود.
  • reuse (فقط خروجی) از اتصال زیرین مجدداً استفاده می‌کند. این برای Snell نسخهٔ ۲ به‌طور ضمنی اعمال می‌شود؛ برای نسخهٔ ۴ از طریق این فیلد انتخابی است.
  • obfs-opts.mode ترابرد simple-obfs را انتخاب می‌کند: http جریان را در یک درخواست HTTP جعلی می‌پیچد، tls آن را در یک رکورد TLS جعلی می‌پیچد. مقدار host هدر host مبهم‌سازی را تنظیم می‌کند. برای نبودِ مبهم‌سازی، obfs-opts را تنظیم‌نشده بگذارید. هر دو سمت باید بر سر حالت و host توافق کنند.

نکات بین‌هسته‌ای

  • Snell مخصوص Surge است. نه Xray-core و نه sing-box از آن پشتیبانی می‌کنند — در هیچ‌یک از این دو هسته خروجی یا ورودی معادلی وجود ندارد.

منبع: adapter/outbound/snell.go:26-36 · v1.19.27 (5184081)

Core Tutorial اثر Argsment