لا يوفّر التطبيق خيار SOCKS، لكنه يستطيع الاتصال بعنوان TCP مختار. ويمكن لمهايئ ذي هدف ثابت أن يوفّر محادثة SOCKS لوجهة واحدة. ولا يلزم أن يصبح وكيلاً أمامياً عاماً آخر.

بالنسبة لبنى socat التي توفّر SOCKS4A، يوضّح المثال التالي ترتيباً توضيحياً:

socat TCP4-LISTEN:9443,bind=127.0.0.1,reuseaddr,fork \
  SOCKS4A:127.0.0.1:service.example.net:443,socksport=1080

نقطة نهاية SOCKS هي المنفذ المحلي 1080. يستمع المهايئ على المنفذ المحلي 9443 ويطلب من تلك النقطة service.example.net:443. هذه قيم مثال، وليست نشراً كاملاً لخدمة.

للمهايئ هدف ثابت واحد

كل اتصال TCP مقبول يطلب الخدمة نفسها. التطبيق الذي يتصل بـ 9443 يرسل بايتات بروتوكوله المعتادة؛ وsocat يوفّر تفاوض SOCKS4A. إرسال طلب HTTP CONNECT جديد إلى 9443 لن يختار وجهة أخرى—بل سيرسل تلك البايتات إلى الخدمة الثابتة.

يقدّم SOCKS4A اسم مضيف إلى نقطة نهاية SOCKS ليُحلّ عن بُعد. وهذا يختلف عن صيغة SOCKS4 التي تستخدم عنواناً يختاره العميل. يجب أن يدعم المصدر الأعلى المختار—بما في ذلك مرشّح عام من قائمة وكلاء SOCKS4—معالجة اسم المضيف في SOCKS4A والمصادقة المطلوبة؛ وهذا المثال ليس وصفة تسجيل دخول بكلمة مرور SOCKS5.

اتصل محلياً وحدّد الخدمة الحقيقية

تغيير عنوان HTTPS إلى https://127.0.0.1:9443/ يغيّر اسم المضيف الذي قد يستخدمه العميل لـ TLS وHTTP. لن تصبح شهادة service.example.net شهادة صالحة لـ loopback.

حين يدعم العميل توجيهاً منفصلاً للاتصال، احتفظ بهوية العنوان الأصلي. يمكن لـ Curl أن يوضّح هذا الفرق:

curl --noproxy '*' \
  --connect-to service.example.net:443:127.0.0.1:9443 \
  https://service.example.net/

يذهب المقبس إلى المهايئ المحلي بينما يبقى تحقّق TLS ووجهة HTTP هما service.example.net. وتحتاج التطبيقات الأخرى إلى تحكّم مدعوم مكافئ خاص بها؛ وليس كل عميل يوفّره.

يحدّ ربط loopback من التعرّض الشبكي، لكن عمليات محلية أخرى مؤهّلة قد تصل إليه. أبقِ عمر الخدمة والمستخدمين مناسبين. واحتفظ بتحقّق TLS بدل كبت خطأ الهوية الناتج عن عنوان loopback.

مقالات ذات صلة