WireGuard على Raspberry Pi 5: دليل شامل خطوة بخطوة من التثبيت إلى اختبار السرعة

الخلاصة

دليل عملي ومبسط للمبتدئين لإعداد خادم WireGuard على Raspberry Pi 5: من التحضير والتكوين إلى اختبار التحميل والفحوصات الحقيقية للسرعة. خلال ساعتين إلى ثلاث، سيكون لديك خادم VPN شخصي، تختبر من خلاله الأداء وتحسن السرعة.

لا تريد إعداد خادم بنفسك؟ احصل على خادم جاهز
WireGuard على Raspberry Pi 5: دليل شامل خطوة بخطوة من التثبيت إلى اختبار السرعة

مقدمة

في هذا الدليل التفصيلي خطوة بخطوة، ستقوم بإعداد خادم VPN سريع وموثوق على Raspberry Pi 5 باستخدام WireGuard. ستضبط التوجيه والتشفير، تتصل بالعملاء من حاسوبك وهاتفك، تختبر السرعات الحقيقية، تقوم باختبارات التحميل، وتتعلّم كيفية تشخيص المشكلات الشائعة وحلها. بنهاية الدليل، سيكون لديك نفق VPN آمن خاص بك لتصل به إلى شبكتك المنزلية بأمان، تشفر بياناتك عند استخدام الواي فاي العام، وتتجاوز القيود المفروضة.

لمن هذا الدليل؟ صُمم خصيصًا للمبتدئين الذين يستخدمون Raspberry Pi ولم يسبق لهم إعداد VPN من قبل، وأيضًا لمن هم متمرسون على سطر الأوامر يبحثون عن شرح مفصل مع نصائح متقدمة. سنوضح كل خطوة بوضوح، ونضيف فقرات خاصة بالتحسين للمهتمين بتحقيق أقصى سرعة واستقرار.

ما الذي يجب معرفته مسبقًا؟ مهارات أساسية في استخدام Raspberry Pi ورغبة في تنفيذ الأوامر عبر الطرفية. لا يتطلب معرفة عميقة بأنظمة Linux، لكن الانتباه للتفاصيل مفيد. سنشرح المفاهيم الأساسية بشكل بسيط وواضح.

كم تستغرق العملية؟ تثبيت النظام والتحديثات يستغرق من 20 إلى 40 دقيقة. إعداد WireGuard الأساسي وإضافة العملاء الأولين من 30 إلى 60 دقيقة. ضبط الراوتر والاختبارات تحتاج 20 إلى 40 دقيقة. خطط لقضاء 2 إلى 3 ساعات إذا رغبت في تنفيذ كل خطوة بتأنٍ.

التحضير

الأدوات والوصول المطلوب. ستحتاج إلى Raspberry Pi 5، مصدر طاقة USB-C بقوة 27 واط أو محول جيد 5 فولت 5 أمبير، بطاقة microSD بسعة 32 إلى 128 جيجابايت ومصنفة A1 أو أعلى، كابل إيثرنت للربط مع الراوتر المنزلي، حاسوب مثبت عليه Raspberry Pi Imager، وصول إلى الراوتر لضبط تحويل البورت، ومعلومات تسجيل الدخول لمزود الإنترنت إذا كنت بحاجة للتأكد من وجود CGNAT. وجود شاشة ولوحة مفاتيح مفيد عند الإقلاع الأول لكنه اختياري في إعداد بدون شاشة.

متطلبات النظام. يوصى باستخدام نظام Raspberry Pi OS 64-بت (Bookworm أو أحدث)، حيث يأتي دعم WireGuard مدمجًا في النواة بشكل افتراضي. للإعدادات القياسية وسرعات تصل إلى 1 جيجابت في الثانية، إعداد إيثرنت السلكي أفضل من الواي فاي لأقصى استقرار. أي عميل WireGuard حالي لموبايل أو حاسوب مكتبي يعمل على أجهزتك.

ما الذي يجب تحميله وتثبيته. ثبت Raspberry Pi Imager على حاسوبك وحضّر صورة نظام Raspberry Pi OS Lite 64-بت لبيئة خفيفة. على الجهاز القائم، سنثبت wireguard-tools، iperf3 للاختبار، nftables أو iptables-nft للتوجيه NAT، و qrencode لإضافة عملاء الموبايل بسهولة.

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

المفاهيم الأساسية

المصطلحات الرئيسية ببساطة. WireGuard هو بروتوكول VPN حديث ينشئ نفقًا مشفرًا بين الأجهزة. الخادم هو Raspberry Pi 5 الذي يستقبل الاتصالات. العميل هو هاتفك أو الكمبيوتر المحمول المتصل. المفاتيح زوج من مفاتيح خاصة وعامة تستعمل للتشفير والتحقق. واجهة wg0 هي محول شبكة افتراضي يدير حركة المرور المشفرة. AllowedIPs هي قائمة الشبكات والعناوين التي يتم توجيهها عبر النفق.

كيف تعمل التقنية. كل طرف في النفق لديه مفتاح دائم وعنوان IP من شبكة فرعية افتراضية مثل 10.6.0.0/24. يرسل العميل حزم UDP إلى عنوان IP العام للبروتوكول والبورت الخاص بالخادم. الخادم يفك تشفير البيانات ويوجهها إلى الإنترنت أو الشبكة المحلية حسب الإعدادات. توجيه المسارات يتم على العميل بواسطة AllowedIPs وعلى الخادم بواسطة قواعد التوجيه وNAT.

