Git 403 مع اتصال VPN: تحديد الجهة التي ترد
الخطأ 403 استجابة وليس حكماً على VPN. حدد المكون الذي رفض الطلب، ثم قارن متغيراً واحداً في كل مرة بين الشبكات وسجل ما تغير.
الأمر يعمل على شبكة Wi-Fi في المكتب ويفشل على نقطة اتصال الهاتف، مع اتصال VPN في الحالتين. يعيد Git الرمز 403 ويأتي الخطأ في ثلاثة أسطر. الإغراء هو اعتبار نقطة الاتصال سبباً وتغيير إعدادات الشبكة حتى يتحرك شيء ما. الرمز HTTP 403 يعني أن خادماً فهم الطلب ورفضه، لذا فالسؤال المفيد هو أي خادم، والخطوة المفيدة التالية هي مقارنة تغيّر شيئاً واحداً في كل مرة.
اقرأ الحالة قبل الشبكة
الرمز 403 ليس فشل بحث ولا مهلة TCP ولا مصافحة TLS لم تكتمل. إنه قرار اتخذه شيء ما حلل طلبك.
إلى أن تعرف ما الذي اتخذ ذلك القرار، فكل تغيير في الشبكة تجربه هو تخمين مصحوب بقصة معقولة.
من يمكنه أن يجيب بالرمز 403؟
تطبيق المستودع ليس إلا مرشحاً واحداً. قد يجلس أمامه وكيل أو بوابة أو خدمة تصفية ويجيب أولاً، ويرى العميل الحالة نفسها في الحالتين. احفظ الحالة والترويسات ذات الصلة ونص الخطأ بعد التنقيح، ثم اربطها بسجلات الخدمة المصرح بها. قد يختلف عنوان URL البعيد ونقطة النهاية التي وصلت إليها فعلاً بسبب DNS أو إعداد الوكيل، لذا تحقق من العنوان المهيأ ومن العملية التي ترسل الطلب.
إذا لم يصل الرفض إلى المستودع أبداً فستكون سجلاته صامتة، وهذا الصمت دليل.
قارن متغيراً واحداً في كل مرة
مقارنة نقطة الاتصال مفيدة لأنها تضيّق المشكلة، لا لأنها تثبت سبباً. قد تختلف شبكتان في العنونة وعائلة IP والوكيل وتفاوض TLS وسياسة الخروج في اللحظة نفسها.
غيّر شيئاً واحداً في كل محاولة وسجل الباقي. الجدول أدناه هو الحد الأدنى الذي أحتفظ به في ملاحظة أثناء ذلك:
| Keep constant | Record when it changes |
|---|---|
| Repository, operation and credentials | Resolved address and IP family |
| Git process and configuration | Proxy use and the responding component |
| Intended VPN profile | Actual route and exit seen by the service |
الصف الوحيد الذي يختلف بين التشغيل الناجح والفاشل هو حيث تذهب الساعة القادمة.
الحل البديل دليل، لا تفسير
قد يؤدي فرض عائلة عناوين أخرى إلى تغيير الوجهة أو المسار أو الوسيط الذي يتم اختياره، لذا قد يغيّر النتيجة دون أن يثبت أن IPv6 غير متوافق مع المستودع. إصدار TLS مختلف يتم التفاوض عليه هو ملاحظة في الفئة نفسها. لا يبرر أي منهما تعطيل فحوص الشهادات أو إضعاف الاتصال. تتبع سياسة المكون الرافض وسجلاته حتى القرار الفعلي بدلاً من التوقف عند أول تغيير ينجح.
أي حل بديل لا تستطيع تفسيره سيفشل مرة أخرى في مكان آخر.
اكتب تقريراً يصلح المشكلة
أعط مالك المكون الذي رد العملية نفسها ومسارين والمكون الذي قال لا. أزل ترويسات التخويل وبيانات الاعتماد المضمنة وتفاصيل المستودع الخاص قبل مشاركة أي شيء.
التقرير المفيد قصير وقابل للتكرار ويسمي الطبقة لا العرض.
الفحص الذي أجريه بالترتيب
تأكد من عنوان URL البعيد ونقطة النهاية المحلولة، ثم التقط الحالة والترويسات من تشغيل فاشل. أعد العملية نفسها على شبكة ثانية وقارن السجلين.
ثم خذ ذلك الفرق إلى المكون الذي أجاب:
- إعداد الوكيل على العميل وعلى الشبكة.
- سياسة الخروج أو التصفية أمام المستودع.
- نطاق الرمز أو الحساب، بما في ذلك الانتهاء وشروط SSO.
- إذن المستودع للهوية التي يمثلها الرمز.
دلالات الحالة نفسها موجودة في RFC 9110، ويستحق اقتباسها عندما تكتب التقرير.