تخطَّ إلى المحتوى الرئيسي
خصم ٥٠٪ جميع الخطط، لفترة محدودة. تبدأ من $2.48/mo
12 min left
الأمان والشبكات

كيفية إعداد WireGuard VPN على خادم VPS

Pius Bodenmann بواسطة Pius Bodenmann 12 دقيقة قراءة تم التحديث بواسطة Mir 12d ago
WireGuard VPN tunnel active on an Ubuntu VPS terminal and a phone client

توفّر شبكة WireGuard VPN المستضافة ذاتيًا لحاسوبك المحمول وهاتفك مسارًا مشفّرًا إلى خادم تتحكم به. وهي مفيدة عندما تريد عنوان IP خروج ثابتًا، أو وصولًا آمنًا عبر شبكة Wi-Fi غير موثوقة، أو مسارًا خاصًا إلى شبكة أخرى. لكنها لا تجعلك مجهول الهوية: فالمواقع لا تزال ترى عنوان VPS واحدًا، ومزوّد الاستضافة لا يزال يشغّل الشبكة الأساسية.

يبني هذا الدليل شبكة VPN بنفق كامل عبر IPv4 على Ubuntu Server. ستقوم بتثبيت WireGuard، وتوليد المفاتيح بأذونات مقيّدة، وتمكين التوجيه، وإضافة قواعد جدار الحماية وNAT، وتوصيل عملاء سطح المكتب والهواتف، والتحقق من النفق. يمكن للتصميم نفسه دعم IPv6، لكن فقط بعد أن يحصل الخادم على مساحة IPv6 موجَّهة وتقوم بإعداد إعادة التوجيه وقواعد جدار الحماية لـ IPv6 بشكل منفصل.

ما هو WireGuard؟

‏WireGuard هو بروتوكول VPN حديث ومتعدد المنصات مع تطبيقه العملي، ينقل حزم IP المشفّرة عبر UDP. إن مواصفات بروتوكول WireGuard تحدّد مجموعة ثابتة من البدائيات التشفيرية، منها ChaCha20-Poly1305 وCurve25519 وBLAKE2s وSipHash24 وHKDF. هذا التصميم المحدود عن قصد يجعل الإعداد والتدقيق أبسط من البروتوكولات التي تضم مجموعات تشفير كثيرة قابلة للتبديل.

لا يملك WireGuard نظام حسابات مركزيًا ولا دليل مستخدمين مدمجًا. كل جهاز هو نظير له زوج مفاتيح خاص به وعنوان داخل النفق وقواعد AllowedIPs. على خادم VPS، يعمل أحد النظراء عادةً كبوابة متصلة بالإنترنت، بينما تبدأ الحواسيب المحمولة والهواتف الاتصال به.

لماذا تستخدم WireGuard على خادم VPS؟

  • نموذج نظراء بسيط: يحصل كل جهاز على زوج مفاتيح واحد وإدخال نظير واحد.
  • سطح هجوم صغير: يستخدم WireGuard بروتوكولًا مضغوطًا ومجموعة تشفير ثابتة بدلًا من عرض قائمة طويلة من الخيارات القديمة.
  • أداء جيد: يمكن للتكامل مع نواة Linux والتشفير الفعّال أن يوفّرا إنتاجية عالية، رغم أن النتيجة تبقى مرهونة بالمعالج وسعة الشبكة وزمن الاستجابة وحجم الحزم.
  • عملاء متعددو المنصات: تتوفر عملاء رسميون لأنظمة Windows 10 و11 وmacOS وAndroid وiOS، بينما توفّر Linux وعدة أنظمة BSD أدوات أو حزمًا أصلية.
  • التجوال: يمكن للنظير تغيير الشبكات وعناوين IP المصدر دون الحصول على هوية WireGuard جديدة؛ إذ يتعرّف الخادم على آخر نقطة نهاية موثّقة.
  • تحكّم واضح في التوجيه: تحدّد AllowedIPs الوجهات التي تمر عبر النفق وكذلك عناوين النفق التي تخصّ كل نظير.

