WireGuard يعمل على بيانات الجوال لكن ليس على شبكة wifi نفسها
الطلب من داخل الشبكة المحلية إلى العنوان العام للموجّه يسلك مساراً مختلفاً عن طلب عبر بيانات الجوال. اختبر من الخارج ثم اختر مساراً محلياً.
يرتفع النفق على بيانات الجوال ثم يبقى عند جارٍ الاتصال في المنزل، مع الملف نفسه والمفتاح نفسه للقرين ودون أي تغيير في الإعدادات بينهما. الفرق في الرحلة: الطلب من داخل الشبكة المحلية إلى العنوان العام للموجّه ليس الرحلة نفسها التي يقطعها طلب قادم من الإنترنت. معظم بوابات المنزل إما لا تنفّذ مسار العودة أصلاً أو تنفّذه لبروتوكولات معينة فقط. لذلك تبدو الأعراض كأنها مفتاح معطوب مع أن المفتاح لم يتغيّر. حدّد المسار الذي فشل قبل أن تلمس مفتاحاً أو إعادة توجيه منفذ أو ملف عميل.
عنوان واحد ومساران مختلفان
من الخارج تصل الحزمة إلى العنوان العام للموجّه، فتُسلّمها قاعدة إعادة توجيه المنفذ إلى مستمع WireGuard على المضيف الداخلي. ومن الداخل يتصل العميل بالعنوان العام نفسه، فتخرج الحزمة من العميل وتصل إلى الموجّه ويجب إرجاعها إلى الشبكة المحلية. عند هذا الإرجاع تحديداً يفترق المساران، لأن الموجّه عليه أن يترجم تدفقاً يخرج ويعود للدخول عبر الواجهة نفسها. كثير من التطبيقات تطرحه بدل ترجمته، فينتظر العميل حينها مصافحة لم تُرسل قط.
يُسمى هذا السلوك عادةً NAT loopback أو hairpinning، وهو من شأن الموجّه لا من شأن WireGuard؛ ويوضح RFC 4787 حالات الترجمة التي قد تدعمها البوابة أو لا تدعمها. أما WireGuard نفسه فلا رأي له في المسار، لأنه لا يرى إلا الحزم التي تصل إلى واجهته. وعندما يطرح الموجّه التدفق لا يستقبل الخادم الخفي شيئاً أبداً، ويبلّغ العميل بانتهاء مهلة المصافحة، ويبقى سجل الخادم فارغاً. السجل الفارغ إذن دليل على موضع توقف الحزمة، لا برهان على سقوط الخادم. وهو أيضاً سبب عدم تغيير إعادة التثبيت شيئاً.
والعكس مهم أيضاً: سجل خادم يُظهر محاولة مصافحة من عنوان الشبكة المحلية يثبت أن الحزمة وصلت وأن المسار سليم، وهذا ينقل التحقيق إلى المفاتيح والعناوين المسموح بها. اقرأ السجل لما يثبته، لا لما كنت تأمل رؤيته.
أعد إنتاج المشكلة قبل أن تغيّر شيئاً
جرّب من شبكة خارجية مُصرّح بها بالجهاز نفسه والملف نفسه، ثم كرّر الاختبار داخل الشبكة المحلية دون تحرير أي شيء. المصافحة المكتملة في الخارج والعميل الذي لا يغادر الجهاز في الداخل يعيدان إنتاج الحالة بدل تخمينها. يجب أن تستخدم المحاولتان الملف نفسه، وإلا فلا تثبت المقارنة شيئاً.
ثم انظر إلى ما يُحلّ إليه اسم نقطة النهاية لهذا الجهاز. تُظهر الأوامر الثلاثة التالية أيضاً العنوان الذي اتصل به العميل فعلاً:
wg show wg0 endpoints
dig +short vpn.example.net A
resolvectl query vpn.example.netيبلّغ الأمر الأول نقطة النهاية التي تستخدمها الواجهة الآن، ويُظهر الآخران ما يُحلّ إليه الاسم على هذه الآلة. العميل الذي يتصل بعنوان عام وهو على الشبكة نفسها التي عليها الخادم يستخدم مسار hairpin. أما العميل الذي يتصل بعنوان الشبكة المحلية فلا يفعل ذلك، والعطل هناك يخص تحقيقاً آخر. هذا التمييز يحدد ما إذا كان القسم التالي ينطبق أصلاً.
طرق مدعومة للوصول إلى خادم قريب
أوضح ترتيب هو إجابة أفق منقسم: يُحلّ الاسم العام إلى العنوان العام للإنترنت وإلى عنوان الشبكة المحلية للخادم للعملاء في الداخل. يحتفظ الملف باسم نقطة نهاية واحد ويختار المُحلّل المسار. يتطلب ذلك التحكم في إجابة DNS الداخلية، وهو ما تقدمه عادةً موجهات المنزل ويمكن للمؤسسة ترتيبه عمداً. دون ذلك التحكم يبقى الخيار بين وظيفة في الموجّه أو ملف ثانٍ.
وظيفة الموجّه هي الانعكاس: تترجم البوابة التدفق من الداخل إلى الخارج ثم تعيده إلى الداخل. حيث تعمل لا تحتاج إلى أي تغيير في العميل، وحيث لا تعمل لا ينقذها أي إعداد في العميل. اختبرها بمراقبة سجل الخادم أثناء محاولة داخلية بدل قراءة قائمة وظائف الموجّه.
تحرير الملف إلى عنوان خاص تشخيص وليس تصميماً. يثبت أن الخادم يستجيب داخل الشبكة المحلية، ويكسر الملف نفسه في اللحظة التي يغادر فيها الحاسوب المحمول المنزل.
| Approach | What it depends on | Where it fails |
|---|---|---|
| Split-horizon name | Control of the internal DNS answer | Clients that resolve through a server outside the zone |
| Router reflection | Gateway support for hairpin translation | Routers that drop the flow silently |
| Private address in the profile | Nothing beyond the LAN | Every network except the one at home |
أبقِ الملف صالحاً للاستخدام خارج المنزل
أياً كان المسار الذي تختاره، اترك فحص الهوية وشأنه. عنوان نقطة النهاية ليس هوية القرين، وتغيير العنوان لا يبرر أبداً قبول مفتاح عام غريب يصادف أنه يستجيب. يصادق WireGuard بالمفتاح، لذا يفشل المضيف الخاطئ في المصافحة بدل منح وصول إلى شيء غير متوقع.
إذا تحرّك العنوان العام فإن DNS الديناميكي هو ما يبقي الاسم مفيداً، وسلوك تحديث العميل يحدد مدى سرعة وصول التغيير. اختبر ذلك من الخارج بعد تغيير العنوان، لأن حالة الشبكة المحلية لا تستطيع تأكيده. انتبه إلى مُحلّل يخزّن الإجابة القديمة مؤقتاً لما يتجاوز عمر السجل. الاسم الذي ما زال يشير إلى العنوان السابق يبدو تماماً كخادم سقط.
دوّن الاسم الذي يستخدمه الملف وما يُحلّ إليه على كل جانب من الحدود. الملف الذي يعتمد على وظيفة في الموجّه لم يسجلها أحد هو مكالمة دعم تنتظر تحديث البرنامج الثابت التالي. الملاحظة تخبر الشخص التالي أيضاً هل العطل الداخلي هو حالة hairpin المعروفة أم شيء جديد.