WireGuard — Xray-core
Xray-core یک پیادهسازی WireGuard در فضای کاربر دارد که بهعنوان یک پروتکل در هر دو طرف اجرا میشود. در Linux، یک مسیر سریع اختیاری kernel-TUN در دسترس است — noKernelTun: true را تنظیم کنید تا به دستگاه wireguard-go در فضای کاربر بازگردید.
تنظیمات
settings برای یک خروجی یا ورودی با "protocol": "wireguard":
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
noKernelTun | bool | false | true | false | غیرفعالسازی مسیر سریع kernel-TUN (فقط Linux) و اجرای دستگاه wireguard-go در فضای کاربر. برای اجراهای بدون مجوز سودمند است. |
secretKey | string | (required) | <key> | کلید خصوصی محلی. hex (64 کاراکتر)، base64 (پدد یا بدون پدد) یا base64 با URL-safe را میپذیرد — به ParseWireGuardKey در infra/conf/wireguard.go:148 مراجعه کنید. |
address | []string | [10.0.0.1, fd59:...:0001] | [<CIDR or IP>] | آدرس(های) رابط محلی. در صورت حذف، دو IP بوگون استفاده میشود (یک IPv4 و یک IPv6). |
peers | []*WireGuardPeerConfig | [] | [WireGuardPeerConfig] | همتایان راهدور. برای پیکربندی استاندارد تکهمتا این یک فهرست تکعضوی است. |
mtu | int32 | 1420 | <bytes> | MTU تونل. 0 با 1420 (پیشفرض قالب سیمی WireGuard) جایگزین میشود. |
reserved | []byte | (empty) | <3 bytes> | بازنویسی فیلد رزروی سهبایتی (که برخی پیادهسازیهای تجاری WG استفاده میکنند). باید خالی یا دقیقاً 3 بایت باشد. |
domainStrategy | string | forceip | forceip | forceipv4 | forceipv6 | forceipv4v6 | forceipv6v4 | نحوهٔ تفکیک نام میزبان نقطهانتهایی همتا. اشکال چهارحرفی کنترل میکنند کدام خانواده اول امتحان شود (v4v6 = ابتدا IPv4 سپس fallback به IPv6). |
منبع: infra/conf/wireguard.go:59-69 · ثابتشده در v26.7.28 (5ca6f4b)
peers[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
publicKey | string | (required) | <key> | کلید عمومی همتا. همان قالبهای `secretKey` را میپذیرد. |
preSharedKey | string | (unset) | <key> | PSK اختیاری برای امنیت اضافی دستدهی. |
endpoint | string | (required for outbound) | <host:port> | محل دسترسی به همتا. نام میزبان مجاز است و در زمان دستدهی دوباره تفکیک میشود. |
keepAlive | uint32 | 0 | <seconds> | بازهٔ persistent-keepalive وایرگارد. 0 keepalive را غیرفعال میکند. |
allowedIPs | []string | ["0.0.0.0/0", "::0/0"] | [<CIDR>] | CIDRهای مبدأ/مقصد که به این همتا مسیریابی میشوند. در صورت حذف بهطور پیشفرض همه مسیرها فعال است. |
level | uint32 | 0 | <uint32> | سطح policy برای این همتا. فقط ورودی (سمت سرور) — هر همتا بهعنوان یک کاربر ثبت میشود. |
email | string | (unset) | <string> | شناسهٔ همتا که در آمار/لاگ نشان داده میشود. فقط ورودی (سمت سرور). |
منبع: infra/conf/wireguard.go:17-26 · ثابتشده در v26.7.28 (5ca6f4b)
مثالها
خروجی به یک همتای WireGuard تنها:
json
{
"outbounds": [
{
"tag": "wg-out",
"protocol": "wireguard",
"settings": {
"secretKey": "<base64-private-key>",
"address": ["10.0.0.2/32", "fd00:dead:beef::2/128"],
"mtu": 1420,
"peers": [
{
"publicKey": "<base64-peer-public-key>",
"endpoint": "wg.example.com:51820",
"allowedIPs": ["0.0.0.0/0", "::/0"],
"keepAlive": 25
}
],
"domainStrategy": "forceipv4v6"
}
}
]
}خروجی با فیلد رزروی 3 بایتی (برخی ارائهدهندگان تجاری):
json
{
"outbounds": [
{
"tag": "wg-cloak",
"protocol": "wireguard",
"settings": {
"secretKey": "<base64>",
"address": ["172.16.0.2/32"],
"reserved": [123, 45, 67],
"peers": [
{ "publicKey": "<base64>", "endpoint": "engage.cloudflareclient.com:2408" }
]
}
}
]
}نکات
- کلیدها بهصورت داخلی به hex نرمال میشوند. hex (64 کاراکتر hex)، base64 پدد و base64 با URL-safe همگی در ورودی پذیرفته میشوند (
infra/conf/wireguard.go:155-170). addressدر صورت حذف به IPهای بوگون پیشفرض میشود که برای پیکربندی فقط-خروجی کار میکند اما هر ترافیکی که از رابط WireGuard بهعنوان آدرس مبدأ خود استفاده میکند را خراب میکند. برای هر پیکربندی غیر پیشپاافتاده این را بهصراحت تنظیم کنید.mtu: 0در زمان ساخت بیصدا به 1420 بازنویسی میشود (infra/conf/wireguard.go:116-120).reservedباید خالی یا دقیقاً 3 بایت باشد. آرایه با طول 2 یا 4 ساخته نمیشود (infra/conf/wireguard.go:122-124).- پرچم
noKernelTunتنها راه انصراف از مسیر سریع kernel-TUN در Linux است. سایر سکوها همیشه از wireguard-go در فضای کاربر استفاده میکنند. - در یک بلوک ورودی (سمت سرور)، هر مدخل
peers[]بهعنوان یک کاربر ثبت میشود:emailوlevelآن به آمار/لاگ و policy تغذیه میشوند (infra/conf/wireguard.go:97-113). در یک خروجی هر دو فیلد نادیده گرفته میشوند.
نکات بینهستهای
- sing-box در 1.11+ WireGuard را به مدل endpoints منتقل کرده است — برای اشکال جدید فیلد (
private_key,address,peers[],udp_timeout) به WireGuard — sing-box مراجعه کنید. - mihomo یک شکل سادهشدهٔ تکهمتا (سطح بالا
server/port/public-key/allowed-ips) یا یک فهرست کاملpeers:را میپذیرد و یک بلوکamnezia-wg-optionبرای سازگاری با AmneziaWG نمایان میسازد. به WireGuard — mihomo مراجعه کنید.
منبع: infra/conf/wireguard.go:17-69 · v26.7.28 (5ca6f4b)