قراءات ذات صلة: دليل Cloudzy لاختيار VPS مناسب لشبكات VPN. وللعمليات القديمة، راجع دليل Cloudzy لإعداد PPTP؛ ولا تختر PPTP لشبكة VPN جديدة تتطلب أمانًا.

تخطَّ الإعداد اليدوي: WireGuard بنقرة واحدة

إذا لم تكن لديك خلفية تقنية، أو كنت تفضّل عدم القيام بالإعداد بنفسك، فإن Cloudzy توفّر نشرًا لشبكة WireGuard VPN بنقرة واحدة. بقية هذا الدليل تتناول البناء اليدوي، أما هذا القسم فيتناول الطريق المختصر.

  1. سجّل الدخول إلى لوحة تحكم Cloudzy.
  2. اختر WireGuard من قائمة التطبيقات.
  3. أنشئ خادم VPS في الموقع الذي تريده بالخطة التي تختارها. يكفي جهاز Ubuntu بمواصفات أساسية.

بمجرد أن يصبح خادم VPS جاهزًا، سجّل الدخول ونفّذ الأمر التالي لعرض إعداداتك:

cat client.conf

ستظهر لك نتيجة مشابهة لهذه:

Terminal output of cat client.conf on a one-click WireGuard VPS, showing the Interface and Peer blocks with the keys and endpoint redacted

استخدم هذه الإعدادات لإنشاء نفق جديد في عميل WireGuard على حاسوبك، وبذلك يصبح الاتصال جاهزًا. أما إذا كنت تفضّل فهم كل جزء من الأجزاء، أو تحتاج إلى بنية لا تغطيها الصورة الجاهزة، فتابع مع البناء اليدوي أدناه.

كيفية إعداد WireGuard على Ubuntu

Six-step WireGuard setup cycle around a VPS: install, generate keys, configure wg0 with 10.8.0.1/24, enable forwarding between wg0 and eth0, add firewall and NAT rules on UDP 51820, then start and verify the interface

الأوامر أدناه موجّهة لإصدار حديث من Ubuntu Server. نفّذها عبر SSH بحساب مستخدم يملك صلاحية sudo. أبقِ جلسة SSH مفتوحة حتى تتأكد من إعداد جدار الحماية، وخذ نسخة لحظية من الخادم أولًا إن كان مزوّدك يدعم ذلك.

المتطلبات الأساسية

  • خادم VPS واحد بنظام Ubuntu وله عنوان IPv4 عام
  • حساب غير جذري (non-root) يملك صلاحية sudo
  • وصول SSH وتفاصيل وحدة التحكم للاسترداد لدى مزوّد الـ VPS
  • جهاز عميل واحد يحتوي على تطبيق WireGuard الرسمي أو أدوات سطر الأوامر

لست بحاجة إلى خادم Ubuntu ثانٍ. يمكن أن يكون العميل حاسوب Windows أو Mac أو حاسوبًا محمولًا بنظام Linux أو هاتف Android أو iPhone.

الخطوة 1: تثبيت WireGuard

sudo apt update
sudo apt install wireguard -y

تأكّد من توفّر الأدوات:

wg --version

الخطوة 2: توليد مفاتيح الخادم بأمان

أنشئ مجلد WireGuard وولّد زوج المفاتيح باستخدام umask مقيّد. يجب ألا يُنسخ المفتاح الخاص إلى أي عميل أو يظهر في السجلات إطلاقًا.

sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'

اعرض المفاتيح عندما تحتاج إلى لصقها في ملفات الإعداد:

sudo cat /etc/wireguard/server.key
sudo cat /etc/wireguard/server.pub

الخطوة 3: إنشاء إعدادات الخادم

افتح ملف إعدادات الواجهة:

sudo nano /etc/wireguard/wg0.conf

الصق الكتلة التالية واستبدل SERVER_PRIVATE_KEY بالمفتاح الخاص من الخطوة السابقة:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