ما يجب فهمه قبل البدء. سرعة WireGuard تعتمد على المعالج، MTU، جودة الشبكة، والتوجيه بين المزودين. Raspberry Pi 5 قوي بما يكفي لتحقيق سرعات قرب 1 جيجابت على الشبكة المحلية ومئات ميجابت عبر الإنترنت، بشرط ألا يكون مزود الخدمة هو عنق الزجاجة. إعداد MTU وNAT السليمين أساسيان لاستقرار وأداء الخادم.

الخطوة 1: تحضير Raspberry Pi 5 ونظام التشغيل

الهدف

إعداد نظام Raspberry Pi OS Lite 64-بت جديد، تفعيل SSH، وضبط الإعدادات الأساسية لبدء تثبيت WireGuard.

خطوات التنفيذ

  1. شغّل Raspberry Pi Imager على حاسوبك. اختر Raspberry Pi OS Lite (64-بت).
  2. اختر بطاقة microSD الخاصة بك كهدف. تحقق جيدًا لتجنب مسح القرص الخطأ.
  3. اضغط على أيقونة الإعدادات داخل Imager. فعل SSH، اختر المصادقة بكلمة مرور أو سجل مفتاح SSH عام. أدخل اسم المستخدم (مثلاً «pi») وكلمة مرور قوية لا تقل عن 12 حرفًا.
  4. حدد اسم المضيف، مثلاً «rpi5-wg». اختر البلد، اللغة، وتخطيط لوحة المفاتيح. فعّل الواي فاي فقط إذا لم يكن هناك اتصال سلكي—أدخل SSID وكلمة المرور. يفضل الإيثرنت.
  5. اضغط حفظ ثم كتابة. انتظر حتى ينتهي الكتابة والتحقق (3–10 دقائق).
  6. أخرج البطاقة من حاسوبك وأدخلها في Raspberry Pi 5. وصل كابل الإيثرنت بالراوتر وشغل الجهاز. انتظر من 20 إلى 60 ثانية للإقلاع.
  7. اعثر على عنوان IP الخاص بجهاز Pi. تحقق من قائمة أجهزة الراوتر أو استخدم ماسح شبكات من الهاتف. عادة يكون 192.168.1.XX.
  8. اتصل عبر SSH: «ssh pi@192.168.1.XX». وافق على بصمة المفتاح عند أول اتصال وأدخل كلمة المرور.
  9. حدّث النظام: «sudo apt update && sudo apt full-upgrade -y». أعد التشغيل: «sudo reboot» وأعد الاتصال بالـ SSH.
  10. ثبت آخر تحديث للبرامج الثابتة والأدوات: «sudo rpi-eeprom-update -a». قد تحتاج لإعادة التشغيل مجددًا بـ «sudo reboot».

⚠️ تحذير: لا تغلق الطاقة أثناء كتابة بطاقة SD أو تحديثات البرامج الثابتة لأنها قد تفسد نظام الملفات.

نصيحة: امنح جهاز Pi اسم مضيف فريد لتجنب الالتباس مع أجهزة أخرى على الشبكة.

✅ تحقق: نفذ «uname -m» وتأكد أن الناتج «aarch64». افحص نسخة النظام بـ «cat /etc/os-release» للتأكد من Raspberry Pi OS Bookworm. تحقق من أن «ssh pi@العنوان» يتصل بدون أخطاء.

النتيجة المتوقعة: نظام Raspberry Pi OS Lite 64-بت جديد يعمل مع وصول SSH مستقر، وجهازك متصل بالشبكة المحلية.

المشكلات الشائعة والحلول: لو لم يتوفر SSH، تأكد من تفعيله في إعدادات Imager. إذا لم يظهر الجهاز، تحقق من كابل الإيثرنت ومنفذ الراوتر، جرب منفذًا آخر إذا استدعى الأمر. إذا لم يقلع النظام، أعد كتابة الصورة أو استخدم بطاقة microSD أخرى.

الخطوة 2: إعدادات الشبكة، IP ثابت، والوصول عبر SSH

الهدف

تعيين عنوان IP محلي ثابت لـ Raspberry Pi 5، ضبط المنطقة الزمنية بشكل صحيح، والتأكد من استقرار SSH. هذه الخطوة حاسمة لإعداد تحويل البورت والإدارة السلسة.

خطوات التنفيذ

  1. ضبط المنطقة الزمنية: نفذ «sudo raspi-config»، انتقل إلى «Localization Options» واختر منطقتك. هذا يساعد في دقة السجلات وتشخيص الاتصالات.
  2. افحص واجهة الشبكة: «ip -4 addr». عادة يكون الإيثرنت «eth0» مع IP مثل 192.168.X.Y.
  3. احجز IP ثابت من خلال لوحة إدارة الراوتر باستخدام حجز DHCP. اعثر على عنوان MAC الخاص بـ Pi عبر «ip link show eth0» واحجز IP مثل 192.168.1.10. هذا الأفضل وأسهل.
  4. إذا لم يكن هناك حجز DHCP، عيّن IP ثابت يدويًا. عدّل الملف «sudo nano /etc/dhcpcd.conf» وأضف:
    «interface eth0»
    «static ip_address=192.168.1.10/24»
    «static routers=192.168.1.1»
    «static domain_name_servers=1.1.1.1 8.8.8.8»
    احفظ وأعد تشغيل الخدمة «sudo systemctl restart dhcpcd».
  5. اختبر اتصال الإنترنت: «ping -c 3 1.1.1.1» و«ping -c 3 debian.org». إذا نجح، الشبكة تعمل.
  6. أعد الاتصال عبر SSH باستخدام IP الثابت الجديد: «ssh pi@192.168.1.10».

