NoctisNode
← أدلةالشبكات2026-10-238 دقائق

WireGuard: إعداد PersistentKeepalive 25 وPresharedKey على VPS

يرسل PersistentKeepalive = 25 حزمة keepalive كل 25 ثانية كي يبقي NAT النفق مفتوحاً؛ اضبطه على العميل خلف NAT. ويضيف PresharedKey طبقة متماثلة احتياطاً لعصر الحوسبة الكمومية.

باختصار: `PersistentKeepalive = 25` يطلب من WireGuard إرسال حزمة صغيرة موثقة إلى النظير كل 25 ثانية، ما يبقي ربط NAT وجدار الحماية ذي الحالة حياً كي يتمكن الطرف الآخر من الوصول إليك. عادةً تضبطه فقط على النظير الموجود خلف NAT (حاسوب محمول أو هاتف أو موجّه منزلي)، لا على VPS بعنوان IP عام. أما `PresharedKey` فسرّ متماثل إضافي اختياري بطول 256 بت لكل زوج من النظراء، يُولَّد بالأمر `wg genpsk`، ويُمزج في المصافحة احتياطاً من هجمات كمومية مستقبلية على Curve25519.

يشرح هذا الدليل الخيارين ويقدم إعدادات عاملة للخادم والعميل على VPS بـ WireGuard. ولإعداد VPN الكامل مع NAT وDNS، راجع دليل WireGuard VPN.

ماذا يفعل PersistentKeepalive = 25 فعلاً

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

`PersistentKeepalive` فاصل زمني بالثواني. مع القيمة `25`، يرسل النظير حزمة keepalive فارغة ومشفرة كلما مرت 25 ثانية دون أن يرسل شيئاً. القيمة 25 هي الموصى بها في توثيق WireGuard لأنها تبقى بأمان تحت أقصر مهل UDP الشائعة. الإعداد معطّل افتراضياً (`0`)، والكلفة حزمة صغيرة تقريباً كل 25 ثانية لكل نظير.

القيمةالتأثيرمتى تستخدمها
0 أو غير مضبوطلا حزم keepalive؛ النفق صامت عند الخموللكلا النظيرين عنوان IP عام، أو العميل وحده يبدأ الحركة دائماً
25keepalive كل 25 ثانية من الخمولعميل خلف NAT أو CGNAT يجب أن يبقى قابلاً للوصول
15–20حزم keepalive أكثر تكراراًشبكات بمهل UDP قاسية على غير العادة
60+حزم أقل، وخطر أكبر لفقدان الارتباطنادراً ما يفيد؛ معظم أجهزة NAT تنتهي مهلتها قبل ذلك

أي طرف يحتاج PersistentKeepalive

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

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

  • ▹حاسوب محمول أو هاتف خلف NAT إلى VPS: اضبط `PersistentKeepalive = 25` على العميل فقط.
  • ▹VPS إلى VPS، لكليهما عنوان IP عام: اتركه عادةً غير مضبوط؛ راجع [دليل شبكة WireGuard المتشابكة](/guides/wireguard-mesh-vps-cluster).
  • ▹خادم منزلي خلف CGNAT مكشوف عبر VPS: اضبطه على الخادم المنزلي، وإلا يفقد الـ VPS المسار خلال دقائق.
  • ▹عملاء الهاتف المحمول: keepalive يكلف بعض البطارية؛ فعّله فقط إن كان يجب أن يبقى الجهاز قابلاً للوصول.

PresharedKey: الطبقة المتماثلة الاختيارية

تستخدم مصافحة WireGuard تبادل المفاتيح Curve25519. حاسوب كمومي كبير بما يكفي قد يكسر هذا التبادل نظرياً، وقد يسجل خصم الحركة اليوم ويفك تشفيرها لاحقاً. يمزج `PresharedKey` مفتاحاً متماثلاً إضافياً بطول 256 بت في المصافحة. والمفاتيح المتماثلة بهذا الحجم لا تُعد قابلة للكسر عملياً بالخوارزميات الكمومية المعروفة، فإن بقي PSK سرياً، تبقى الحركة المسجلة محمية حتى لو كُسر جزء المفتاح العام.

يكون PSK لكل زوج من النظراء، ويجب أن يكون متطابقاً في قسمَي `[Peer]` لدى النظيرين، وينبغي أن يكون فريداً لكل زوج. لا يحل محل المفاتيح الخاصة؛ إنه طبقة إضافية. إن لم تتطابق قيم PSK، تفشل المصافحة بصمت ولا ترى `latest handshake` في `wg show`.

  • ▹ولّده بالأمر `wg genpsk`، الذي يُخرج مفتاحاً عشوائياً بطول 32 بايت بترميز base64.
  • ▹انقله عبر قناة تثق بها أصلاً، مثل SSH، ولا تنقله أبداً عبر الدردشة أو البريد.
  • ▹استخدم PSK واحداً لكل زوج: في شبكة متشابكة من خمس عقد، يعني ذلك عشرة PSK مختلفة.
  • ▹دوّره كأي سر آخر عند فقدان جهاز أو إخراجه من الخدمة.

توليد المفاتيح وPresharedKey