شبكة النفق 10.8.0.0/24 مجرد مثال. اختر نطاقًا خاصًا آخر إذا تداخل مع شبكة منزلية أو مكتبية أو سحابية تحتاج للوصول إليها. ولا تضف SaveConfig = true: فقد يعيد كتابة الملف عند إيقاف الواجهة ويمحو التعديلات اليدوية.

sudo chmod 600 /etc/wireguard/wg0.conf

الخطوة 4: تفعيل إعادة توجيه IPv4

يجب أن يوجّه خادم VPS الحزم بين wg0 وواجهة الشبكة العامة الخاصة به. ضع هذا الإعداد في ملف sysctl مخصص:

sudo nano /etc/sysctl.d/70-wireguard-routing.conf
net.ipv4.ip_forward = 1

طبّقه ثم تحقّق منه:

sudo sysctl -p /etc/sysctl.d/70-wireguard-routing.conf
sysctl net.ipv4.ip_forward

يتبع هذا نموذج التوجيه الوارد في دليل Ubuntu لبوابة WireGuard. يحتاج IPv6 إلى بادئة IPv6 موجَّهة وعناوين نفق منفصلة وإعادة توجيه IPv6 وقواعد جدار حماية خاصة بـ IPv6؛ ولا ترسل حركة العميل إلى ::/0 قبل اكتمال هذا المسار.

الخطوة 5: إضافة قواعد جدار الحماية وNAT

اعثر على اسم الواجهة العامة للخادم. في المخرجات أدناه، لاحظ القيمة التي تلي dev؛ ومن الأسماء الشائعة eth0 وens3 وenp1s0.

ip route show default

أعد فتح wg0.conf وأضف الأسطر التالية ضمن [Interface]. واستبدل eth0 في كل موضع إذا كان اسم واجهتك العامة مختلفًا:

PostUp = iptables -I FORWARD 1 -i %i -o eth0 -j ACCEPT; iptables -I FORWARD 1 -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PreDown = iptables -D FORWARD -i %i -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

إذا كان UFW مفعّلًا، فاسمح بـ SSH قبل تغيير حالته، ثم افتح منفذ UDP الخاص بـ WireGuard:

sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw status

إذا كان UFW غير مفعّل حاليًا وأردت تفعيله، فتأكد أولًا من وجود قاعدة OpenSSH. ولا تعطّل UFW ثم تعيد تفعيله عبر SSH لمجرد تطبيق هذه القواعد؛ فذلك يضيف خطر فقدان الوصول دون داعٍ.

الخطوة 6: تشغيل واجهة WireGuard

sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show

إذا فشلت الخدمة، فشغّل journalctl قبل تغيير أي شيء آخر:

sudo journalctl -u wg-quick@wg0 -n 50 --no-pager

إضافة عميل WireGuard

A VPS at 10.8.0.1/32 holding separate peer entries for a laptop, tablet, and phone, each with its own keypair and /32 tunnel address, its private key staying on the device, and a QR code marked as containing a private key

يحتاج كل جهاز إلى زوج مفاتيح وعنوان IP خاص به داخل النفق. لا تعِد أبدًا استخدام إعدادات عميل واحدة على جهازين: فتكرار المفاتيح والعناوين يجعل التوجيه غير متوقّع ويمنع إلغاء الوصول بشكل نظيف.

الخطوة 1: توليد مفاتيح العميل

يمكن للتطبيقات الرسمية على سطح المكتب والهاتف توليد المفاتيح عند إنشاء نفق فارغ. أما على عميل يعمل بنظام Linux فاستخدم:

umask 077
wg genkey | tee client.key | wg pubkey > client.pub

احتفظ بملف client.key على ذلك الجهاز، ولا تنسخ إلى الخادم سوى client.pub.

الخطوة 2: إضافة النظير على الخادم

sudo nano /etc/wireguard/wg0.conf

أضف كتلة نظير واحدة، واستبدل CLIENT_PUBLIC_KEY بالمفتاح العام للعميل:

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