نصيحة: دوّن IP المحلي لجهاز Pi على ملصق وعدّه على العلبة لتوفير الوقت أثناء التشخيص.

✅ تحقق: يجب أن يعرض «ip route» البوابة الافتراضية عبر الراوتر، و«ip -4 addr show eth0» IP الثابت. كما يجب أن يكون SSH مستقرًا ويتصل بهذا العنوان.

النتيجة المتوقعة: تم تعيين IP ثابت على Raspberry Pi، والإنترنت يعمل، والمنطقة الزمنية مضبوطة، وأنت جاهز لتثبيت WireGuard.

مشكلات وحلول شائعة: إذا لم يكن هناك إنترنت، تحقق من بوابة الوصول وDNS في الإعدادات. في حال تكرار IP، اختر عنوانًا آخر متاحًا ضمن الشبكة الفرعية.

الخطوة 3: تثبيت WireGuard وتحضير النواة

الهدف

تثبيت أدوات WireGuard وتأكيد جاهزية النواة والملحقات، وتحضير النظام لإنشاء نفق VPN.

خطوات التنفيذ

  1. حدّث قوائم الحزم: «sudo apt update».
  2. ثبت WireGuard والأدوات: «sudo apt install -y wireguard wireguard-tools qrencode iperf3 nftables resolvconf». حزمة wireguard-dkms ليست مطلوبة على النوى الحديثة لأنها مدمجة.
  3. حمّل ملحق WireGuard: «sudo modprobe wireguard» وتأكد وجوده عبر «lsmod | grep wireguard». إذا ظهر «wireguard» فهذا يشير إلى تحميله.
  4. فعّل بدء التشغيل التلقائي لخدمات nftables وsystemd-resolved: «sudo systemctl enable nftables» و«sudo systemctl enable systemd-resolved». هذا الأخير يضمن عمل DNS بشكل سليم.
  5. تحقق من نسخة WireGuard: «wg --version» يجب أن تعرض نسخ wg-quick و wireguard-tools.

⚠️ تحذير: لا تثبت مجموعات قواعد iptables و nftables المتضاربة. هذا الدليل يستخدم nftables لأنه حديث ومتوافق مع برمجيات Debian Bookworm.

نصيحة: إذا حدثت النواة، أعد تشغيل الجهاز قبل التحقق من تحميل ملحق WireGuard لضمان تحميله.

✅ تحقق: تشغيل «wg» بدون معاملات يجب أن يعرض مخرجات فارغة بدون أخطاء. «lsmod | grep wireguard» تظهر الملحق. لا يجب أن تكون هناك أخطاء أثناء التثبيت.

النتيجة المتوقعة: WireGuard مثبت، ملحق النواة محمّل، أدوات CLI جاهزة، وnftables مفعلة لإعداد NAT.

مشكلات شائعة وحلول: إذا لم يُحمَّل الملحق، تحقق من نسخة النواة عبر «uname -r» وحدّث النظام. إذا لم تُعثر الحزم، تأكد من المصادر في «/etc/apt/sources.list» وأعد تحديث الحزم.

الخطوة 4: إنشاء المفاتيح، مخطط العناوين، وتكوين wg0 الأساسي

الهدف

إنشاء مفاتيح الخادم، تحديد شبكة VPN الفرعية، وإنشاء ملف تكوين wg0 الذي ينشّط نفق الخادم.

خطوات التنفيذ

  1. إنشاء مجلد التكوين بصلاحيات مقيدة: «sudo mkdir -p /etc/wireguard && sudo chmod 700 /etc/wireguard».
  2. توليد مفاتيح الخادم بأمان: «umask 077; wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key > /dev/null». ينتج هذا المفتاحين الخاص والعام مع الصلاحيات المناسبة.
  3. عرض المفتاح الخاص: «sudo cat /etc/wireguard/server_private.key». انسخ هذا للمخططات. المفتاح العام «sudo cat /etc/wireguard/server_public.key» يُعطى للعملاء.
  4. اختر شبكة VPN الفرعية: 10.6.0.0/24 مع عنوان الخادم 10.6.0.1 هو اختيار آمن ونادر التعارض مع الشبكات المنزلية النموذجية.
  5. أنشئ ملف التكوين: «sudo nano /etc/wireguard/wg0.conf». ألصق:
    «[Interface]»
    «Address = 10.6.0.1/24»
    «ListenPort = 51820»
    «PrivateKey = YOUR_PRIVATE_KEY»
    «SaveConfig = true»
    لا تضف PostUp/PostDown بعد—سنضبط NAT لاحقًا.
  6. احمِ ملف التكوين: «sudo chmod 600 /etc/wireguard/wg0.conf».
  7. فعّل إعادة توجيه IPv4: «echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-sysctl.conf». نفذ الإعدادات: «sudo sysctl --system» وتحقق بـ «sysctl net.ipv4.ip_forward» (يجب أن تظهر «1»).
  8. شغّل الواجهة: «sudo wg-quick up wg0». تحقق عبر «ip addr show wg0» للتأكد من وجود عنوان 10.6.0.1/24.
  9. فعّل الإقلاع التلقائي: «sudo systemctl enable wg-quick@wg0».

