لماذا يتصل curl بـ localhost بدلاً من عنوان URL البعيد
افصل الوكيل الموروث وملف curlrc الافتراضي والهدف الحقيقي قبل إلقاء اللوم على VPN. ثلاث عمليات تشغيل مضبوطة تُبقي التحقق من TLS مفعّلاً.
إذا حاول curl الاتصال بـ localhost بغض النظر عن عنوان URL الذي أعطيته له، فإن VPN هو المكان الخطأ للبدء. قد يكون وكيل HTTP أو SOCKS محلي هو الاتصال الأول المقصود، حتى عندما تكون الخدمة التي تريدها في مكان آخر تماماً. وإذا لم يعد ذلك الوكيل يعمل، فإن محاولة localhost تفشل قبل أن يصل curl إلى الوجهة على الإطلاق. كما أن استجابة الوكيل ليست دليلاً على أن الوجهة قد ردّت.
نفّذ هذه الخطوات بالترتيب وتوقف عند أول خطوة تغيّر محاولة الاتصال الأولى.
اقرأ قواعد الوكيل الخاصة بـ curl أولاً
يقرأ curl متغيرات الوكيل الخاصة بالبروتوكول مثل https_proxy وHTTPS_PROXY، إضافة إلى ALL_PROXY عندما لا تنطبق قيمة خاصة بالبروتوكول. افحص بيئة الصدفة أو الخدمة أو المهمة التي تُشغّل curl فعلياً، وليس تلك الموجودة في طرفيتك الحالية. فقد ترث مهمة CI ووحدة systemd وصدفة تفاعلية ثلاث مجموعات مختلفة. والتخمين من الصدفة المرئية هو ما يجعل هذا التحقيق يضيّع بعد ظهر كامل.
ثمة استثناء واحد يستحق الحفظ. يقبل curl http_proxy بالحروف الصغيرة فقط؛ أما HTTP_PROXY بالأحرف الكبيرة فيُتجاهل، ولهذا تتصرف البيئة نفسها بشكل مختلف في أدوات أخرى.
اقرأ القيم بشكل خاص، لأن عنوان URL للوكيل غالباً ما يحمل بيانات اعتماد.
ثم افحص ملف إعدادات curl الافتراضي بحثاً عن تجاوزات للوكيل أو للاتصال، وتأكد من الملف التنفيذي الذي تشغّله فعلاً. فالاسم المستعار في الصدفة أو دالة أو سكربت غلاف يمكنه إضافة خيارات لا تظهر أبداً في سطر أوامرك.
قارن ثلاث استدعاءات مع تفعيل TLS
استخدم وجهة تشخيص واحدة معتمدة والملف التنفيذي نفسه في العمليات الثلاث.
curl -v https://service.corp.example/status
curl -q -v https://service.corp.example/status
curl -q --proxy '' -v https://service.corp.example/status
-q يكبت ملف curlrc الافتراضي ويجب أن يكون المعامل الأول في السطر ليعمل. وهو لا يزيل متغيرات بيئة الوكيل، وهذا ما يفاجئ من يتوقع ذلك. أما الصيغة الثالثة فتضيف قيمة فارغة لـ --proxy، متجاوزةً وكيلاً طلبته البيئة لهذا الاستدعاء فقط. قارن محاولة الاتصال الأولى في كل مخرجات، لا رمز الحالة النهائي.
قد تكشف المخرجات المطوّلة الترويسات والرموز وبيانات اعتماد الوكيل، فاحتفظ بها محلياً واقرأ المقتطفات قبل مشاركتها.
ما يستبعده كل ناتج
إذا كان حذف الإعداد الافتراضي يغيّر الاتصال، فملف الإعدادات هو المصدر. وإذا كان تعطيل الوكيل الموروث صراحةً يغيّره، فمتغير البيئة هو المصدر. وإذا لم يغيّره أي منهما وما زال localhost يظهر، فانظر إلى تجاوزات الاتصال في سطر الأوامر وتحليل أسماء المضيفين والملف التنفيذي المختار. لكل واحد من هذه إصلاح مختلف، ولا شيء منها تغيير في التوجيه.
تحميل مكتبات مخصصة أو سلوك شبكة محقون طبقة لاحقة، ومتغير بيئة وحده ليس دليلاً عليها.
افصل قرار الوكيل عن VPN
بمجرد أن يختار curl وجهة مباشرة، لا يزال نظام التشغيل يوجّه ذلك الاتصال. وتعطيل وكيل تطبيق لا يعطّل مسار VPN أو سياسة التصفية الخاصة به. نفّذ مقارنات الوصول المباشر فقط حيث يكون ذلك التشخيص مصرحاً به. فالاختبار الذي يتجاوز السياسة بهدوء ليس نتيجة صالحة، بل حادث.
إذا كان وكيل محلي مطلوباً، فأعد خدمته وعنوانه بدلاً من حذف إعداداته.
إذا كانت وجهات خاصة مختارة فقط تحتاج إلى وصول مباشر، فأضف استثناءً ضيقاً معتمداً واحتفظ بالوكيل لكل ما عدا ذلك. احفظ الخطأ الأول من المسار المختار، لأن رفض localhost ورفض CONNECT من الوكيل وفشل الشهادة وخطأ التفويض تحدد أربع مراحل مختلفة.