يحدّد السطر Address = 10.8.0.2/32 عنوان النفق على جهة العميل. وفي كتلة [Peer] على الخادم، يربط AllowedIPs = 10.8.0.2/32 ذلك العنوان بهذا النظير لأغراض التوجيه والتحقق من المصدر. استخدم 10.8.0.3/32 للجهاز التالي، ثم واصل تصاعديًا دون تكرار.

sudo systemctl restart wg-quick@wg0

الخطوة 3: إنشاء إعدادات العميل

أنشئ ملف client.conf على جهاز العميل واستبدل جميع القيم النائبة:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = VPS_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

يجعل AllowedIPs = 0.0.0.0/0 هذا نفقًا كاملًا عبر IPv4. وللوصول إلى شبكة VPN وحدها، استخدم AllowedIPs = 10.8.0.0/24. أما PersistentKeepalive فمفيد لعميل خلف NAT يحتاج أن يبقى تعيينه قابلًا للوصول أثناء الخمول؛ ويشير دليل البدء السريع لـ WireGuard دليل البدء السريع إلى أن معظم النظراء لا يحتاجون إليه.

الخطوة 4: استيراد الإعدادات

استخدم دليل تثبيت عملاء WireGuard للحصول على العميل المدعوم لمنصتك.

  • ويندوز: اختر Add Tunnel، ثم استورد ملف client.conf.
  • macOS: اختر Import tunnel(s) from file ثم حدّد ملف client.conf.
  • ‏Android أو iOS: استورد الملف أو امسح رمز QR المولَّد منه.

على عميل يعمل بنظام Ubuntu أو Debian ويحتوي على ملف client.conf، ثبّت qrencode واعرض الملف في طرفية ذلك العميل:

sudo apt install qrencode -y
qrencode -t ansiutf8 < client.conf

يحتوي رمز QR على المفتاح الخاص بالعميل. لا تعرضه إلا في طرفية موثوقة، ولا تحفظ لقطات شاشة له، وامسح محتوى الطرفية بعد أن يستورده الهاتف.

الخطوة 5: التحقق من النفق

فعّل النفق، وولّد بعض حركة البيانات من العميل، ثم نفّذ عمليات التحقق التالية على الخادم:

sudo wg show
ip -brief address show wg0

يؤكد وجود مصافحة حديثة وعدّادات نقل متزايدة أن WireGuard يتبادل الحزم فعلًا. بعد ذلك تحقّق من مخرج النفق الكامل من جهة العميل:

curl -4 https://api.ipify.org; echo

يفترض أن يعيد الأمر عنوان IPv4 العام للخادم. فإن لم تحدث مصافحة، فتحقّق من عنوان نقطة النهاية ومنفذ UDP وجدار الحماية السحابي وقاعدة UFW والمفاتيح. أما إذا حدثت المصافحة دون وصول إلى الإنترنت، فتحقّق من إعادة توجيه IP واسم الواجهة العامة وقواعد NAT وإعدادات DNS.

هل يمكن وضع WireGuard خلف Nginx؟

المستخدم توثيق وحدة stream في NGINX يشرح كيف يمكن لـ NGINX أن يمرّر حركة UDP من منفذ إلى آخر، فيوجّه UDP/80 أو UDP/443 إلى WireGuard على المنفذ UDP/51820. لكن هذا مجرد ترحيل UDP وليس وكيلًا عكسيًا لـ HTTP. فهو لا يحوّل WireGuard إلى TCP أو HTTPS، ولا يجعل البروتوكول يبدو كحركة ويب اعتيادية.

في معظم عمليات النشر، يكون تغيير قيمة ListenPort في WireGuard وفتح منفذ UDP المقابل أبسط من إضافة NGINX. وإذا كانت الشبكة تحجب UDP كليًا أو تستخدم الفحص العميق للحزم، فلن يحل ترحيل UDP عبر NGINX المشكلة. ويذكر توثيق قيود WireGuard توثيق قيود WireGuard أن التمويه خارج نطاق البروتوكول.

