پلهای SOCKS در socat: حفظ نام میزبان TLS وبسایت
برای یک مقصد SOCKS از یک شنونده TCP حلقهای استفاده کنید و هویت HTTP و TLS را در برنامه حفظ کنید.
یک برنامه گزینه 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 را سرکوب نکنید.