WireGuard — mihomo
خروجی WireGuard در mihomo در فضای کاربر (با پشتیبانی gVisor) اجرا میشود. طرح هم شکل سادهٔ تکهمتا (که فیلدهای همتا در ریشهٔ پراکسی قرار دارند) و هم شکل پرکلام چندهمتای از طریق peers: را ارائه میدهد. بلوک اختیاری amnezia-wg-option همکاری با سرورهای طعمگرفته از AmneziaWG را فعال میکند.
خروجی
ورودی تحت proxies: با type: wireguard. BasicOption و فیلدهای سادهٔ همتا از WireGuardPeerOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
ip | string | (unset) | <IPv4 CIDR> | آدرس IPv4 محلی تونل (مثلاً `10.0.0.2/32`). |
ipv6 | string | (unset) | <IPv6 CIDR> | آدرس IPv6 محلی تونل. |
private-key | string | (required) | <base64 key> | کلید خصوصی محلی. |
workers | int | (CPU-based) | <int> | تعداد کارگرهای خط لولهٔ رمزنگاری. |
mtu | int | 1408 | <bytes> | MTU تونل. |
udp | bool | false | true | false | فعالسازی بازپخش UDP. |
persistent-keepalive | int | 0 | <seconds> | بازهٔ persistent-keepalive. ۰ keepalive ها را غیرفعال میکند. |
amnezia-wg-option | *AmneziaWGOption | (unset) | AmneziaWGOption | پارامترهای مبهمسازی AmneziaWG (بستههای زباله، ماسک کردن سرآیند). |
peers | []WireGuardPeerOption | (use simplified shape) | [WireGuardPeerOption] | فهرست چندهمتای پرکلام. وقتی تنظیم شود، فیلدهای سادهٔ جاسازیشده نادیده گرفته میشوند. |
remote-dns-resolve | bool | false | true | false | تحلیل پرسوجوهای DNS از طریق تونل WireGuard با استفاده از حلکنندههای همتا. |
dns | []string | [] | [<DNS server>] | حلکنندههایی که در تونل استفاده شوند وقتی `remote-dns-resolve` true باشد. |
refresh-server-ip-interval | int | 0 | <seconds> | بازتحلیل نام میزبان همتا هر N ثانیه. ۰ بازتحلیل دورهای را غیرفعال میکند. |
منبع: adapter/outbound/wireguard.go:57-77 · ثابتشده در v1.19.24 (a847246)
peers[] — شکل چندهمتا
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
server | string | (required) | <host> | میزبان یا IP همتا. |
port | int | (required) | <port> | پورت UDP همتا. |
public-key | string | (required) | <base64 key> | کلید عمومی همتا. |
pre-shared-key | string | (unset) | <base64 key> | PSK اختیاری. |
reserved | []uint8 | (empty) | <3 bytes> | بازنویسی فیلد رزرو ۳ بایتی. |
allowed-ips | []string | [] | [<CIDR>] | Allowed-IPs برای این همتا. |
منبع: adapter/outbound/wireguard.go:79-86 · ثابتشده در v1.19.24 (a847246)
amnezia-wg-option
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
jc | int | 0 | <int> | تعداد بستههای زباله به ازای هر دستدهی. |
jmin | int | 0 | <bytes> | حداقل اندازهٔ بستهٔ زباله. |
jmax | int | 0 | <bytes> | حداکثر اندازهٔ بستهٔ زباله. |
s1 | int | 0 | <bytes> | طول پدینگ پیش از بستهٔ init. |
s2 | int | 0 | <bytes> | طول پدینگ پیش از بستهٔ response. |
s3 | int | 0 | <bytes> | AmneziaWG v1.5/v2 — طول پدینگ پیش از بستهٔ cookie. |
s4 | int | 0 | <bytes> | AmneziaWG v1.5/v2 — طول پدینگ پیش از بستهٔ data. |
h1 | string | (unset) | <int or hex> | ماجیک سرآیند برای بستهٔ init. عددی یا hex. |
h2 | string | (unset) | <int or hex> | ماجیک سرآیند برای بستهٔ response. |
h3 | string | (unset) | <int or hex> | ماجیک سرآیند برای بستهٔ cookie. |
h4 | string | (unset) | <int or hex> | ماجیک سرآیند برای بستهٔ data. |
i1 | string | (unset) | <hex> | AmneziaWG v1.5/v2 — بار بستهٔ خاص ۱. |
i2 | string | (unset) | <hex> | بار بستهٔ خاص ۲. |
i3 | string | (unset) | <hex> | بار بستهٔ خاص ۳. |
i4 | string | (unset) | <hex> | بار بستهٔ خاص ۴. |
i5 | string | (unset) | <hex> | بار بستهٔ خاص ۵. |
j1 | string | (unset) | <hex> | فقط AmneziaWG v1.5 — بار بستهٔ زبالهٔ ۱. |
j2 | string | (unset) | <hex> | فقط AmneziaWG v1.5 — بار بستهٔ زبالهٔ ۲. |
j3 | string | (unset) | <hex> | فقط AmneziaWG v1.5 — بار بستهٔ زبالهٔ ۳. |
itime | int64 | 0 | <seconds> | فقط AmneziaWG v1.5 — آهنگ ارسال بستهٔ زباله. |
منبع: adapter/outbound/wireguard.go:88-109 · ثابتشده در v1.19.24 (a847246)
مثالها
خروجی سادهٔ تکهمتا:
proxies:
- name: wg-simple
type: wireguard
server: wg.example.com
port: 51820
private-key: <base64>
public-key: <base64 peer key>
ip: 10.0.0.2/32
ipv6: fd00::2/128
allowed-ips: ['0.0.0.0/0', '::/0']
udp: true
persistent-keepalive: 25خروجی چندهمتا (مثلاً پیکربندی hub-and-spoke):
proxies:
- name: wg-multi
type: wireguard
private-key: <base64>
ip: 10.0.0.2/32
udp: true
peers:
- server: spoke1.example.com
port: 51820
public-key: <base64-spoke1>
allowed-ips: ['10.0.1.0/24']
- server: spoke2.example.com
port: 51820
public-key: <base64-spoke2>
allowed-ips: ['10.0.2.0/24']خروجی سازگار با AmneziaWG:
proxies:
- name: awg
type: wireguard
server: awg.example.com
port: 12345
private-key: <base64>
public-key: <base64>
ip: 10.13.13.2/32
allowed-ips: ['0.0.0.0/0']
udp: true
amnezia-wg-option:
jc: 4
jmin: 40
jmax: 80
s1: 0
s2: 0
h1: '0x12345678'
h2: '0x87654321'
h3: '0xabcdef01'
h4: '0x10fedcba'نکات
- mihomo هم شکل ساده (سطح بالا
server/port/public-key/allowed-ips) و هم فهرست پرکلامpeers:را میپذیرد. وقتیpeersتنظیم شود، فیلدهای سادهٔ جاسازیشده نادیده گرفته میشوند. remote-dns-resolve: trueباعث میشود WireGuard پرسوجوهای DNS را به حلکنندههای فهرستشده درdns:تونل کند (به جای استفاده از حلکنندهٔ محلی). زمانی مفید است که DNS محلی نتواند به مقصد دسترسی داشته باشد.refresh-server-ip-intervalفقط زمانی اهمیت دارد کهserverهمتا یک نام میزبان باشد؛ این فیلد آن را در یک بازهٔ ثابت بازتحلیل میکند، برای نقاط پایانی dynamic-DNS مفید است.- فیلدهای
amnezia-wg-optionنسخهبندی شدهاند:s3/s4/i1-i5برای AmneziaWG v1.5+ هستند؛j1/j2/j3/itimeفقط v1.5 هستند (در v2.0 حذف شدند). به نظرات منبع درadapter/outbound/wireguard.go:94-108مراجعه کنید.
نکات بینهستهای
- Xray-core همیشه از
peers:استفاده میکند (شکل ساده ندارد)، پرچمnoKernelTunرا برای مسیر سریع لینوکس ارائه میدهد و نام فیلدهایی مانندsecretKey،address،publicKey(camelCase) به کار میبرد. به WireGuard — Xray-core مراجعه کنید. - sing-box WireGuard را به مدل endpoints منتقل کرده است — دیگر زیر
outbounds[]نیست. نام فیلدها snake_case هستند (private_key،allowed_ips). به WireGuard — sing-box مراجعه کنید.
منبع: adapter/outbound/wireguard.go:57-109 · v1.19.24 (a847246)
