إنشاء VPN خاص بك على VPS باستخدام WireGuard: السيرفر والكمبيوتر والموبايل

لإنشاء VPN خاص بك على VPS باستخدام WireGuard: ثبّت حزمة wireguard، وأنشئ زوج مفاتيح للسيرفر ولكل جهاز، واكتب ملف /etc/wireguard/wg0.conf، وفعّل تمرير الحزم (IP forwarding) والـ NAT، وافتح منفذ UDP رقم 51820 في الجدار الناري، وشغّل الخدمة wg-quick@wg0، ثم استورد ملف إعداد صغيرًا على كل لابتوب أو موبايل. على Ubuntu 22.04 أو 24.04 تستغرق العملية نحو عشرين دقيقة، ولا تحتاج تجميع أي شيء لأن WireGuard جزء من نواة لينكس نفسها.
لماذا تحتاج VPN خاصًا على سيرفرك؟
هذا الدليل عن الاستخدامات المشروعة التي تحتاجها الشركات والفرق التقنية:
دخول آمن لأنظمة الشركة. منافذ قواعد البيانات ولوحات الإدارة ومواقع الاختبار وSSH تبقى مغلقة أمام الإنترنت، ولا تُفتح إلا من داخل الشبكة الخاصة.
عنوان IP ثابت لقوائم السماح (allow-list). كثير من بوابات الدفع ولوحات البنوك والخدمات السحابية وجدران حماية العملاء لا تقبل الاتصال إلا من عناوين معروفة. إنترنت البيت أو الموبايل يغيّر عنوانه باستمرار، أما عنوان الـ VPS فثابت.
أمان على شبكات Wi-Fi العامة. في الكافيه أو الفندق تخرج كل بياناتك مشفرة إلى سيرفر تتحكم فيه أنت.
ربط فريق صغير. الموظفون عن بُعد وأجهزة الفروع يتواصلون عبر عناوين خاصة من نوع 10.x.
استخدم الـ VPN وفق القوانين المعمول بها في بلدك وبلد السيرفر، ووفق شروط الخدمة لدى المزوّد. هذه معلومات عامة وليست استشارة قانونية.
اختر موقع السيرفر أولًا
كل حزمة بيانات تمر عبر سيرفر الـ VPN، فالمسافة إليه تُضاف مباشرة إلى زمن الاستجابة. كقاعدة عامة اختر الموقع الأقرب لمن يستخدمون الـ VPN وللأنظمة التي يصلون إليها: فريق في مصر يتعامل مع سيرفرات في مصر يناسبه سيرفر في القاهرة، وفريق يتعامل مع خدمات في أوروبا قد يكون أفضل له برلين أو وارسو أو لندن. ويشرح مقال موقع السيرفر وسرعة الاستجابة للمستخدمين في مصر كيف تتحول المسافة إلى ميلي ثانية. تتوفر لدى IM HOST مراكز بيانات في نيويورك ووارسو وبرلين ولندن والقاهرة حسب التوفر، ونؤكد معك الموقع قبل التفعيل.
ولا يحتاج WireGuard معالجًا قويًا؛ VPS صغير يكفي فريقًا كاملًا بسهولة، والأهم هنا الباندويث والموقع لا عدد الأنوية.
الخطوة 1: تثبيت WireGuard
ابدأ من سيرفر مؤمَّن (مفاتيح SSH وجدار UFW مفعّل)، وتجد ذلك كله في دليل تأمين سيرفر لينكس VPS بمفاتيح SSH وUFW وFail2ban في أقل من ساعة.
sudo apt update
sudo apt install -y wireguard qrencodeحزمة qrencode اختيارية، وتسمح للموبايل باستيراد الإعداد بمسح رمز QR.
الخطوة 2: إنشاء المفاتيح
sudo -i
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee laptop.key | wg pubkey > laptop.pub
wg genkey | tee phone.key | wg pubkey > phone.pub
ls -lالأمر umask 077 يجعل الملفات الجديدة مقروءة لـ root فقط. لكل جهاز زوج مفاتيح خاص به، فتستطيع إلغاء جهاز واحد دون المساس بالباقي. إنشاء مفاتيح العملاء على السيرفر أسهل، أما الخيار الأكثر صرامة فهو إنشاء المفتاح داخل تطبيق WireGuard على الجهاز نفسه ونسخ المفتاح العام فقط إلى السيرفر. استخدم cat server.key وباقي الملفات لنسخ القيم إلى الإعدادات التالية.
الخطوة 3: ملف إعداد السيرفر
اعرف أولًا اسم واجهة الشبكة العامة، وهو الكلمة التي تأتي بعد dev في ناتج هذا الأمر، وغالبًا eth0 أو ens3 (يشرح دليل أهم أوامر لينكس لإدارة السيرفر أمر ip وأوامر الشبكة الأخرى):
ip route show defaultأنشئ الملف /etc/wireguard/wg0.conf واستبدل القيم المكتوبة بحروف كبيرة بمفاتيحك، وeth0 باسم واجهتك:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
[Peer]
# laptop
PublicKey = LAPTOP_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
[Peer]
# phone
PublicKey = PHONE_PUBLIC_KEY
AllowedIPs = 10.8.0.3/32النطاق 10.8.0.0/24 عناوين خاصة تُستخدم داخل النفق فقط؛ اختر نطاقًا آخر لو تعارض مع شبكة مكتبك. وقيمة AllowedIPs لكل جهاز هي العنوان الوحيد المسموح له باستخدامه. أما سطر PostUp فيُخفي حركة الـ VPN خلف عنوان السيرفر العام (masquerade)، وهذا ما يعطي كل الأجهزة نفس عنوان IP الخارجي الثابت.
الخطوة 4: تفعيل التمرير وفتح الجدار الناري
echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on eth0
sudo ufw reloadيمنع UFW الحزم المُمرَّرة افتراضيًا، لذلك قاعدة route allow ضرورية حتى تخرج الحركة من النفق. بدونها سيتصل العميل لكنه لن يصل إلى أي شيء بعد السيرفر.
الخطوة 5: تشغيل النفق
sudo systemctl enable --now wg-quick@wg0
sudo wg showيعرض wg show الواجهة ومنفذها وكل الأجهزة المسجلة. وبعد اتصال أي جهاز يظهر سطر latest handshake بوقت حديث وتبدأ عدادات النقل في الزيادة.
الخطوة 6: إعداد الأجهزة (العملاء)
أنشئ ملفًا لكل جهاز، مثل laptop.conf، واستبدل 203.0.113.10 بعنوان سيرفرك. ملف الموبايل مماثل، لكن بالمفتاح الخاص للموبايل والعنوان 10.8.0.3/32:
[Interface]
PrivateKey = LAPTOP_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25سطر AllowedIPs في جهاز العميل يحدد ما يمر عبر النفق:
نفق جزئي (split tunnel) بالقيمة
10.8.0.0/24كما في المثال: فقط الحركة الموجهة لشبكة الـ VPN تمر عبره. مناسب للوصول إلى سيرفرات الشركة مع بقاء التصفح العادي محليًا وسريعًا.نفق كامل (full tunnel): استبدل السطر بالسطر التالي لتخرج كل حركة IPv4 من عنوان السيرفر. استخدمه لقوائم السماح وشبكات Wi-Fi العامة.
AllowedIPs = 0.0.0.0/0هذا الإعداد يمرر IPv4 فقط. إضافة IPv6 داخل النفق ممكنة لكنها تحتاج عناوين وقواعد جدار ناري إضافية، فاعتبرها خطوة لاحقة. أما PersistentKeepalive = 25 فيُبقي الاتصال حيًا عبر راوترات البيت وشبكات الموبايل.
ويندوز وماك
ثبّت تطبيق WireGuard الرسمي، واختر Import tunnel(s) from file، وحدد ملف .conf، ثم اضغط Activate. ولو تفضّل ألا يغادر المفتاح الخاص جهازك، استخدم خيار "Add empty tunnel" الذي ينشئ زوج المفاتيح محليًا.
أندرويد وآيفون
ثبّت WireGuard من Google Play أو App Store، واضغط + واختر مسح رمز QR. وعلى السيرفر، بعد حفظ إعداد الموبايل في /etc/wireguard/phone.conf، اعرضه كرمز QR:
qrencode -t ansiutf8 < /etc/wireguard/phone.confاحذف ملفات إعداد العملاء من السيرفر بعد استيرادها على كل الأجهزة، فهي تحتوي على مفاتيح خاصة.
الخطوة 7: إضافة أو حذف جهاز دون فصل الباقين
أضف قسم [Peer] جديدًا (أو احذف قسمًا) في wg0.conf، ثم طبّق التغيير مباشرة:
sudo bash -c 'wg syncconf wg0 <(wg-quick strip wg0)'الأجهزة المتصلة تظل متصلة. وحذف قسم جهاز ثم المزامنة يلغي صلاحيته فورًا، وهذه هي الطريقة الصحيحة عند خروج موظف أو ضياع موبايل.
الخطوة 8: اقصر خدمات الإدارة على الـ VPN
بعد أن يعمل النفق، أغلق المنافذ الحساسة أمام العامة واسمح بها فقط عبر wg0:
sudo ufw allow in on wg0 to any port 22 proto tcp
sudo ufw allow in on wg0 to any port 5432 proto tcpجرّب من جهاز متصل بالـ VPN عبر ssh [email protected] قبل حذف قاعدة SSH العامة، واترك جلسة ثانية مفتوحة أثناء التغيير. ولقوائم السماح في الأنظمة الأخرى، أضف عنوان سيرفر الـ VPN العام إليها.
حل المشاكل الشائعة
لا يحدث handshake: منفذ UDP 51820 مغلق (راجع
sudo ufw statusوشبكة العميل)، أو عنوان السيرفر في Endpoint خطأ، أو مفتاح عام موضوع في الجهة الخطأ. السيرفر يحتاج المفتاح العام لكل عميل، وكل عميل يحتاج المفتاح العام للسيرفر.يوجد handshake لكن لا إنترنت: التمرير غير مفعّل، أو اسم الواجهة في
PostUpخطأ، أو قاعدةufw routeناقصة.المواقع لا تفتح أو تفتح ببطء شديد: راجع سطر
DNSفي إعداد العميل.بعض المواقع تعلق وأخرى تعمل: مشكلة MTU في المسار. أضف
MTU = 1380تحت[Interface]في جهاز العميل وأعد الاتصال.
أسئلة شائعة
هل WireGuard أفضل من OpenVPN؟
في أغلب الإعدادات الجديدة هو أبسط وأسرع: كود أصغر بكثير، وتشفير حديث، وإعادة اتصال سريعة على شبكات الموبايل، ويعمل داخل نواة لينكس. ويظل OpenVPN مناسبًا عندما تحتاج TCP على المنفذ 443 أو لديك بنية OpenVPN قائمة.
ما المنفذ الذي يستخدمه WireGuard؟
أي منفذ UDP تحدده في ListenPort، والقيمة الشائعة 51820. ولا يستخدم WireGuard بروتوكول TCP.
كم جهازًا يمكن ربطه بسيرفر WireGuard واحد؟
لا يوجد حد صغير مدمج. كل جهاز يحتاج قسم peer وعنوانًا خاصًا به، والنطاق /24 يعطيك أكثر من 250 عنوانًا، وVPS صغير يتحمل فريقًا عاديًا دون ضغط.
هل يعطيني VPN على VPS عنوان IP ثابتًا؟
نعم. في وضع النفق الكامل يخرج كل جهاز متصل من عنوان IPv4 المخصص للـ VPS، فتضيف هذا العنوان الواحد إلى قوائم السماح.
يحتاج WireGuard صلاحيات root وسيرفرًا بنواة مستقلة (راجع لماذا يهم KVM لوحدات النواة)، وهذا ما يوفره كل سيرفر Linux VPS من IM HOST مع عنوان IPv4 مخصص. اختر الموقع الأقرب لفريقك، ولو لم تعمل أي خطوة كما هو موضح، فمهندسونا متاحون 24/7.
المزيد من مدونتنا
اكتشف المزيد من الأدلة العملية ورؤى الخدمات من فريق IM Host.
عرض كل المقالات