لماذا تستضيف WireGuard ذاتيًا على خادم افتراضي VPS
تجمع شبكات VPN التجارية آلاف المستخدمين على العناوين IP نفسها، وغالبًا ما تحتفظ بالسجلات وتقيّد عرض النطاق. بنشر WireGuard على خادمك VPS الخاص، تحصل على عنوان IP مخصّص للخروج، ومعدّل نقل مضمون بحسب خطتك، وسياسة سجلات تحدّدها بنفسك. يعمل WireGuard عبر UDP على منفذ واحد، ويندمج مباشرةً في نواة Linux، ويتفاوض على الاتصال في جزء بسيط من الوقت الذي يستغرقه OpenVPN. وبالنسبة لمطوّر أو وكالة، فهو أيضًا أنظف وسيلة للوصول إلى الخدمات الداخلية (قاعدة البيانات، لوحة الإدارة، المراقبة) دون تعريضها للعموم: تُربَط بواجهة VPN فقط.
الفوائد الملموسة لـ WireGuard ذاتي الاستضافة
- عنوان IP خروج مخصّص وثابت، مثالي لإضافة الوصول إلى واجهات API أو لوحات الإدارة الخلفية إلى القائمة البيضاء.
- تشفير ChaCha20-Poly1305 حديث مع سطح هجوم ضئيل (4000 سطر من الشيفرة).
- معدّلات نقل قريبة من الأصلية وإعادة اتصال شبه فورية بعد انقطاع الشبكة (التجوال).
- وصول خاص إلى خدماتك الداخلية بربطها بالشبكة الفرعية لـ VPN (10.0.0.0/24) بدلًا من 0.0.0.0.
- لا سجلات نشاط لدى طرف ثالث: تتحكّم بالكامل في الاحتفاظ بالبيانات.
- تكلفة ثابتة وقابلة للتوقّع، مستقلّة عن عدد الأجهزة المتصلة.
المتطلبات اللازمة لهذا النشر
WireGuard خفيف للغاية: يكفي خادم VPS بمعالج vCPU واحد وذاكرة RAM بسعة 1 غيغابايت لعشرة عملاء تقريبًا، إذ يكون العامل المحدِّد هو عرض النطاق وليس المعالج. خطّط لتثبيت Docker و Docker Compose (أو حزمة wireguard-tools الأصلية)، ونواة Linux حديثة (الإصدار 5.6+ يدمج WireGuard أصليًا)، وفتح منفذ UDP، وهو بالعُرف 51820. يُنصَح باسم نطاق موجَّه إلى خادمك VPS (سجل A باسم vpn.mydomain.com) لتوزيع إعدادات العملاء، لكن عنوان IP العام وحده يعمل أيضًا.
نشر WireGuard في حاوية
تفعيل إعادة توجيه IP على خادم VPS
يجب أن يوجّه الخادم حركة مرور النفق نحو الإنترنت. أضف net.ipv4.ip_forward=1 في /etc/sysctl.conf ثم طبّق باستخدام sudo sysctl -p. بدون ذلك، يتصل العملاء لكن دون أي وصول صادر.
تشغيل حاوية wg-easy
يوفّر مشروع wg-easy خدمة WireGuard إضافةً إلى واجهة ويب لإدارة الأقران. في ملف docker-compose.yml، عرّف WG_HOST=vpn.mydomain.com، وكلمة مرور للمسؤول، وأتِح 51820/udp وكذلك 51821/tcp للواجهة. ابدأ باستخدام docker compose up -d.
فتح منفذ UDP على الجدار الناري
اسمح بحركة المرور الواردة على منفذ النفق: sudo ufw allow 51820/udp. في المقابل، قيّد الوصول إلى واجهة الإدارة (51821) لعنوان IP الخاص بك وحده أو ضعها خلف VPN بمجرّد اتصال أول عميل.
حماية واجهة الإدارة بـ SSL
ضع وكيلًا عكسيًا (Caddy أو Traefik) أمام المنفذ 51821 لتقديم الواجهة عبر HTTPS على vpn.mydomain.com بشهادة Let's Encrypt تلقائية. لا تترك أبدًا لوحة الإدارة متاحة عبر HTTP غير المشفّر على الإنترنت.
إنشاء قرين واستيراد الإعداد
من الواجهة، أضف عميلًا: يولّد wg-easy زوج مفاتيح ورمز QR. امسحه بتطبيق WireGuard على الهاتف، أو نزّل ملف .conf لأجل wg-quick up. يصبح العميل جاهزًا للعمل فورًا.
التحقّق من النفق
بمجرّد الاتصال، تحقّق من عنوان IP العام للخروج (يجب أن يكون عنوان الخادم VPS) وحالة الـ handshake من جهة الخادم باستخدام docker exec wg-easy wg show. تؤكّد قيمة latest handshake حديثة أن النفق نشط.
لتحويل شبكة VPN إلى بوابة للوصول إلى الخدمات الداخلية دون تعريض كل شيء، اسمح في AllowedIPs الخاصة بالعميل بالشبكة الفرعية لـ VPN فقط (على سبيل المثال 10.8.0.0/24) بدلًا من 0.0.0.0/0. تحصل بذلك على نفق "مقسّم": تمرّ فقط حركة المرور نحو خدماتك الخاصة عبر الخادم VPS، بينما يخرج بقية تصفّحك عبر اتصالك المحلي. اجمعه مع مفتاح إيقاف (kill-switch) عبر PostUp/PostDown لتفادي أي تسرّب إذا سقط النفق.