ربط خادم VPS بشبكة منزلية

A VPS hub relaying a roaming laptop and phone to a home gateway over WireGuard, with full-tunnel 0.0.0.0/0 and split-tunnel 192.168.1.0/24 paths, PersistentKeepalive on the home peer, and a warning that two overlapping 192.168.1.0/24 networks cannot route cleanly

يمكن لخادم VPS أن يعمل كنقطة وصل بين عميل متنقّل وجهاز داخل منزلك. فالنظير الموجود في المنزل هو من يبدأ اتصال WireGuard الصادر نحو الخادم، وهو ما يغنيك عن الحاجة إلى عنوان IP عام في المنزل. اضبط PersistentKeepalive على ذلك النظير المنزلي عندما يكون خلف NAT.

الوصول إلى شبكة المنزل المحلية بالكامل يتطلب أكثر من مجرد إضافة نظير. فمدخل النظير على الخادم الخاص بالبوابة المنزلية يجب أن يتضمن الشبكة الفرعية للمنزل ضمن AllowedIPs، مثل 192.168.1.0/24. أما العميل البعيد الذي يستخدم نفقًا كاملًا (AllowedIPs = 0.0.0.0/0) فهو يرسل حركة تلك الشبكة الفرعية عبر الخادم أصلًا؛ ولا تضف 192.168.1.0/24 إلى العميل إلا إذا كنت تستخدم النفق المجزّأ. كما يجب على البوابة المنزلية أن تمرّر الحركة بين WireGuard والشبكة المحلية. أضف إما مسارًا على موجّه المنزل أو قاعدة NAT محدّدة النطاق بعناية على البوابة المنزلية. وتحقّق أولًا من التداخل: فالعميل المتصل بشبكة أخرى تحمل النطاق 192.168.1.0/24 لا يستطيع توجيه الشبكتين بشكل سليم دون إعادة ترقيم أو توجيه قائم على سياسات أكثر تقدّمًا.

‏WireGuard المستضاف ذاتيًا مقابل خدمة VPN تجارية

الاستضافة الذاتية تغيّر من يشغّل شبكة VPN، لكنها لا تحسّن إخفاء الهوية تلقائيًا. فخادم VPS شخصي يمنحك عنوان خروج ثابتًا واحدًا يسهل ربطه بشبكة استضافة. أما الخدمة التجارية فتمنحك عادةً عناوين خروج مشتركة وتبديلًا سهلًا للمواقع، لكن عليك الاعتماد على سياساتها وطريقة تشغيلها وأي تدقيق مستقل تنشره.

‏WireGuard نفسه خفيف، وغالبًا ما يكون خادم VPS صغير نقطة انطلاق معقولة لشخص واحد وبضعة أجهزة. لا تعتبر رقمًا ثابتًا من الذاكرة أو الأنوية الافتراضية ضمانًا للإنتاجية. اختبر بعدد أجهزتك الفعلي ومنطقتك وحجم الحزم وعرض النطاق المتوقع، ثم غيّر الحجم إذا أصبح إشباع المعالج أو فقدان الحزم أو زمن الاستجابة هو العائق.

اختر الاستضافة الذاتية عندما يكون عنوان الخروج الشخصي الثابت أو الوصول عن بُعد أو التحكم بالخادم أهم من تنوّع المواقع والراحة. واختر خدمة VPN تجارية عندما تريد دولًا كثيرة ومخارج مشتركة ودعمًا واسعًا لأجهزة المستهلكين، وأن يتولى غيرك معالجة الأعطال.

