HTTP & SOCKS — mihomo
mihomo سمت ورودی را به سه نوع شنونده تقسیم میکند — http، socks و mixed (HTTP+SOCKS روی یک پورت) — که هرکدام ساختار Go جداگانه دارند. خروجیها جدا هستند: type: http و type: socks5. TLS در هر گونه از طریق فیلدهای گواهی شنونده پشتیبانی میشود.
خروجی HTTP
ورودی تحت proxies: با type: http. BasicOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
server | string | (required) | <host> | میزبان پراکسی HTTP بالادست. |
port | int | (required) | <port> | پورت بالادست. |
username | string | (unset) | <string> | نام کاربری HTTP Basic auth. |
password | string | (unset) | <string> | گذرواژهٔ HTTP Basic auth. |
tls | bool | false | true | false | پوشاندن اتصال بالادست در TLS (پراکسی HTTPS). |
sni | string | (server) | <SNI> | Server Name Indication در TLS. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی TLS (فقط آزمایش). |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت اثرانگشت گواهی TLS سرور. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت (mTLS). |
private-key | string | (unset) | <key file path> | کلید خصوصی برای `certificate`. |
headers | map[string]string | {} | {<header>: <value>} | سرآیندهای HTTP اضافی که به هر درخواست افزوده میشوند. |
منبع: adapter/outbound/http.go:28-42 · ثابتشده در v1.19.24 (a847246)
خروجی SOCKS5
ورودی تحت proxies: با type: socks5. BasicOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
server | string | (required) | <host> | میزبان SOCKS بالادست. |
port | int | (required) | <port> | پورت بالادست. |
username | string | (unset) | <string> | نام کاربری SOCKS5. |
password | string | (unset) | <string> | گذرواژهٔ SOCKS5. |
tls | bool | false | true | false | پوشاندن اتصال SOCKS در TLS. |
udp | bool | false | true | false | فعالسازی UDP-associate در SOCKS5. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی TLS (فقط آزمایش). |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت اثرانگشت گواهی TLS سرور. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت (mTLS). |
private-key | string | (unset) | <key file path> | کلید خصوصی برای `certificate`. |
منبع: adapter/outbound/socks5.go:30-43 · ثابتشده در v1.19.24 (a847246)
ورودی HTTP
ورودی تحت listeners: با type: http. BaseOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | AuthUsers | [] | <AuthUsers> | کاربران پذیرفتهشده. هر ورودی یک رشتهٔ `user:pass` است. |
certificate | string | (unset) | <PEM file path> | گواهی TLS اختیاری (پراکسی HTTPS). با `private-key` جفت میشود. |
private-key | string | (unset) | <key file path> | کلید خصوصی TLS. |
client-auth-type | string | (none) | no-client-cert | request-client-cert | require-any-client-cert | verify-client-cert-if-given | require-and-verify-client-cert | حالت احراز هویت متقابل TLS کلاینت. |
client-auth-cert | string | (unset) | <PEM file path> | بستهٔ CA پذیرفتهشده بهعنوان ریشهٔ کلاینت. |
ech-key | string | (unset) | <ECH config> | مواد Encrypted Client Hello. |
reality-config | RealityConfig | (disabled) | RealityConfig | پیکربندی سرور REALITY. |
منبع: listener/inbound/http.go:14-23 · ثابتشده در v1.19.24 (a847246)
ورودی SOCKS
ورودی تحت listeners: با type: socks. BaseOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | AuthUsers | [] | <AuthUsers> | کاربران پذیرفتهشده. |
udp | bool | false | true | false | فعالسازی UDP-associate در SOCKS5. |
certificate | string | (unset) | <PEM file path> | گواهی TLS اختیاری. |
private-key | string | (unset) | <key file path> | کلید خصوصی TLS. |
client-auth-type | string | (none) | <see HTTP> | همانند ورودی HTTP. |
client-auth-cert | string | (unset) | <PEM file path> | همانند ورودی HTTP. |
ech-key | string | (unset) | <ECH config> | مواد Encrypted Client Hello. |
reality-config | RealityConfig | (disabled) | RealityConfig | پیکربندی سرور REALITY. |
منبع: listener/inbound/socks.go:14-24 · ثابتشده در v1.19.24 (a847246)
ورودی Mixed (HTTP + SOCKS)
ورودی تحت listeners: با type: mixed. HTTP و SOCKS5 را روی یک پورت چندسو میکند — اولین بایت درخواست کلاینت تعیین میکند کدام نیمه اتصال را اداره کند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | AuthUsers | [] | <AuthUsers> | کاربران پذیرفتهشده (مشترک بین نیمههای HTTP و SOCKS). |
udp | bool | false | true | false | فعالسازی UDP-associate در SOCKS5 روی نیمهٔ SOCKS. |
certificate | string | (unset) | <PEM file path> | گواهی TLS اختیاری. |
private-key | string | (unset) | <key file path> | کلید خصوصی TLS. |
client-auth-type | string | (none) | <see HTTP> | همانند ورودی HTTP. |
client-auth-cert | string | (unset) | <PEM file path> | همانند ورودی HTTP. |
ech-key | string | (unset) | <ECH config> | مواد Encrypted Client Hello. |
reality-config | RealityConfig | (disabled) | RealityConfig | پیکربندی سرور REALITY. |
منبع: listener/inbound/mixed.go:15-25 · ثابتشده در v1.19.24 (a847246)
مثالها
خروجی HTTP:
proxies:
- name: http-upstream
type: http
server: upstream.example.com
port: 8080
username: alice
password: <password>
tls: true
sni: upstream.example.comخروجی SOCKS5 با UDP:
proxies:
- name: socks-upstream
type: socks5
server: upstream.example.com
port: 1080
username: alice
password: <password>
udp: trueورودی Mixed برای دستگاههای کلاینت:
listeners:
- name: client-mixed
type: mixed
listen: 127.0.0.1
port: 7890
users:
- alice:<password>
udp: trueورودی پراکسی HTTPS (HTTP روی TLS):
listeners:
- name: https-proxy
type: http
listen: 0.0.0.0
port: 8443
users:
- alice:<password>
certificate: /etc/mihomo/server.crt
private-key: /etc/mihomo/server.keyنکات
users:در اینجا فهرستی از رشتههایuser:passاست — نه آرایهای از اشیاء ساختاریافته. جداکنندهٔ:الزامی است. فهرست خالی احراز هویت را غیرفعال میکند.- شنوندهٔ
mixedهم HTTP و هم SOCKS5 را روی همان پورت میپذیرد، کنترل از طریق تشخیص اولین بایت در شنونده انجام میشود. - میانبرهای سطح بالا (
port،socks-port،mixed-portروی ریشهٔRawConfig) یک راه جایگزین برای اعلام شنوندگان بدون احراز هویت هستند — از طریقlisteners[]نمیگذرند. به ازای هر ورودی یک رویکرد را انتخاب کنید. - فهرست سطح بالای
authenticationدر mihomo (به Basics مراجعه کنید) برای هر پورت قدیمی (port،socks-port،mixed-port) اعمال میشود ولی برای ورودیهایlisteners:خیر — آنها فیلدusersخود را دارند.
نکات بینهستهای
- Xray-core HTTP و SOCKS را در فایلهای منبع جداگانه نگه میدارد، از
accounts[](هرکدام{user, pass}) استفاده میکند و ورودی داخلی "mixed" ندارد. به HTTP & SOCKS — Xray-core مراجعه کنید. - sing-box هم ورودی
mixedارائه میدهد، باusers[]که اشیاء ساختاریافتهٔ{username, password}را در خود دارد. نام فیلدها snake_case هستند. به HTTP & SOCKS — sing-box مراجعه کنید.
منبع: adapter/outbound/http.go:28-42 · v1.19.24 (a847246)
