WireGuard — sing-box
نقطهانتهایی، نه خروجی
WireGuard در sing-box 1.11+ بهعنوان نقطهانتهایی پیکربندی میشود، نه بهعنوان خروجی. این بلوک زیر آرایهٔ ریشهٔ endpoints[] با type: "wireguard" قرار میگیرد و از قواعد مسیریابی مانند هر خروجی نامگذاریشده ارجاع داده میشود.
گزینههای نقطهانتهایی
type: "wireguard" زیر endpoints[]:
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
system | bool | false | true | false | استفاده از دستگاه TUN سیستمعامل بهجای پشتهٔ gVisor در فضای کاربر. توان عبور بالاتر، اما در اکثر بسترها به امتیازات بالا نیاز دارد. |
name | string | (auto) | <string> | نام نمایشی برای نقطهانتهایی. در آمار و موتور مسیریابی استفاده میشود. |
mtu | uint32 | 1408 | <bytes> | MTU تونل. مقدار پیشفرض ۱۴۰۸ است (۱۲ بایت کمتر از ۱۴۲۰ Xray چون sing-box سربار هدر IPv6 روی بستهٔ داخلی را حساب میکند). |
address | badoption.Listable[netip.Prefix] | (required) | [<CIDR>] | آدرسهای محلی تونل، فهرستی از `netip.Prefix`. حداقل یک ورودی الزامی است. |
private_key | string | (required) | <base64 key> | کلید خصوصی محلی، ۳۲ بایت با کدگذاری base64. |
listen_port | uint16 | 0 (random) | <port> | پورت UDP که برای بستههای خروجی WireGuard استفاده میشود. مقدار ۰ یک پورت تصادفی موقت انتخاب میکند. |
peers | []WireGuardPeer | [] | [WireGuardPeer] | همتایان راه دور. |
udp_timeout | badoption.Duration | 5m | <duration> | مهلت بیکاری برای نشست زیرین UDP، که توسط جدول نشست gVisor استفاده میشود. |
workers | int | (CPU-based) | <int> | تعداد کارگرهای خط لولهٔ رمزنگاری. مقدار ۰ از runtime.NumCPU() استفاده میکند. |
منبع: option/wireguard.go:9-20 · ثابتشده در v1.13.11 (553cfa1)
این ساختار همچنین DialerOptions را برای سوکت UDP زیرین درون خود جای میدهد — bind_interface، routing_mark، detour و غیره.
peers[]
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
address | string | (unset) | <host> | میزبان یا IP همتا. وقتی نام میزبان داده میشود در زمان دستدهی resolve میشود. |
port | uint16 | 51820 | <port> | پورت UDP همتا. |
public_key | string | (required) | <base64 key> | کلید عمومی همتا، ۳۲ بایت با کدگذاری base64. |
pre_shared_key | string | (unset) | <base64 key> | کلید از پیش بهاشتراکگذاشتهشدهٔ اختیاری (۳۲ بایت base64) برای آمیختن اضافی در دستدهی. |
allowed_ips | badoption.Listable[netip.Prefix] | [] | [<CIDR>] | CIDRهای مبدأ/مقصد که به این همتا مسیریابی میشوند. |
persistent_keepalive_interval | uint16 | 0 | <seconds> | فاصلهٔ persistent-keepalive WireGuard. مقدار ۰ keepalive را غیرفعال میکند. |
reserved | []uint8 | (empty) | <3 bytes> | بازنویسی فیلد رزرو ۳ بایتی WireGuard که برخی ارائهدهندگان تجاری استفاده میکنند. |
منبع: option/wireguard.go:22-30 · ثابتشده در v1.13.11 (553cfa1)
مثالها
تکهمتا با TUN سیستم:
json
{
"endpoints": [
{
"type": "wireguard",
"tag": "wg-ep",
"system": true,
"name": "wg0",
"address": ["10.0.0.2/32", "fd00::2/128"],
"private_key": "<base64-private-key>",
"mtu": 1408,
"peers": [
{
"address": "wg.example.com",
"port": 51820,
"public_key": "<base64-peer-public-key>",
"allowed_ips": ["0.0.0.0/0", "::/0"],
"persistent_keepalive_interval": 25
}
]
}
],
"route": {
"rules": [
{ "domain": ["geosite-private"], "outbound": "wg-ep" }
]
}
}دستگاه فضای کاربر (بدون TUN سیستم) برای اجراهای بدون امتیاز:
json
{
"endpoints": [
{
"type": "wireguard",
"tag": "wg-userspace",
"system": false,
"address": ["172.16.0.2/24"],
"private_key": "<base64>",
"peers": [
{ "address": "1.2.3.4", "port": 51820, "public_key": "<base64>", "allowed_ips": ["0.0.0.0/0"] }
]
}
]
}نکات
- WireGuard در sing-box فعلی همیشه یک نقطهانتهایی است. پیکربندیهای پیش از 1.11 که از
outbound: { type: wireguard }استفاده میکردند بارگذاری نمیشوند — به مدل endpoints مهاجرت کنید. system: trueاز دستگاه TUN بستر مستقیماً استفاده میکند. سریعتر است اما به root / Administrator نیاز دارد.system: false(پیشفرض) از پشتهٔ TCP/IP فضای کاربر gVisor استفاده میکند — کندتر اما بدون امتیاز.- کلیدها باید base64 باشند (۳۲ بایت خام، سپس base64). کلیدهای hex (که Xray میپذیرد) در اینجا پشتیبانی نمیشوند.
- MTU پیشفرض
1408است، نه ۱۴۲۰ قالب سیمی — sing-box ۱۲ بایت برای سربار هدر IPv6 داخلی رزرو میکند.
نکات بینهستهای
- Xray-core WireGuard را بهعنوان یک خروجی به سبک پروتکل زیر
outbounds[]باprotocol: "wireguard"نگه میدارد. کلیدهای hex یا base64 را میپذیرد، MTU را بهطور پیشفرض ۱۴۲۰ قرار میدهد. به WireGuard — Xray-core مراجعه کنید. - mihomo نیز آن را بهعنوان یک خروجی با یک شکل تکهمتای سادهشده (سطح بالای
server/port/public-key/allowed-ips) و یک بلوک اختیاریamnezia-wg-optionنگه میدارد. به WireGuard — mihomo مراجعه کنید.
منبع: option/wireguard.go:9-30 · v1.13.11 (553cfa1)