عامل القرار‏WireGuard مستضاف ذاتيًاVPN تجاري
نموذج التكلفةخادم واحد إضافةً إلى وقتك في الإدارةاشتراك، غالبًا بخصم على المدد الأطول
مواقع الخروجموقع واحد لكل خادممواقع كثيرة متاحة داخل التطبيق
الإعدادأنت من يضبط المفاتيح والتوجيه وقواعد جدار الحماية والعملاءثبّت التطبيق وسجّل الدخول
الصيانةأنت من يحدّث ويراقب ويأخذ النسخ الاحتياطية ويعالج الأعطالالمزوّد هو من يشغّل الخدمة
نموذج الخصوصيةأنت تتحكم بالخادم، لكن مزوّد الاستضافة ما زال بإمكانه رؤية البيانات الوصفيةتعتمد على سياسات المزوّد وعلى أي تدقيق مستقل ينشره
الأنسب لـعنوان خروج شخصي ثابت، ووصول عن بُعد، وتحكم في البنية التحتيةتبديل المواقع، وصيانة قليلة، ودعم واسع للأجهزة

الخاتمة

يتلخص النشر الموثوق لـ WireGuard في خمسة أمور: مفاتيح خاصة محميّة، وعناوين نظراء فريدة، وقيم AllowedIPs صحيحة، وإعادة توجيه وNAT يعملان، وقاعدة جدار حماية لمنفذ UDP الذي يستمع عليه. تحقّق من المصافحة ومن عنوان الخروج العام معًا قبل أن تعتمد على النفق، وحافظ على تحديث الخادم بعد النشر.

إذا أردت بناء الخادم يدويًا، فابدأ من حل Cloudzy Ubuntu VPS. أما إذا كنت تفضّل تخطّي خطوات التثبيت، فاستخدم نشر WireGuard بنقرة واحدة من Cloudzy وانتقل مباشرةً إلى إعداد العملاء والتحقق.

الأسئلة الشائعة

لماذا يعرض WireGuard نظيرًا دون حدوث مصافحة؟

وجود مدخل نظير يثبت فقط أن الإعدادات قد حُمّلت. وغياب المصافحة يعني عادةً أن العميل لا يصل إلى الخادم أو أن المفاتيح غير متطابقة. تحقّق من قيمة Endpoint لدى العميل، ومن عنوان IP العام للخادم، ومن المنفذ UDP/51820 في جدار حماية المزوّد وفي UFW معًا، ومن المفاتيح العامة على الطرفين. وولّد بعض حركة البيانات من العميل قبل الفحص، لأن WireGuard يبقى صامتًا في حالة الخمول.

لماذا يتصل النفق بينما ينقطع الوصول إلى الإنترنت؟

حدوث المصافحة دون وصول إلى الإنترنت يشير عادةً إلى مشكلة في التوجيه لا في التشفير. تحقّق من قيمة net.ipv4.ip_forward، وتأكّد من اسم الواجهة العامة في قاعدة NAT، وراجع قواعد FORWARD، واختبر DNS بمعزل عن الاتصال عبر عنوان IP مباشر. وتأكّد أيضًا من أن قيمة AllowedIPs على العميل تطابق التصميم المقصود سواء كان نفقًا كاملًا أو مجزّأً.

هل يمكن لجهازين أن يتشاركا إعدادات WireGuard نفسها؟

لا. امنح كل جهاز مفتاحه الخاص ومفتاحه العام وعنوان نفق /32 خاصًا به. فإعادة استخدام إعدادات واحدة تسبب تعارضًا في نقاط النهاية والمسارات، وتمنعك من إلغاء وصول جهاز مفقود دون قطع الاتصال عن الجهاز الآخر.

هل يحتاج كل عميل إلى PersistentKeepalive؟

لا. أضفه عندما يحتاج نظير خلف NAT إلى إبقاء تعيينه مفتوحًا خلال فترات الخمول، وهو أمر شائع مع الهواتف والبوابات المنزلية وبعض الشبكات المقيّدة. واتركه عندما يتواصل النظير بشكل متكرر أو لا يحتاج أن يصل إليه الطرف البعيد أثناء الخمول.

مشاركة

المزيد من المدونة

تابع القراءة.

جاهز للنشر؟ تبدأ من 2.48 $/شهر.

سحابة مستقلة منذ 2008. AMD EPYC، NVMe، 40 Gbps. استرداد خلال 14 يومًا.