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:126 مراجعه کنید. |
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) جایگزین میشود. |
workers | int32 | 0 (CPU-based) | <int> | تعداد گوروتینهای کارگر برای خط لولهٔ رمزنگاری. 0 از runtime.NumCPU() استفاده میکند. |
reserved | []byte | (empty) | <3 bytes> | بازنویسی فیلد رزروی سهبایتی (که برخی پیادهسازیهای تجاری WG استفاده میکنند). باید خالی یا دقیقاً 3 بایت باشد. |
domainStrategy | string | forceip | forceip | forceipv4 | forceipv6 | forceipv4v6 | forceipv6v4 | نحوهٔ تفکیک نام میزبان نقطهانتهایی همتا. اشکال چهارحرفی کنترل میکنند کدام خانواده اول امتحان شود (v4v6 = ابتدا IPv4 سپس fallback به IPv6). |
منبع: infra/conf/wireguard.go:51-62 · ثابتشده در v1.260327.0 (d2758a0)
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های مبدأ/مقصد که به این همتا مسیریابی میشوند. در صورت حذف بهطور پیشفرض همه مسیرها فعال است. |
منبع: infra/conf/wireguard.go:13-19 · ثابتشده در v1.260327.0 (d2758a0)
مثالها
خروجی به یک همتای 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:133-148). addressدر صورت حذف به IPهای بوگون پیشفرض میشود که برای پیکربندی فقط-خروجی کار میکند اما هر ترافیکی که از رابط WireGuard بهعنوان آدرس مبدأ خود استفاده میکند را خراب میکند. برای هر پیکربندی غیر پیشپاافتاده این را بهصراحت تنظیم کنید.mtu: 0در زمان ساخت بیصدا به 1420 بازنویسی میشود (infra/conf/wireguard.go:91-95).reservedباید خالی یا دقیقاً 3 بایت باشد. آرایه با طول 2 یا 4 ساخته نمیشود (infra/conf/wireguard.go:100-102).- پرچم
noKernelTunتنها راه انصراف از مسیر سریع kernel-TUN در Linux است. سایر سکوها همیشه از wireguard-go در فضای کاربر استفاده میکنند.
نکات بینهستهای
- 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:13-62 · v1.260327.0 (d2758a0)
