WireGuard — VPN مدرن و سبک

VPN ساده و سریع با الگوریتم‌های ثابت و مدرن. هر همتا با کلید عمومی‌اش شناخته می‌شود و دست‌دهی فقط یک رفت‌وبرگشت است.

  • لایهٔ OSI: 3 (شبکه)
  • انتقال: UDP
  • پورت: 51820
  • استاندارد: Noise IK · هستهٔ لینوکس 5.6
  • سطح: پیشرفته · حدود 6 دقیقه

نکته‌های کلیدی

  • WireGuard حدود ۴۰۰۰ خط کد دارد و بخشی از هستهٔ لینوکس است.
  • الگوریتم‌ها ثابت‌اند: Curve25519، ChaCha20-Poly1305 و BLAKE2s؛ مذاکره‌ای در کار نیست.
  • AllowedIPs هم جدول مسیریابی و هم فیلتر مبدأ است.

مراحل شبیه‌سازی (5 بسته)

  1. Initiation: کلاینت پیام ۱۴۸ بایتی Noise_IK را با هویت رمزشده می‌فرستد. سرور به بسته‌های بدون کلید معتبر اصلاً پاسخ نمی‌دهد.
  2. Response: سرور با پیام ۹۲ بایتی پاسخ می‌دهد. پس از یک رفت‌وبرگشت کلیدهای انتقال ساخته شده‌اند.
  3. دادهٔ تونل: بستهٔ IP داخلی (10.8.0.2 به 10.20.0.15) کامل با ChaCha20-Poly1305 رمز و در UDP گذاشته می‌شود.
  4. تحویل داخلی: سرور بسته را رمزگشایی و بررسی می‌کند که IP مبدأ در AllowedIPs همتا باشد، سپس به شبکهٔ داخلی تحویل می‌دهد.
  5. Keepalive: بستهٔ خالی ۳۲ بایتی هر ۲۵ ثانیه تا نگاشت NAT باز بماند.

درس‌های مرتبط

  • TLS 1.3 — امنیت لایهٔ انتقال
  • SSH — پوستهٔ امن
  • IPsec — امنیت پروتکل اینترنت
  • DNSSEC — امنیت امضای DNS
  • HTTP Proxy — پراکسی پیشرو
  • SOCKS5 — پراکسی عمومی لایهٔ نشست