پرش به مطلب اصلی

WireGuardDevice

WireGuardDevice پیاده‌سازی WireGuard داخل زنجیر WaterWall است. این نود pure packet tunnel است: نه socket UDP می‌سازد، نه interface سیستم‌عامل WireGuard ایجاد می‌کند. کار آن تبدیل بین packetهای IP داخلی و پیام‌های WireGuard handshake/transport است.

تقسیم مسئولیت معمول:

  • UdpStatelessSocket مالک UDP socket بیرونی است.
  • WireGuardDevice مالک crypto، peer state، routing، handshake، keepalive و rekey است.
  • TunDevice، RawSocket، PacketsToConnection یا نود packet دیگر سمت packet داخلی را فراهم می‌کند.

جایگاه رایج

TunDevice -> WireGuardDevice -> UdpStatelessSocket
UdpStatelessSocket -> WireGuardDevice -> TunDevice

در حالت امن و واضح، دقیقا یک همسایه UdpStatelessSocket کنار WireGuardDevice قرار دهید. اگر هر دو سمت یا هیچ‌کدام UdpStatelessSocket باشند، کد fallback دارد، اما معمولا config خوبی نیست.

نمونه تنظیم

{
"name": "wg-device",
"type": "WireGuardDevice",
"settings": {
"privatekey": "<base64-32-byte-private-key>",
"peers": [
{
"publickey": "<base64-32-byte-peer-public-key>",
"allowedips": "10.44.0.2/32,10.44.1.0/24,fd00::2/128",
"endpoint": "vpn.example.com:51820",
"presharedkey": "<optional-base64-32-byte-psk>",
"persistentkeepalive": 25
}
]
},
"next": "udp-edge"
}

تنظیمات ضروری

گزینهتوضیح
privatekeyprivate key دستگاه، base64 و ۳۲ بایتی
peersآرایه peerها؛ باید غیرخالی باشد و حداکثر 32 peer دارد

برای هر peer:

گزینهتوضیح
publickeypublic key peer، base64 و ۳۲ بایتی
allowedipsیک یا چند CIDR جداشده با comma؛ IPv4 و IPv6 پشتیبانی می‌شود، حداکثر 16 entry
endpointمقصد peer به شکل host:port، ipv4:port یا [ipv6]:port

تنظیمات اختیاری peer

گزینهپیش‌فرضتوضیح
presharedkeyبدون PSKکلید PSK اختیاری base64 و ۳۲ بایتی
persistentkeepalive0ثانیه؛ بازه معتبر 0 تا 65535، مقدار 0 یعنی غیرفعال

رفتار routing

  • outbound: مقصد packet داخلی با longest-prefix match روی AllowedIPs انتخاب peer را تعیین می‌کند.
  • inbound: بعد از decrypt، source IP packet داخلی باید با AllowedIPs همان peer سازگار باشد.
  • endpoint زنده peer با ترافیک authenticated inbound update می‌شود، بنابراین roaming شبیه WireGuard معمولی کار می‌کند.

کارهایی که انجام نمی‌دهد

  • تنظیم Address، ListenPort، MTU یا routeهای سیستم‌عامل
  • اجرای PostUp یا PostDown
  • ساخت interface WireGuard سیستم‌عامل
  • bind کردن UDP socket

این کارها باید با نودهای دیگر WaterWall یا تنظیمات host انجام شوند.