نصيحة: يمكنك تغيير اسم الواجهة من «wg0» إذا أردت، لكن للبساطة نستخدم wg0. لقنوات متعددة استخدم wg1، wg2، وهكذا.

✅ تحقق: «wg show» يعرض wg0 مع ListenPort 51820 ومفتاح الخادم العام. «wg-quick up wg0» ينفذ بدون أخطاء. «ip a» يظهر أن wg0 مُنشط.

النتيجة المتوقعة: واجهة خادم WireGuard تعمل وتستمع على بورت UDP 51820، إعادة توجيه IPv4 مفعلة، جاهزة لإعدادات العملاء.

مشكلات شائعة وحلول: رسالة «RTNETLINK answers: File exists» تعني تعارض في المسارات—نفذ «sudo wg-quick down wg0» ثم عِد تشغيله. «Cannot find device wg0» يستلزم التحقق من ملحق النواة وملف التكوين.

الخطوة 5: التوجيه، NAT، وتحويل البورت على الراوتر

الهدف

إعداد NAT باستخدام nftables حتى يتمكن العملاء من الوصول إلى الإنترنت عبر الخادم، وتحويل بورت UDP 51820 على الراوتر للوصول الخارجي.

خطوات التنفيذ

  1. حدد واجهة الشبكة الخارجية لجهاز Pi: «ip route get 1.1.1.1». يحدد الناتج «dev eth0» أو واجهة أخرى.
  2. أنشئ ملف تكوين nftables أساسي: «sudo nano /etc/nftables.conf». ألصق:
    «flush ruleset»
    «table inet wg {»
    « chain prerouting { type nat hook prerouting priority -100; }»
    « chain input { type filter hook input priority 0; policy accept; }»
    « chain forward { type filter hook forward priority 0; policy accept; }»
    « chain output { type filter hook output priority 0; policy accept; }»
    « chain postrouting { type nat hook postrouting priority 100; }»
    «}»
    واكتب الملف.
  3. أضف قاعدة MASQUERADE داخل سلسلة postrouting:
    «oifname "eth0" ip saddr 10.6.0.0/24 counter masquerade»
    تأكد من أن «eth0» هو اسم الواجهة الخارجية الصحيح.
  4. حمّل القواعد: «sudo nft -f /etc/nftables.conf». تحقق بـ «sudo nft list ruleset» لترى جدول wg وقاعدة MASQUERADE.
  5. أضف أوامر PostUp وPostDown إلى ملف wg0 لتفعيل قواعد NAT تلقائيًا. عدّل «/etc/wireguard/wg0.conf» عند [Interface] وأضف:
    «PostUp = nft -f /etc/nftables.conf»
    «PostDown = nft flush ruleset»
    ملاحظة: هذا نهج بسيط، ويفضل استخدام تكوين مستمر لتجنب مسح القواعد بالكامل عند الإيقاف.
  6. أعد تشغيل واجهة WireGuard: «sudo wg-quick down wg0 || true && sudo wg-quick up wg0». افحص nftables وWireGuard مجددًا.
  7. حول بورت UDP 51820 على الراوتر. سجّل دخولك إلى إعدادات الراوتر، ابحث عن إعادة توجيه البورت/NAT، وأنشئ قاعدة تحول البورت الخارجي UDP 51820 إلى IP الداخلي لـ Raspberry Pi (مثلاً 192.168.1.10) بورت 51820 UDP. احفظ الإعدادات.
  8. تحقق من وجود مستمع على البورت داخل Pi: «sudo ss -ulnpt | grep 51820». يجب أن ترى مستمع UDP على *:51820.

⚠️ تحذير: إذا كان مزود الإنترنت يستخدم CGNAT فلن تنجح عملية تحويل البورت. اتصل بمزود الخدمة للحصول على IP عام أو استخدم بدائل مثل VPS خارجي كوسيط، أو إعداد WireGuard مع عُقد وسيطة.

نصيحة: ألغِ تفعيل UPnP لبورت 51820 في الراوتر إذا كان مفعلًا لتجنب التضارب مع إعادة توجيه البورت الثابت.

✅ تحقق: من داخل الشبكة، نفذ «nc -u -zv 192.168.1.10 51820» ويجب النجاح بدون أخطاء إذن. من خارج الشبكة (مثلاً الهاتف عبر بيانات الهاتف)، تحقق من نجاح المصافحة عبر «wg show».

النتيجة المتوقعة: تم تفعيل NAT، مرور حركة العملاء تظهر على عنوان Raspberry Pi، وتم تحويل بورت UDP 51820 والوصول إليه من الخارج إذا توافر IP عام.

مشكلات وحلول شائعة: عدم وجود إنترنت للعملاء؟ تحقق من ip_forward=1 وقاعدة MASQUERADE. في حال عدم الوصول من الخارج، تحقق من احتمال وجود NAT مزدوج (مودم مزود الخدمة + راوتر) واضبط إلى وضع الجسر أو عدّل إعادة التوجيه كما يلزم.

الخطوة 6: إضافة العملاء (هاتف، حاسوب)، رمز QR، والاختبار الأولي

الهدف

إنشاء ملفات تهيئة العملاء، تسجيلهم في الخادم كأقران، ربط هاتفك وحاسوبك المحمول، والتحقق من المرور عبر النفق.

