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"
}
تنظیمات ضروری
| گزینه | توضیح |
|---|---|
privatekey | private key دستگاه، base64 و ۳۲ بایتی |
peers | آرایه peerها؛ باید غیرخالی باشد و حداکثر 32 peer دارد |
برای هر peer:
| گزینه | توضیح |
|---|---|
publickey | public key peer، base64 و ۳۲ بایتی |
allowedips | یک یا چند CIDR جداشده با comma؛ IPv4 و IPv6 پشتیبانی میشود، حداکثر 16 entry |
endpoint | مقصد peer به شکل host:port، ipv4:port یا [ipv6]:port |
تنظیمات اختیاری peer
| گزینه | پیشفرض | توضیح |
|---|---|---|
presharedkey | بدون PSK | کلید PSK اختیاری base64 و ۳۲ بایتی |
persistentkeepalive | 0 | ثانیه؛ بازه معتبر 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 انجام شوند.