ECH — mihomo
mihomo ECH را بهصورت بلوک ech-opts روی هر آداپتور پراکسی که TLS صحبت میکند آشکار میسازد. همین ساختار ۳-فیلدی در VLESS, VMess, Trojan, Hysteria2, TUIC, AnyTLS و گونههای مبتنی بر obfs در Shadowsocks استفاده میشود.
ech-opts
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
enable | bool | false | true | false | ECH را برای این پراکسی فعال میکند. وقتی false باشد، بقیهٔ بلوک نادیده گرفته میشود. |
config | string | (auto-discover) | <base64 ECHConfigList> | لیست پیکربندی ECH پینشده (با کدگذاری base64 و padding استاندارد). وقتی تنظیم نشده باشد، mihomo رکورد DNS از نوع HTTPS مربوط به نام سرور را پرسوجو میکند تا پیکربندی را خودکار کشف کند. |
query-server-name | string | (server name) | <hostname> | دامنهٔ مورد استفاده برای پرسوجوی رکورد HTTPS مربوط به ECH را بازنویسی میکند. بهطور پیشفرض از `sni` / `servername` / `server` پراکسی استفاده میکند. وقتی نام میزبان پوششی با هدف واقعی متفاوت است مفید است. |
منبع: adapter/outbound/ech.go:12-17 · ثابتشده در v1.19.24 (a847246)
همین ساختار بهعنوان بلوک ECH پلاگین اختفا (تحت plugin-opts در shadowsocks برای v2ray-plugin و gost-plugin) دوباره استفاده میشود، به همین دلیل هر فیلد دارای هر دو تگ proxy: و obfs: است.
مثالها
خروجی — VLESS با ECH فرصتطلبانه:
yaml
proxies:
- name: vless-ech
type: vless
server: example.com
port: 443
uuid: <UUID>
tls: true
servername: example.com
network: tcp
ech-opts:
enable: trueخروجی — پیکربندی ECH پینشده (base64):
yaml
proxies:
- name: vless-ech-pinned
type: vless
server: example.com
port: 443
uuid: <UUID>
tls: true
servername: example.com
ech-opts:
enable: true
config: <base64 ECHConfigList>
query-server-name: cover.example.comنکات
- مقدار
configدر mihomo base64 استاندارد (با padding) است، نه base64 امن برای URL. اگر مقداری بهصورت URL-safe-base64 دارید، ابتدا آن را تبدیل کنید. - کشف خودکار از
ProxyServerHostResolverدر mihomo استفاده میکند — حلکنندهای که برای حل نامهای میزبان پراکسی بهکار میرود. آن حلکننده نیز از بلوکdns:سطح بالا، از جمله هر تنظیم DoH/DoT، تبعیت میکند. - شنوندههای ورودی mihomo که از ECH پشتیبانی میکنند (VLESS / VMess / Trojan / Hysteria2 / TUIC / AnyTLS) بستهٔ کلید ECH را در فیلد
ech-keyشنونده میپذیرند — به صفحات ورودی مربوطه مراجعه کنید. هیچ بلوک ورودی یکپارچهٔech-configوجود ندارد.
نکات بینهستهای
- Xray-core ECH را بهصورت فیلدهایی مستقیماً روی
tlsSettings(echServerKeys,echConfigList,echForceQuery,echSockopt) آشکار میکند. به ECH — Xray-core مراجعه کنید. - sing-box از بلوک تو در توی
tls.echروی ورودیها و خروجیها با نامهای snake_case استفاده میکند. به ECH — sing-box مراجعه کنید.
منبع: adapter/outbound/ech.go:12-17 · v1.19.24 (a847246)