خطوات التنفيذ

  1. إنشاء مفاتيح client1: «wg genkey | tee client1_private.key | wg pubkey | tee client1_public.key». للسلامة، أنشئها كمستخدمك واضبط صلاحيات الملف 600.
  2. اكتشف عنوان IP العام للخادم أو اسمه DNS. إذا كان IP ديناميكيًا، أنشئ DDNS على الراوتر. للاختبار، تعامل مع IP الحالي عبر «curl ifconfig.me» من الـ Pi.
  3. أنشئ ملف client1.conf على الـ Pi:
    «[Interface]»
    «PrivateKey = CLIENT_PRIVATE_KEY»
    «Address = 10.6.0.2/32»
    «DNS = 1.1.1.1»
    «[Peer]»
    «PublicKey = SERVER_PUBLIC_KEY»
    «Endpoint = YOUR_IP_OR_DNS:51820»
    «AllowedIPs = 0.0.0.0/0, ::/0»
    «PersistentKeepalive = 25»
    هذا يوجّه كل حركة العميل عبر VPN.
  4. أضف العميل إلى تكوين الخادم «sudo nano /etc/wireguard/wg0.conf» في نهاية الملف:
    «[Peer]»
    «PublicKey = CLIENT_PUBLIC_KEY»
    «AllowedIPs = 10.6.0.2/32»
    احفظ الملف.
  5. طبق التكوين: «sudo wg addconf wg0 <(wg-quick strip wg0)» أو أعد تشغيل الواجهة «sudo wg-quick down wg0 && sudo wg-quick up wg0».
  6. أنشئ رمز QR للعميل المحمول: «qrencode -t ansiutf8 < client1.conf». مسح الرمز في الطرفية باستخدام تطبيق WireGuard على iOS أو أندرويد باختيار «Create from QR code».
  7. ثبت تطبيق WireGuard الرسمي على حاسوبك المحمول، استورد «client1.conf»، واحفظ الملف التعريفي.
  8. شغّل الاتصالات. فعّل النفق على هاتفك. على الحاسوب، اضغط «Activate». على الخادم، نفّذ «sudo wg show» - سترى طابع آخر مصافحة وعدادات نقل متزايدة.

نصيحة: لجعل العميل يستخدم الإنترنت المحلي ويدخل فقط الشبكة المنزلية عبر VPN، استبدل AllowedIPs بـ «10.6.0.0/24, 192.168.1.0/24» واحذف «0.0.0.0/0» لإنشاء نفق مقسّم.

✅ تحقق: على الهاتف، تفقّد مواقع استعلام IP، يجب أن يظهر عنوانك المنزلي. اطلب «ping 10.6.0.1» و«ping 192.168.1.1» ويجب أن ينجحا إذا سمح الوصول للشبكة المحلية.

النتيجة المتوقعة: ينجح العملاء في الاتصال، حركة البيانات تمر عبر VPN، إحصائيات النقل تنمو، والكمون مستقر.

المشكلات والحلول: عدم وجود مصافحة؟ تحقق من إعادة توجيه البورت و IP العام. مصافحة لكن بلا إنترنت؟ تأكد من قواعد MASQUERADE و ip_forward. قطع في الشبكة المحمولة؟ زد PersistentKeepalive إلى 25-30 ثانية.

الخطوة 7: اختبارات السرعة، الأحمال، وتشخيص الاختناقات

الهدف

قياس أداء WireGuard على Raspberry Pi 5 بموضوعية، تقييم حمل المعالج، تحديد سرعات الشبكة المحلية والإنترنت الفعلية، والكشف عن نقاط الضعف.

خطوات التنفيذ

  1. ثبت iperf3 على الجهتين. مثبت مسبقًا على الـ Pi. على الحاسوب، ثبت iperf3 وشغّل الخادم على الـ Pi: «iperf3 -s». اترك النافذة مفتوحة.
  2. من العميل، اختبر بعدة تدفقات: «iperf3 -c 10.6.0.1 -P 4 -t 20». الخيار «-P 4» يشغل 4 تدفقات متزامنة لتحميل أفضل. دوّن متوسط السرعة.
  3. اختبر النقل عبر تدفق واحد «iperf3 -c 10.6.0.1 -P 1 -t 20» لرؤية أداء النفق الخام بدون تجميع.
  4. راقب استخدام CPU على الـ Pi أثناء الاختبارات: افتح طرفية جديدة ونفذ «top» أو «htop». نوى Cortex-A76 بسرعة 2.4 جيجاهرتز في Pi 5 تتعامل بسهولة مع مئات ميجابت بعدة خيوط.
  5. قِس سرعة الإنترنت عبر VPN: شغّل خادم iperf3 على VPS أو نقطة خارجية، واتصل من العميل والـ VPN مفعّل باستخدام «iperf3 -c SERVER -P 4 -t 20». أو قارِن نتائج speedtest-cli مع وبدون VPN لتقييم عبء التشفير والتوجيه.
  6. حسّن MTU: اختبر بـ «sudo ping -M do -s 1380 1.1.1.1» من الـ Pi عبر الإنترنت. إذا لم يحدث تجزئة، اضبط MTU=1420 كقيمة افتراضية. إذا ظهرت مشاكل، خفّض MTU لواجهة wg0 بقيمة «MTU = 1380» ضمن [Interface] في wg0.conf وأعد تشغيل الواجهة.
  7. حدّث جدول الطوابير لتقليل اختناق الحزمة: نفذ «sudo tc qdisc replace dev eth0 root fq_codel» و«sudo tc qdisc replace dev wg0 root fq_codel». هذا يقلل من ارتفاعات الكمون عند الضغط.
  8. عاود اختبارات iperf3 لمقارنة الأداء قبل وبعد تعديلات MTU و qdisc، راقب الاستقرار والتأخير والسرعات القصوى.

