دليل عملي
كيفية إعداد خادم VPN باستخدام WireGuard على Ubuntu عبر سكربت
ابدأ بخادم Ubuntu جديد وانتهِ باتصال VPN شخصي. يشرح الدليل إعداد الخادم وملفات الأجهزة والتحقق من مرور اتصال الإنترنت عبر النفق.
تم اختبار إعداد الخادم والاتصال من حاوية Linux وسرعة Windows. اختبارات macOS وUbuntu Desktop وiPhone وAndroid على الأجهزة نفسها لم تكتمل بعد.
متى يناسبك هذا الإعداد؟
يناسبك إذا أردت VPN شخصيًا يخرج إلى الإنترنت عبر خادم تختاره، وكانت شبكتك تسمح باتصالات WireGuard. أنت تختار المزوّد وموقع الخادم والأجهزة المسموح لها بالاتصال.
إذا كانت شبكتك تحجب VPN، فقد لا يناسبها WireGuard العادي. فهو لا يخفي اتصاله على هيئة تصفح ويب عادي. قد يتعذر الوصول إلى خادم مضبوط بشكل صحيح عبر مزوّد الإنترنت لديك. ضع ذلك في الحسبان قبل دفع تكلفة VPS.
للشبكات التي تحجب VPN، فكّر في AmneziaWG أو Xray مع VLESS وREALITY. يدعم AmneziaVPN إعدادها على خادمك الخاص. صُممت لمقاومة الاكتشاف والحجب، لكنها لا تضمن الاتصال من كل شبكة.
1. اختر الخادم وجهّز الوصول
يشرح الدليل التثبيت من الصفر على VPS بنظام Ubuntu 26.04 LTS. تحتاج إلى IPv4 عام وكلمة مرور root أو مفتاح SSH. اختر المزوّد والمنطقة المناسبين لك.
نستخدم في هذا الدليل VPS بموارد 1 vCPU وذاكرة RAM بسعة 1 GB.
اختر IPv4 للاتصال من شبكات لا تدعم IPv6. الخادم الذي يملك IPv6 فقط يحتاج ترتيبات إضافية للوصول إلى مواقع IPv4 فقط، ولا يغطيه هذا الدليل.
أمان الخادم: يغطي الدليل تثبيت VPN، وليس الحماية والصيانة الكاملة لـVPS. يضبط السكربت الجدار الناري لـSSH وWireGuard. تبقى تحديثات الأمان وحماية الوصول مسؤوليتك. استخدم مفتاح SSH، وفعّل المصادقة الثنائية لحساب الاستضافة، واحمِ ملفات VPN مثل كلمات المرور. لا تعطّل دخول SSH بكلمة مرور إلا بعد التأكد من عمل الدخول بالمفتاح.
2. تحقق من تسجيل الدخول عبر SSH
Windows: ابحث عن PowerShell في Start وافتحه. Mac: اضغط Command+Space واكتب Terminal ثم Enter. Ubuntu Desktop: اضغط Ctrl+Alt+T.
استبدل SERVER_IP في جميع الأوامر بعنوان IPv4 العام من لوحة الخادم. مثلًا ssh root@SERVER_IP يتصل بحساب root.
اختر أمر كلمة المرور أو أمر المفتاح إذا كان لديك مفتاح SSH. استبدل مسار المفتاح النموذجي بمسارك.
قد يسأل SSH أول مرة هل تثق بالخادم. تحقق أن العنوان يخص VPS الذي أنشأته، ثم اكتب yes واضغط Enter. أدخل كلمة مرور root عند الطلب؛ لن تظهر الأحرف أثناء الكتابة.
بعد الدخول، شغّل أمر الخادم أدناه للتحقق من Ubuntu، ثم exit للعودة إلى حاسوبك.
ssh root@SERVER_IPssh -i ~/.ssh/id_ed25519 root@SERVER_IPcat /etc/os-release
exitإذا لم يُعثر على الأمر ssh
في Windows، افتح PowerShell بخيار Run as administrator ونفّذ الأمر أدناه. بعد التثبيت أغلقه وافتح PowerShell عاديًا. في Ubuntu استخدم أمر Ubuntu. يتضمن macOS عميل SSH.
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0انسخ الأمر كما هو. OpenSSH.Client~~~~0.0.1.0 معرّف مكوّن Windows؛ لا تغيّر علامات التلدة أو الأرقام.
sudo apt update
sudo apt install openssh-client3. نزّل حزمة التثبيت وافحصها
نزّل ZIP وفك ضغطه. احتفظ بالسكربتات معًا في مجلد wireguard-guide. اتبع مسار Windows أو Mac أو Ubuntu فقط حسب حاسوبك.
يثبّت السكربت WireGuard على VPS ويحفظ ملف VPN على حاسوبك عبر اتصال SSH واحد طوال الإعداد. عند الدخول بكلمة مرور، تُطلب مرة واحدة في التشغيل الناجح ولا يحفظها السكربت.
يتكون اسم الملف من 1–15 حرفًا إنجليزيًا كبيرًا أو صغيرًا أو أرقام أو شرطات، ويبدأ بحرف. المسافات غير مسموحة. أمثلة: my-wg-vpn وmy-laptop وmy-phone. إذا لم تحدد الاسم، يسألك السكربت؛ اضغط Enter لاستخدام my-wg-vpn. الاسم غير الصحيح يتيح محاولة أخرى. استخدم اسمًا مختلفًا لكل جهاز إضافي.
لتنزيل ملف موجود، شغّل السكربت واختر 2 (Manage existing server)، واتصل ثم اختر 9 (Download profile). أدخل اسماً من القائمة؛ يلغي Enter دون اسم العملية. يستخدم التنزيل اتصال SSH نفسه دون طلب كلمة مرور الخادم مجدداً. يستبدل التنزيل الناجح الملف المحلي الذي يحمل الاسم نفسه.
4a. إعداد الخادم من Windows
افتح مجلد wireguard-guide المستخرج في File Explorer. اكتب powershell في شريط العنوان واضغط Enter لفتحه في المجلد الصحيح.
نفّذ أحد الأوامر. استبدل SERVER_IP بعنوان VPS، واستبدل مسار المفتاح إن كنت تستخدمه.
اختر 1 (Set up server)، وأدخل عنوان IP للخادم واسم الملف الشخصي، ثم مسار مفتاح SSH أو اضغط Enter. يحتفظ Enter بالاسم المقترح. راجع الملخص واكتب yes/y للمتابعة؛ اكتب no للإلغاء. بعد 3 إجابات غير معروفة، يغلق السكربت. يظهر تقدم التثبيت. يمكنك أيضاً الضغط على Enter للمتابعة.
يُحفظ الملف الشخصي داخل مجلد المستخدم في WireGuard/SERVER_IP/my-wg-vpn.conf. يعرض السكربت المسار الكامل.
.\Connect-WireGuardServer.ps1.\Connect-WireGuardServer.ps1 -Server SERVER_IP -ProfileName my-wg-vpn.\Connect-WireGuardServer.ps1 -Server SERVER_IP -ProfileName my-wg-vpn -IdentityFile "$HOME\.ssh\id_ed25519"إذا منع PowerShell السكربت
إذا قالت الرسالة إن الملف المنزّل غير موقّع رقميًا، نفّذ هذا الأمر في المجلد نفسه ثم أعد أمر الإعداد.
Unblock-File -LiteralPath .\Connect-WireGuardServer.ps1, .\ManagementClient.ps1إذا كان تشغيل السكربتات معطّلًا، نفّذ الأوامر ووافق على الطلب ثم أعد المحاولة. ينتهي هذا التغيير عند إغلاق نافذة PowerShell.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Unblock-File -LiteralPath .\Connect-WireGuardServer.ps1, .\ManagementClient.ps1إذا بقي خطأ السياسة، توقّف واحتفظ بالرسالة للتشخيص.
4b. إعداد الخادم من Mac
افتح Terminal واكتب cd ثم مسافة. اسحب مجلد wireguard-guide من Finder إلى Terminal واضغط Enter.
نفّذ أحد الأمرين مع bash في البداية. استبدل SERVER_IP ومسار المفتاح إن استُخدم. my-wg-vpn اسم الملف؛ استخدم اسمًا آخر مثل macbook لجهاز Mac ثانٍ.
يُحفظ الملف الشخصي داخل مجلد المستخدم في WireGuard/SERVER_IP/my-wg-vpn.conf. يعرض السكربت المسار الكامل.
اختر 1 (Set up server)، وأدخل عنوان IP للخادم واسم الملف الشخصي، ثم مسار مفتاح SSH أو اضغط Enter. يحتفظ Enter بالاسم المقترح. راجع الملخص واكتب yes/y للمتابعة؛ اكتب no للإلغاء. بعد 3 إجابات غير معروفة، يغلق السكربت. يظهر تقدم التثبيت. يمكنك أيضاً الضغط على Enter للمتابعة.
bash ./connect-wireguard-server.shbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpnbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpn 22 ~/.ssh/id_ed255194c. إعداد الخادم من Ubuntu Desktop
اضغط Ctrl+Alt+T. اكتب cd ثم مسافة، واسحب مجلد wireguard-guide إلى Terminal ثم اضغط Enter.
استبدل SERVER_IP وشغّل أحد الأمرين. my-wg-vpn اسم ملف الجهاز. لا يحتاج هذا المشغّل أو تسجيل دخول SSH إلى sudo.
يُحفظ الملف الشخصي داخل مجلد المستخدم في WireGuard/SERVER_IP/my-wg-vpn.conf. يعرض السكربت المسار الكامل.
اختر 1 (Set up server)، وأدخل عنوان IP للخادم واسم الملف الشخصي، ثم مسار مفتاح SSH أو اضغط Enter. يحتفظ Enter بالاسم المقترح. راجع الملخص واكتب yes/y للمتابعة؛ اكتب no للإلغاء. بعد 3 إجابات غير معروفة، يغلق السكربت. يظهر تقدم التثبيت. يمكنك أيضاً الضغط على Enter للمتابعة.
bash ./connect-wireguard-server.shbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpnbash ./connect-wireguard-server.sh SERVER_IP my-wg-vpn 22 ~/.ssh/id_ed25519قبل الاتصال: ماذا يحدث إذا توقف VPN؟
Full tunnel يوجّه حركة الإنترنت العادية عبر VPN ما دام الملف مفعّلًا.
Kill switch يمنع اتصالات الإنترنت خارج VPN. يعتمد سلوكه على التطبيق والإعدادات؛ تعذر الوصول إلى الخادم، وإيقاف الملف يدويًا، وإعادة تشغيل الجهاز حالات مختلفة. ينشئ هذا الدليل ملف full tunnel، لكنه لا يضبط حظرًا دائمًا موحدًا للاتصالات دون VPN على كل الأجهزة. من دون حماية إضافية، قد يعيد تعطيل الملف اتصال الإنترنت المعتاد.
Windows: يفعّل العميل الرسمي مفتاح القطع تلقائيًا للملف الذي ينشئه السكربت. تعمل الحماية ما دام النفق مفعّلًا. تعطيل الملف يدويًا يعيد الإنترنت العادي.
Android: ابحث في إعدادات الهاتف عن VPN ثم إعدادات WireGuard. فعّل Always-on VPN وBlock connections without VPN لحظر الاتصالات خارجه؛ الخيار الأول وحده لا يكفي. قد تختلف الأسماء والمواقع حسب الهاتف. أثناء تفعيل الحظر، يعني تعذر VPN تعذر الإنترنت أيضًا.
Mac وiPhone: تتصل On-Demand تلقائيًا وفق القواعد المحددة. لا تعتبرها مفتاح قطع دائمًا.
Ubuntu Desktop: الاستيراد عبر NetworkManager أدناه لا ينشئ مفتاح قطع منفصلًا؛ يتطلب ذلك قواعد إضافية للجدار الناري على حاسوبك.
تعذر الخادم يختلف عن تعطيل ملف VPN. إذا توقف الخادم عن الرد وبقي الملف مفعّلًا، فقد تتوقف حركة الإنترنت فقط؛ لا يعني ذلك بالضرورة الانتقال لاتصال خارج VPN.
5a. توصيل Windows أو macOS
ثبّت تطبيق WireGuard الرسمي لنظامك. استورد ملف .conf الناتج ووافق على إذن VPN ثم فعّل النفق. قد تختلف تسمية الاستيراد باختلاف إصدار التطبيق.
يوجّه الملف IPv4 إلى النفق ويتضمن مسارًا افتراضيًا لـIPv6 لمنع تجاوزه للـVPN. لا يوفر الخادم اتصال إنترنت IPv6. تحقّق من سلوك جهازك بالاختبارات أدناه.
يحتوي الملف على مفتاح خاص. من يملك نسخة يمكنه محاولة استخدام هوية VPN لهذا الجهاز. لا تضعه في طلبات الدعم أو مولدات QR على الإنترنت، ولا تشاركه بين الأجهزة.
5b. توصيل Ubuntu Desktop عبر NetworkManager
يستورد NetworkManager الملف ويدير DNS والمسارات دون الاعتماد على نسخة واجهة الاستيراد الرسومية. شغّل الأوامر على حاسوبك لا داخل SSH إلى VPS. تأكد أولًا من توفر nmcli وتشغيل NetworkManager.
يُنشئ my-wg-vpn.conf اتصالًا باسم my-wg-vpn. إذا كان الاسم موجودًا فاختر اسم جهاز آخر وعدّل الأوامر. استورد مرة واحدة؛ بعد ذلك استخدم up وdown. الإعداد أدناه يعطّل الاتصال التلقائي عند بدء الحاسوب.
تعطي إعدادات DNS الأولوية لهذا الاتصال لكل الأسماء أثناء تشغيله. قد يستخدم المتصفح DNS آمنًا مختلفًا. نفّذ فحوص IP وDNS وIPv6 في الخطوة 7. هذه الطريقة لم تُختبر بعد على Ubuntu Desktop فعلي؛ اختبار الحاوية لا يثبت سلوك DNS وIPv6 على سطح المكتب.
لا تُفعّل الملف نفسه أيضًا عبر wg-quick، فقد تتعارض المسارات. يمكنك الفحص وقطع الاتصال عبر nmcli ولو اختلف عرضه في الواجهة.
nmcli --version
systemctl is-active NetworkManagersudo nmcli connection import type wireguard file "$HOME/WireGuard/SERVER_IP/my-wg-vpn.conf"
sudo nmcli connection modify my-wg-vpn connection.autoconnect no ipv4.dns-priority -50 ipv4.dns-search "~."sudo nmcli connection up my-wg-vpn
nmcli connection show --activesudo nmcli connection down my-wg-vpn6. توصيل iPhone أو Android برمز QR
ثبّت تطبيق WireGuard الرسمي من رابط App Store أو Google Play أدناه.
من حاسوبك، ادخل مجددًا إلى VPS باستخدام ssh root@SERVER_IP أو أمر مفتاح SSH. أمر الهاتف أدناه ينشئ ملفًا ويعرض رمز QR.
في WireGuard على الهاتف، اختر إضافة نفق بمسح QR. امسح الرمز المعروض على الحاسوب وسمّ الاتصال ووافق على إذن VPN ثم فعّله.
استخدم ملفًا منفصلًا لكل هاتف. لا تشارك QR فهو يمنح وصولًا إلى VPN. إذا تقطّعت أسطر الرمز، كبّر نافذة Terminal واعرضه مجددًا.
python3 /root/internetspeed-wireguard/manage-client.py add iphone
qrencode -t ANSIUTF8 < /etc/wireguard/clients/iphone.confpython3 /root/internetspeed-wireguard/manage-client.py add android
qrencode -t ANSIUTF8 < /etc/wireguard/clients/android.conf7. تحقق من مرور الإنترنت عبر VPN
قبل تشغيل VPN، افتح My IP عبر الرابط أدناه وسجّل عنوانك. فعّل WireGuard وحدّث My IP وقارن النتيجة بعنوان IPv4 العام للخادم.
إذا فُتحت الصفحة وعرضت عنوان VPS، فاتصال المتصفح يمر عبر VPN. إذا بقي العنوان القديم، راجع قسم حل المشكلات.
هذا يثبت اتصال المتصفح، وليس كل التطبيقات أو الحماية عند انقطاع VPN. الفحوص الإضافية أدناه تخص DNS وIPv6.
اختياري: فحص IPv6 وDNS
IPv6: افتح Test IPv6 قبل الاتصال وسجّل هل يظهر عنوان IPv6. فعّل VPN وكرّر الاختبار. يُفترض ألا يعمل إنترنت IPv6 في هذا الإعداد. ظهور عنوان IPv6 المعتاد يعني أنه يتجاوز النفق. إن لم يكن IPv6 متاحًا أصلًا، فلا يكشف الاختبار السلوك على شبكة تدعمه.
DNS: مع تشغيل VPN، نفّذ Standard test في DNS Leak Test. يستخدم الملف Cloudflare DNS. إذا ظهر مزوّد الإنترنت المنزلي، افحص DNS الجهاز. قد يأتي مزوّد آخر من Secure DNS في المتصفح؛ يستدعي ذلك التحقيق ولا يثبت تسربًا تلقائيًا. لا تضمن هذه النتائج حماية كل التطبيقات.
8. حل مشكلات الاتصال
إذا عرض My IP عنوانك المعتاد، تحقق من تشغيل الاتصال المستورد في WireGuard. أوقفه وشغّله مرة ثم حدّث الصفحة.
إذا توقفت المواقع مع VPN، أوقفه وجرب الصفحة نفسها. إن فشلت أيضًا بدونه، أصلح الإنترنت العادي أولًا. إن نجحت بدونه، نفّذ الفحوص أدناه.
للمقارنة، صِل الحاسوب بنقطة اتصال الهاتف وجرب VPN. على الهاتف عطّل Wi-Fi وجرب بيانات الجوال. هذه مقارنة مؤقتة وقد تُحتسب رسوم بيانات. نجاحه على الجوال فقط يربط المشكلة باتصال Wi-Fi لكنه لا يحدد السبب بدقة.
إذا توقف الإعداد بخطأ، احتفظ بآخر رسالة. بعد إصلاح السبب، أعد الأمر بنفس اسم الجهاز؛ يحتفظ السكربت بالملف الموجود.
تحقق من تشغيل خادم VPN
ادخل عبر SSH كما في الخطوة 2 ونفّذ الأمر. النتيجة المتوقعة active. عند inactive أو failed أعد التشغيل بالأمر ثم افحص مجددًا. إن لم تصبح active، احتفظ بالخطأ.
systemctl is-active wg-quick@wg0systemctl restart wg-quick@wg0
systemctl is-active wg-quick@wg0تقطع إعادة التشغيل اتصال الأجهزة لفترة قصيرة.
تحقق من وصول الجهاز إلى الخادم
فعّل VPN وافتح My IP ثم نفّذ wg show على الخادم. ابحث عن latest handshake تحت الجهاز. مثلًا 10 seconds ago يعني إنشاء اتصال مشفر مؤخرًا. غياب السطر يعني عدم تسجيل اتصال ناجح لهذا الجهاز بعد.
إذا لم يظهر اتصال حديث، افحص Endpoint في الملف: عنوان VPS متبوعًا بـ:51820. افتح Firewall أو Security groups في لوحة VPS. إذا وُجد جدار ناري مرتبط به، اسمح بوارد UDP على المنفذ 51820. تختلف الشاشة حسب المزوّد؛ السكربت يضبط جدار Ubuntu بالفعل.
إذا ظهر handshake حديث والمواقع لا تعمل، سجّل النتيجة وخطأ التطبيق أو سجله. تغيير إعدادات متقدمة عشوائيًا قد يصعّب التشخيص.
wg show9. ما السرعة المتوقعة؟
في اختبار Windows حققنا تنزيلًا نحو 450–500 Mbps ورفعًا 450–500 Mbps بنفس طريقة اختبارات VPN الأخرى في المشروع. المسار: المستخدم في سان دييغو ← خادم VPN في منطقة خليج سان فرانسيسكو ← خادم القياس في سياتل.
الخادم Vultr Shared CPU (vc2-1c-1gb): 1 vCPU وRAM 1 GB وترافيك شهري 1 TB؛ بسعر 5 دولارات أمريكية شهريًا عند إنشائه.
في اختبار منفصل، حقق خادم Vultr Shared CPU Intel High Frequency (vhf-1c-1gb; 1 vCPU, 1 GB RAM)، بسعر 6 دولارات أمريكية شهريًا، نحو 550–750 Mbps للتنزيل والرفع معًا. اختُبرت الباقتان على Windows بالطريقة نفسها والمسار نفسه: سان دييغو ← خادم VPN في منطقة خليج سان فرانسيسكو ← خادم القياس في سياتل.
اختلفت النتائج بين خوادم Intel High Frequency التي اختبرناها: حقق بعضها باستمرار سرعات قرب الحد الأعلى للنطاق، بينما بقي البعض الآخر أقرب إلى الحد الأدنى. اختيار هذه الباقة وحده لم يضمن سرعة 750 Mbps.
هذه نتائج هذا الإعداد. تعتمد سرعتك على اتصالك والخادم والموقع.
10. التكاليف والخصوصية وحدود المزوّد
يمنحك VPN الخاص التحكم بالإعداد وموقع خروج واحد. أنت مسؤول عن التحديثات والفواتير ووصول الأجهزة والاستعادة. لا يجعلك مجهولًا لدى مزوّد الاستضافة ولا يغني عن HTTPS.
كانت تكلفة خوادم الاختبار 5 و6 دولارات شهريًا. تختلف الأسعار والعتاد وحصص الترافيك حسب المزوّد والمنطقة. عند المقارنة باشتراك VPN، تذكّر أن VPS واحدًا يوفر موقعًا واحدًا تختاره، وأنك تتولى صيانته.
التصفح والفيديو والتنزيل والرفع واختبارات السرعة تستهلك حصة VPS. راقب المتبقي في لوحة الاستضافة. قد يؤدي التجاوز إلى رسوم أو قيود حسب الباقة.
قبل P2P، راجع شروط الاستخدام الحالية والقانون المطبق. البروتوكول وحقوق المحتوى مسألتان منفصلتان. نزّل وشارك فقط ما يحق لك؛ لا تسمح كل الاستضافات بكل استخدامات P2P.
قد تواجه عناوين مراكز البيانات CAPTCHA أو قيود خدمات وبث. WireGuard العادي لا يضمن الوصول من كل شبكة مفلترة. VPS واحد يعني نقطة تعطل واحدة دون مجموعة مواقع وخوادم بديلة كالمزوّدين الكبار.
11. إضافة أجهزة وإلغاء الوصول وصيانة الخادم
خصص ملفًا لكل جهاز. لإلغاء وصول ملف VPN، اتصل بالخادم عبر SSH ونفّذ أمر الحذف أدناه، مستبدلًا iphone باسم الملف. ثم احذف النسخ المحفوظة من الملف أو رمز QR. حذف الملف من الجهاز وحده لا يلغي الوصول على الخادم.
حافظ على تحديثات أمان Ubuntu وافحص الحاجة لإعادة التشغيل. أعد التشغيل بوقت مناسب وتحقق من عودة VPN. احمِ حساب الاستضافة وSSH؛ غيّر مصادقة SSH كخطوة منفصلة مع وسيلة دخول بديلة مجرّبة.
يوقف سكربت الإزالة هذا VPN ويحذف إعداداته وقواعد الجدار التي يديرها. يبقي SSH وUFW والحزم. يبقى تمرير الحزم نشطًا حتى تطبيق سياسة النظام عند إعادة التشغيل. إزالة VPN لا تلغي فاتورة VPS؛ احفظ المطلوب ثم احذف الخادم لدى المزوّد عندما لا تحتاجه.
python3 /root/internetspeed-wireguard/manage-client.py remove iphoneapt update
apt list --upgradable
test ! -f /var/run/reboot-required || cat /var/run/reboot-requiredتعرض هذه الأوامر التحديثات المتاحة والحاجة إلى إعادة التشغيل، لكنها لا تثبّت التحديثات. اضبط تحديثات الأمان وحماية VPS الأوسع بشكل منفصل عن تثبيت VPN.
bash /root/internetspeed-wireguard/remove-server.sh --confirm