WireGuard PersistentKeepalive: أبقِ تعيين NAT حيًا
إذا كان الاتصال العكسي يعمل فقط بعد أن يرسل النظير حركة مرور، فالتعيين ينتهي. اضبط الإبقاء خلف الموجه ثم اقرأ المهلة الحقيقية.
يفتح صندوق المنزل النفق ويصل إلى خادم السحابة دون مشكلة. يستطيع خادم السحابة الوصول إلى تطبيق المنزل لمدة دقيقة أو دقيقتين بعد آخر شيء أرسله صندوق المنزل، ثم يتوقف. لا يظهر شيء في سجل WireGuard، ولا يُبلَّغ عن أي خطأ في المصافحة، وإعادة تشغيل النفق تصلحه لفترة قصيرة. هذا النمط هو تعيين ينتهي، وليس نفقًا معطلًا، والدليل أدناه يؤكد ذلك قبل تغيير أي شيء.
أكِّد أن النمط هو انتهاء التعيين عند الخمول
التفصيل المميز هو التوقيت. إذا عمل الاتصال العكسي فورًا بعد أن يرسل النظير المنزلي حركة المرور وفشل بعد فترة هدوء، فإن المسار سليم والحالة في المنتصف ليست كذلك. أما إذا لم يعمل أبدًا، حتى بعد حركة المرور مباشرة، فهذا تشخيص خاطئ.
sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer
شغِّل الأمرين الأولين فورًا بعد أن يرسل النظير المنزلي شيئًا، وانتظر خمس دقائق، ثم شغِّلهما مرة أخرى. الطابع الزمني للمصافحة الذي يتجدد في موعده دون نقطة نهاية جديدة يخبرك أن النفق حي. الذي تغيّر هو قدرة الحزم غير المطلوبة على الوصول من الخارج، وهي صفة للمسار لا للنفق.
ثم جرِّب اتصالًا عكسيًا وراقب عدادات النقل. إذا أرسل الجانب السحابي بايتات ولم يستقبل الجانب المنزلي شيئًا، فقد غادرت الحزمة السحابة وماتت في جهاز يحتفظ بالحالة على الطريق. هذا هو التوقيع الذي تبحث عنه. إذا تحرك العدَّادان معًا، فقد أوصل النفق الحزمة والتطبيق هو المشتبه به.
ضع الإبقاء على قيد الحياة على النظير خلف الموجه
تُبقي رسائل الإبقاء الدائمة تعيين NAT وأي حالة جدار حماية حيةً بإرسال حزمة صغيرة موثقة وفق جدول. ينتمي الإعداد إلى الجهاز الموجود خلف الموجه، في مدخل النظير البعيد، لأن ذلك هو الجانب الذي تنشئ حزمته الصادرة الحالة.
[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25
ادمجه في قسم النظير القائم. إضافة كتلة ثانية بالمفتاح العام نفسه ليست طريقة صالحة لإضافة خيارات، ولن يدمجها wg-quick عنك. الـ 25 ثانية الموثقة مثال اختير ليكون تحت مهل UDP الشائعة، وليست قيمة ذات معنى خاص.
وضع التوجيه نفسه على الجانب السحابي لا يساعد في هذه المشكلة. حزم ذلك النظير تصل أصلًا من عنوان عام، لذا لا يوجد تعيين يجب الحفاظ عليه في الاتجاه المهم. إنه يضيف حركة ولا يغيّر شيئًا.
اقرأ المؤقتات بدلًا من تخمين فاصل زمني
تعمل رسائل الإبقاء لأنها تصل أكثر مما تنتهي الحالة. وهذا يجعل المهلة هي الرقم الذي تحتاجه فعلًا، وهي على Linux قابلة للقراءة على الجهاز الذي ينفذ الترجمة:
sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820
القيمة الأولى هي مهلة تدفق UDP الذي شوهد في اتجاه واحد فقط، والثانية تنطبق حين تُرصد الردود. كلتاهما قصيرة عادةً، والتعيين الذي يصمت سيتبع أيًّا منهما ينطبق على تدفقك.
قارن ذلك الرقم بفاصلك الزمني. إبقاء لمدة 25 ثانية تحت مهلة 30 ثانية يعمل؛ والإبقاء نفسه تحت مهلة 15 ثانية لا يعمل. لا مقدار من إعادة المحاولة يغيّر هذه الحسابات. بعض موجهات المستهلكين وشركات الاتصالات المتنقلة تستخدم قيمًا أقصر بكثير من افتراضي Linux، ولهذا يفشل إعداد يعمل على شبكة على أخرى.
| Observation | What it means | Reasonable response |
|---|---|---|
| Works after traffic, dies when idle | Mapping or firewall state expiring | Lower the keepalive interval |
| Never works, even immediately | No return route, listener or firewall | Stop tuning keepalive |
| Works for hours, then dies once | Carrier-side translation or address change | Check the endpoint and logs together |
افحص المستمع وجدار الحماية كلًا على حدة
التعيين الحي ضروري وغير كاف. يجب أن يستمع التطبيق على صندوق المنزل على العنوان الصحيح، ويجب أن يسمح جدار حماية المضيف بالحزمة بعد فك تشفيرها.
sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health
إذا كان المقبس مرتبطًا بعنوان الواجهة الفيزيائية فقط بدلًا من عنوان النفق، فتُسقط الحزم الواردة على النفق قبل الرجوع إلى جدار الحماية. هذا الفشل يبدو من الجانب السحابي مطابقًا لمشكلة تعيين، ويصمد أمام كل تعديل للإبقاء.
فحص قائمة المسموح لا يقل أهمية في الاتجاه الآخر. يجب أن يسمح النظير السحابي بعنوان نفق المنزل كمصدر إذا كان سيرد، ويجب أن يسمح النظير المنزلي بعنوان السحابة كوجهة. حزم الإبقاء حركة موثقة وهي تمارس القواعد نفسها، ولهذا يمكن أن يتعايش إبقاء يبدو ناجحًا مع تطبيق غير ناجح.
انشر التغيير واعرف حدوده
طبّق الإعداد، وأعد تشغيل الواجهة إن كانت تلك طريقة التحديث لديك، ثم كرر اختبار الخمول بدلًا من الاختبار الفوري. انتظر مدة أطول من المهلة التي قرأتها سابقًا، ثم نفّذ طلبًا عكسيًا وأكّد أن العدادات تحركت على الطرفين.
سجّل الفاصل الزمني والمهلة التي قستها بجانبه. قد يغيّر تحديث مستقبلي لبرنامج الموجه، أو الانتقال إلى اتصال متنقل، المهلة. الملاحظة هي ما يتيح لشخص آخر إعادة اشتقاق القيمة بدلًا من نسخها. رقمان على سطر واحد يوفران تحقيقًا كاملًا لاحقًا.
تحمي رسائل الإبقاء الدائمة الحالة. إنها لا تفتح منفذًا، ولا تضيف مدخلًا إلى قائمة المسموح، ولا تجعل مستمعًا يظهر. عندما لا يعمل الاتصال العكسي إطلاقًا، يكون الخلل أحد تلك الثلاثة، ويصف دليل البدء السريع لـ WireGuard إعداد الإبقاء بالشروط الضيقة نفسها.