نصيحة: لاختبار التحمل، استخدم الخيارات «-P 8» و«-t 60» لفهم السلوك تحت حمل ثقيل مستمر وكشف ارتفاع الحرارة أو خنق الأداء عند ضعف التبريد.

نصيحة: فعّل حاكم السرعة للمعالج: «sudo apt install -y cpufrequtils» ثم «echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils && sudo systemctl restart cpufrequtils». يمكن أن يحسّن السرعة بنسبة 5-10% أثناء الحمل العالي.

✅ تحقق: توقع مئات ميجابت بالثانية عبر LAN على VPN، غالبًا بين 700-900 ميجابت مع عدة تدفقات. سرعات الإنترنت تعتمد على مزود الخدمة والخادم البعيد. اتصال مستقر وعدم تكرار iperf3 تشير إلى ضبط MTU الصحيح.

النتائج المتوقعة والسرعات الحقيقية. على Raspberry Pi 5، غالبا ما تصل سرعات WireGuard على الشبكة المحلية إلى حدود إيثرنت جيجابت وخصائص TCP. النتائج العملية تظهر نقل UDP بين 0.7-0.95 جيجابت عبر عدة تدفقات وMTU مضبوط. سرعات الإنترنت محدودة عادة بمزود الخدمة ومسارات الشبكة، مع قنوات جيدة توفر 300-600 ميجابت عادةً وبعض الحالات تتخطى 700 ميجابت. النتائج المنخفضة تستلزم التحقق من MTU، ارتفاع الحرارة أو المرور عبر CGNAT.

مشكلات وحلول شائعة: استخدام CPU عالي على نواة واحدة مع سرعات منخفضة؟ تأكد من تشغيل iperf3 بعدة تدفقات وعدم ضغط qdisc على المعالج. تأخير أو فقدان بيانات مرتفع؟ افحص الكابلات، المنافذ، وتقنيات الإرسال المتقدمة في كرت الشبكة. يمكن تعطيلها مؤقتًا بـ «sudo ethtool -K eth0 tx off rx off gso off gro off tso off» للمقارنة، لكن الإعداد الافتراضي عادة جيد.

التحقق من النتيجة

قائمة التحقق: ما يجب أن يعمل. واجهة WireGuard wg0 مفعلة وتعمل تلقائيًا عند الإقلاع. تم تحويل بورت UDP 51820 على الراوتر. العملاء يتصلون بنجاح مع مصافحات مستقرة. الوصول إلى الإنترنت خلال الـ VPN يعمل، وحل DNS صحيح. iperf3 يقدم السرعات المتوقعة. NAT عبر nftables فعّال، وتم تفعيل ip_forward. السجلات لا تظهر أخطاء حرجة.

طريقة الاختبار. أوقف الواي فاي على هاتفك، فعّل بيانات الهاتف، وجرّب الاتصال بـ VPN وافتح مواقع. على الخادم، نفذ «wg show» وتحقق من توقيت آخر مصافحة. على العميل، نفذ «traceroute 1.1.1.1» يجب أن يكون القفزة الأولى 10.6.0.1. نفّذ «iperf3 -c 10.6.0.1 -P 4 -t 20» وراقب السرعة. ثم نفّذ «dig example.com» ولاحظ زمن الاستجابة للـ DNS.

مؤشرات النجاح. عدم وجود مهلات تحميل صفحات الويب، مصافحة منتظمة كل 20–30 ثانية تحت الحمل، سرعات ضمن النطاق المتوقع، وعدم الانقطاع الدوري. سجلات «sudo journalctl -u wg-quick@wg0 -b» تُظهر التحذيرات الحدية ولا توجد أخطاء.

مشاكل وحلول شائعة

  • مشكلة: العميل لا يتصل، لا توجد مصافحة. السبب: إعادة توجيه البورت غير صحيح أو CGNAT. الحل: تحقق من قاعدة NAT على الراوتر، تأكد من عنوان IP عام. إذا كنت تستخدم CGNAT، اطلب IP عام أو استخدم VPS خارجي كوسط انتقال.
  • مشكلة: مصافحة موجودة لكن لا إنترنت على العميل. السبب: ip_forward معطّل أو قاعدة MASQUERADE مفقودة. الحل: فعّل net.ipv4.ip_forward=1، راجع قاعدة nftables الخاصة بالـ postrouting، وأعد تشغيل WireGuard.
  • مشكلة: عدم الوصول إلى أجهزة الشبكة المحلية. السبب: عدم إضافة LAN إلى AllowedIPs أو جدار حماية الراوتر يمنعها. الحل: أضف الشبكة المحلية مثل 192.168.1.0/24 إلى AllowedIPs وتأكد أن الراوتر يسمح بمرور حركة الشبكة الداخلية بين الأجزاء.
  • مشكلة: المواقع تفشل جزئيًا أو سرعة غير مستقرة. السبب: MTU غير مناسب يسبب تجزئة. الحل: اختبر PMTU بـ «ping -M do» واضبط MTU ضمن 1380–1420 (عادة 1420 يعمل).
  • مشكلة: DNS لا يعمل عبر VPN. السبب: DNS العميل إعداداته خاطئة. الحل: عين «DNS = 1.1.1.1» في تكوين العميل أو استخدم محلل محلي، تأكد من تشغيل systemd-resolved، وفعل خيار «Block untunneled traffic» إذا لزم الأمر على العميل.
  • مشكلة: السرعات أقل من المتوقع بكثير. السبب: اختبار أحادي الخيط، خنق المعالج، ضعف الربط لدى مزود الخدمة، أو ارتفاع حرارة Pi 5. الحل: استعمل عدة تدفقات «-P 4..8» في iperf3، وفر تبريد جيد مع مشتت ومروحة، فعّل حاكم المعالج بالأداء العالي.
  • مشكلة: فشل تشغيل النفق بعد إعادة التشغيل. السبب: الخدمة غير مفعلة أو أخطاء في PostDown. الحل: نفّذ «sudo systemctl enable wg-quick@wg0»، تحقق من حالة الخدمة، وبسط أوامر PostDown، تجنب مسح قواعد nftables بالكامل دون إعادة تحميلها.