ثبّت الأدوات على Debian 12/13 أو Ubuntu 24.04 بالأمر `apt install wireguard`، ثم ولّد المفاتيح على الجهاز الذي سيحتفظ بكل مفتاح خاص. يمكن توليد PSK على أي من الطرفين ونسخه إلى الآخر. يضمن `umask 077` أن الملفات لا يقرؤها إلا root.

umask 077
cd /etc/wireguard

# on the VPS
wg genkey | tee server.key | wg pubkey > server.pub

# on the client
wg genkey | tee client.key | wg pubkey > client.pub

# once, on either side; copy to the other over SSH
wg genpsk > client.psk

إعدادات الخادم على الـ VPS: ‎/etc/wireguard/wg0.conf

للخادم منفذ استماع ثابت ولا keepalive ولا `Endpoint` للعميل، لأنه يعرف العنوان الحالي للعميل من الحزم الموثقة.

[Interface]
Address = 10.8.0.1/24, fd08::1/64
ListenPort = 51820
PrivateKey = <contents of server.key>

[Peer]
# laptop
PublicKey = <contents of client.pub>
PresharedKey = <contents of client.psk>
AllowedIPs = 10.8.0.2/32, fd08::2/128

Note · افتح UDP 51820 في جدار حماية الـ VPS وشغّل النفق بالأمر `systemctl enable --now wg-quick@wg0`. أحكم SSH كما هو موضح في دليل تحصين SSH، وتحقق من صلاحيات المفاتيح عبر دليل StrictModes، قبل كشف أي شيء آخر.

إعدادات العميل خلف NAT

يشير العميل إلى العنوان العام للـ VPS ويحمل إعداد keepalive. استخدم `AllowedIPs = 10.8.0.0/24, fd08::/64` لنفق خاص فقط، أو `0.0.0.0/0, ::/0` لإرسال كل الحركة عبر الـ VPS.

[Interface]
Address = 10.8.0.2/32, fd08::2/128
PrivateKey = <contents of client.key>

[Peer]
PublicKey = <contents of server.pub>
PresharedKey = <contents of client.psk>
Endpoint = 203.0.113.10:51820
AllowedIPs = 10.8.0.0/24, fd08::/64
PersistentKeepalive = 25

Note · يكفي VPS بخطة Wisp من NoctisNode (1 vCPU، 1 GB RAM، $6 لكل دورة 28 يوماً) مع عنوان IPv4 مخصص كنقطة نهاية WireGuard شخصية، ويمكن دفع ثمنه بـ Monero أو عملات رقمية أخرى مع بريد إلكتروني وكلمة مرور فقط عند التسجيل.

التحقق واستكشاف الأخطاء

شغّل `wg show` على الطرفين. العميل السليم يعرض `latest handshake` حديثاً، و`persistent keepalive: every 25 seconds`، و`preshared key: (hidden)` للنظير.

  1. 01.لا مصافحة إطلاقاً: تحقق من أن UDP 51820 مفتوح على الـ VPS وأن `Endpoint` يستخدم عنوان IP والمنفذ الصحيحين.
  2. 02.المصافحة تعمل دون PSK لكن ليس معه: PresharedKey مختلف بين الإعدادين؛ انسخه مجدداً.
  3. 03.النفق يعمل، ثم لا يستطيع الخادم الوصول إلى العميل بعد دقيقة: أضف `PersistentKeepalive = 25` على العميل.
  4. 04.غيّر keepalive دون إعادة تشغيل: `wg set wg0 peer <server-public-key> persistent-keepalive 25`.
  5. 05.أضف PSK من ملف أثناء التشغيل: `wg set wg0 peer <public-key> preshared-key /etc/wireguard/client.psk`.

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

Qماذا يعني PersistentKeepalive 25 في WireGuard؟

Aيجعل النظير يرسل حزمة keepalive مشفرة بعد 25 ثانية دون حركة أخرى. هذا يبقي ارتباطات NAT وجدار الحماية مفتوحة فيبقى النفق قابلاً للوصول من الطرف الآخر.

Qهل يوضع PersistentKeepalive على الخادم أم العميل؟

Aعلى النظير الموجود خلف NAT، وهو العميل دائماً تقريباً. الـ VPS بعنوان IP عام لا يحتاجه ولا يستطيع إبقاء ارتباط NAT لدى العميل مفتوحاً بنفسه.

Qهل PresharedKey في WireGuard إلزامي؟

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

Qكيف أولّد PresharedKey لـ WireGuard؟

Aشغّل `wg genpsk > peer.psk` وضع القيمة نفسها في سطر `PresharedKey` في قسمَي `[Peer]` لدى النظيرين. استخدم PSK مختلفاً لكل زوج من النظراء.

Qهل يستهلك PersistentKeepalive كثيراً من عرض النطاق؟

Aلا. يرسل حزمة صغيرة واحدة تقريباً كل 25 ثانية من الخمول، وهذا لا يُذكر على VPS، وإن كان قد يقلل عمر البطارية قليلاً على الهواتف.

WireGuard: إعداد PersistentKeepalive 25 وPresharedKey على VPS · NoctisNode