ميزات إضافية

الإعدادات المتقدمة

  • نفق مقسّم بناءً على المجالات. توجيه النطاقات التجارية فقط عبر VPN بينما يمر باقي المرور مباشرة. استخدم DNS-over-WG وتوجيه السياسات على الأجهزة، مع أن WireGuard لا يفلتر حسب النطاق أصلاً ويعتمد على أدوات نظام العميل.
  • الوصول لعدة شبكات فرعية. أضف عدة شبكات مثل 192.168.1.0/24 و192.168.50.0/24 إلى AllowedIPs في العميل إذا كان لديك عدة VLANs في المنزل. ضبط المسارات وقواعد الجدار الناري في الخادم عبر nftables.
  • عزل العملاء. WireGuard لا يمرر حركة بين العملاء بشكل افتراضي. لعزل أدق، تجنب إضافة مسارات العملاء لبعضهم وامنع حركة بين العملاء باستخدام nftables.
  • الوصول عبر اسم النطاق. ضبط DDNS في الراوتر واستخدم هذا في Endpoint للعملاء لتجنب تغيير التكوين مع IP متغير. حدث DDNS كل بضع دقائق.
  • تسجيل ومراقبة. ثبّت Netdata أو Prometheus node-exporter لمراقبة الكمون، الحركة، وحمل المعالج. للاختبارات البسيطة، نفذ «wg show» و«nft list ruleset» دوريًا.

التحسين

  • تعديلات MTU. للشبكات الهشة، ابدأ بـ MTU=1280 على wg0 والعميل ثم زد تدريجياً حتى 1420 عندما يتوقف فقد الحزم.
  • طابور FQ-CoDel. فعّل fq_codel على واجهات eth0 و wg0 لتقليل الاختناق، وتحسين جودة المكالمات والفيديو.
  • تدفقات موازية. استخدم عدة تدفقات TCP/UDP ومديري التنزيل «-P 4..8» في iperf3 لاستغلال كامل الاتصال.

ماذا يمكنك أن تفعل أيضًا

  • نموذج وصول ثنائي العامل. احتفظ بتكوينات العملاء في مدير كلمات مرور وفعل أقفال الأجهزة. في حال فقدان هاتف، احذف مفتاحه فورًا من wg0.conf وأعد تشغيل الواجهة.
  • نسخ احتياطي. احفظ «/etc/wireguard» و«/etc/nftables.conf» في أرشيفات مشفرة. احتفظ ببطاقات microSD احتياطية مع النظام، واختبر النسخ بانتظام على Pi إضافي أو مؤقتًا على نفس الجهاز.

نصيحة: لمن يريد VPN شخصي «الآن وعلى الفور» بدون عمل في الطرفية، جرب خدمات VPN الجاهزة مثل vpn.how. تقدم خوادم VPN شخصية مع عناوين IP مخصصة (غير مشتركة)، تدعم WireGuard، OpenVPN، IKEv2، L2TP، SSTP—اختر بروتوكولك. المواقع تشمل موسكو، سانت بطرسبرغ، أمستردام، فرانكفورت، لندن، نيويورك، سان خوسيه، شيكاغو، سنغافورة، سيدني، مدريد، هلسنكي، ستوكهولم، وارسو، كوبنهاجن، وستافانجر. يقبلون بطاقات البنوك الروسية (بما في ذلك Tinkoff وOzon)، SBP، USDT، و BTC. الخطط تبدأ من 490 ₽ يوميًا و2490 ₽ شهريًا مع خصومات للعقود الطويلة، بدء فوري بعد الدفع ولا سجلات محفوظة. هذا مناسب لمن لا يملك الوقت لإدارة العتاد، النسخ الاحتياطية، والمراقبة. الحل DIY على Pi يمنح مرونة لكنه يتطلب ساعات إعداد وصيانة مستمرة.

أسئلة متكررة

سؤال: كيف أعرف إذا كان مزود الإنترنت يستخدم CGNAT وأحتاج عنوان IP عام؟ جواب: قارن IP العام المعروض في إعدادات الراوتر مع مواقع مثل ifconfig.me. إذا أظهر الراوتر IP خاص (في النطاق 100.64.0.0/10 أو 10.0.0.0/8)، فهذا يشير إلى CGNAT. في هذه الحالة لن تعمل إعادة توجيه البورت من الإنترنت.

سؤال: هل يمكنني استخدام بورت غير قياسي بدل 51820؟ جواب: نعم، فقط عيّن بورت مختلف في ListenPort وحوله في الراوتر. أحيانًا تحجب بعض مزودي الإنترنت بورتات UDP، والتغيير يساعد.

سؤال: كيف أضيف عدة عملاء؟ جواب: أنشئ مفاتيح منفصلة لكل عميل، وعين عناوين فريدة ضمن 10.6.0.X/32، أضف قسم [Peer] جديد في wg0.conf لكل عميل، ووزع التكوينات المناسبة. لا تعيد استخدام نفس المفاتيح لأجهزة مختلفة.

سؤال: ماذا أفعل إذا نسيت مفتاح الخادم الخاص؟ جواب: أنشئ زوج مفاتيح جديد، حدّث wg0.conf بالمفتاح الخاص الجديد، ووزع المفتاح العام الجديد على جميع العملاء. ستحتاج أيضًا لتحديث Endpoint في العملاء إذا تغيّر البورت أو النطاق.

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

سؤال: هل تحتاج WireGuard لشهادات مثل OpenVPN؟ جواب: لا، WireGuard يستخدم تشفيرًا بسيطًا وسريعًا عبر أزواج المفاتيح فقط، بدون شهادات. هذا يعزز سرعته وبساطته.

سؤال: كيف أخزن ملفات التكوين بأمان؟ جواب: عيّن الصلاحيات إلى 600، احتفظ بنسخ احتياطية في أرشيفات مشفرة، ولا تشارك المفاتيح الخاصة عبر قنوات غير آمنة. انقل تكوينات العملاء بأمان عبر رسائل مشفرة أو أكواد QR في الموقع.

سؤال: هل يمكن لـ WireGuard العمل فقط عندما يتصل العميل؟ جواب: WireGuard لا يحافظ على اتصال دائم بدون حركة، لكن واجهة wg0 يجب أن تكون مفعلة. العملاء ينفذون المصافحة حسب الحاجة.

سؤال: كيف أسمح لبعض العملاء مرور كامل عبر VPN ولآخرين مرور فقط إلى الشبكة المنزلية؟ جواب: تحكم في هذا من تكوينات العميل: المرور الكامل يستخدم «AllowedIPs = 0.0.0.0/0, ::/0»، مرور الشبكة المنزلية فقط يستخدم «AllowedIPs = 10.6.0.0/24, 192.168.1.0/24». لا حاجة لتغييرات في الخادم.

سؤال: لماذا تكون سرعات iperf3 أعلى من التحميلات الفعلية في المتصفح؟ جواب: iperf3 يرسل تدفقات كبيرة بأقل عبء، في حين المتصفحات محدودة بعمليات TCP اليدوية، TLS، والقيود على التوازي وسياسات الخادم. هذا طبيعي؛ راقب تدفقات متوازية واختبارات طويلة المدى.

الخاتمة

ملخص الإجراءات. جهزت Raspberry Pi 5، ثبت نظام OS 64-بت حديث، فعلت SSH وIP ثابت. ثبتت WireGuard والأدوات، أنشأت المفاتيح، صنعت تكوين wg0 وفعلت إعادة توجيه IP. ضبطت NAT مع nftables وتحويل البورت في الراوتر. أضفت العملاء، اتصلت بهاتفك وحاسوبك، تحققت من تشغيل النفق، وأجريت اختبارات تحميل iperf3. حسّنت MTU وإعدادات الطابور لتحقيق سرعات مستقرة وزمن استجابة منخفض. راجعت المشكلات الشائعة وإجراءات النسخ الاحتياطي.

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

أين تنمو مهاراتك؟ تعلم الأتمتة بـ Ansible لنشر الإعدادات، استكشف التوجيه حسب السياسات وعلامات حركة المرور لنفق مقسّم مرن، جرب تعدد الاتصال وقنوات التكرار. ادرس سلوك qdisc وMTU لشبكتك. مع هذه المهارات، ستبني خوادم VPN آمنة وسريعة ليس فقط للمنزل بل وللمكاتب الصغيرة.

نصيحة: دوّن إعداداتك في مكان واحد كالمستودعات الخاصة، وحسّن التعليقات داخل wg0.conf. بعد ستة أشهر، ستشكرك على التوثيق الواضح.

نصيحة: لا تهمل تبريد Raspberry Pi 5 دوماً. التشفير المستمر والتوجيه يرفع حرارة SoC، وسرعات تزيد عن 800 ميجابت تستمتع بها أكثر مع تبريد مناسب دون خنق.

خادم VPN الخاص بك على Raspberry Pi 5 جاهز الآن. أنت تعرف كيف تديره، تختبره، وتستفيد من سرعته القصوى. عمل رائع!

Roman Melnikov

Roman Melnikov

Technical Writer and System Administrator

Technical writer and DevOps engineer with 9 years of experience. Created over 50 detailed guides on system configuration and administration. His instructions helped thousands of professionals successfully solve technical tasks. Popular author on Habr and YouTube.
Bauman Moscow State Technical University. Information Systems and Technologies
Technical Documentation DevOps System Administration Linux Docker and Kubernetes CI/CD Infrastructure Automation Cloud Technologies System Monitoring Bash and Python Scripting

شارك هذا المقال: