ساکس پروکسی چیست؟ بررسی SOCKS5، کاربردها، مزایا و تفاوت با VPN

هنگامی که یک برنامه به اینترنت متصل می‌شود، معمولاً ارتباط را مستقیماً با سرور مقصد برقرار می‌کند. در این حالت، آدرس IP کاربر برای سرور مقصد قابل مشاهده است و مسیر ارتباط نیز براساس تنظیمات عادی شبکه و ارائه‌دهنده اینترنت تعیین می‌شود. استفاده از ساکس پروکسی یا SOCKS Proxy این فرایند را تغییر می‌دهد و یک سرور واسط را میان کاربر و مقصد قرار می‌دهد.

در این ساختار، برنامه ابتدا به سرور SOCKS متصل می‌شود و از آن می‌خواهد ارتباط موردنظر را با مقصد برقرار کند. سپس سرور پروکسی داده‌ها را میان کاربر و سرور مقصد جابه‌جا می‌کند. در نتیجه، مقصد معمولاً آدرس IP سرور پروکسی را مشاهده می‌کند، نه آدرس IP مستقیم کاربر.

ساکس پروکسی برخلاف HTTP Proxy فقط برای مرور صفحات وب طراحی نشده است. این پروتکل می‌تواند اتصال بسیاری از برنامه‌های مبتنی بر TCP و در نسخه SOCKS5، بخشی از ترافیک UDP را نیز عبور دهد. به همین دلیل در مرورگرها، ابزارهای خط فرمان، نرم‌افزارهای انتقال فایل، پیام‌رسان‌ها، برنامه‌های تست شبکه و تونل‌های SSH کاربرد دارد.

نکته مهم: SOCKS به‌خودی‌خود یک پروتکل رمزنگاری نیست. استفاده از SOCKS5 به این معنا نیست که محتوای ارتباط شما به‌طور خودکار رمزگذاری می‌شود. امنیت محتوا همچنان به پروتکل اصلی مانند HTTPS، SSH یا TLS بستگی دارد.

ساکس پروکسی یا SOCKS Proxy چیست؟

SOCKS یک پروتکل واسط برای هدایت اتصال‌های شبکه از طریق یک سرور پروکسی است. برنامه‌ای که از SOCKS پشتیبانی می‌کند، به‌جای برقراری ارتباط مستقیم با مقصد، ابتدا به سرور SOCKS متصل می‌شود و آدرس و پورت مقصد را در اختیار آن قرار می‌دهد.

سرور SOCKS پس از بررسی درخواست و در صورت نیاز احراز هویت کاربر، یک اتصال جداگانه با مقصد ایجاد می‌کند. پس از برقراری ارتباط، داده‌ها میان این دو اتصال منتقل می‌شوند:

  1. اتصال کاربر یا برنامه به سرور SOCKS
  2. اتصال سرور SOCKS به مقصد نهایی

برای مثال، اگر مرورگر شما از طریق یک SOCKS5 Proxy در کشور دیگری به یک وب‌سایت متصل شود، وب‌سایت مقصد معمولاً آدرس IP سرور SOCKS را مشاهده خواهد کرد.

با این حال، باید میان مخفی‌شدن آدرس IP از مقصد و ناشناس‌ماندن کامل تفاوت قائل شد. ارائه‌دهنده پروکسی ممکن است آدرس IP واقعی کاربر، زمان اتصال، حجم ترافیک و مقصدهای ارتباطی را ثبت کند.

ساکس پروکسی چگونه کار می‌کند؟

فرایند اتصال از طریق SOCKS5 معمولاً شامل مراحل زیر است:

  1. برنامه کاربر یک اتصال TCP با سرور SOCKS برقرار می‌کند.
  2. کاربر و سرور درباره نسخه پروتکل و روش احراز هویت مذاکره می‌کنند.
  3. در صورت نیاز، اطلاعات احراز هویت بررسی می‌شود.
  4. برنامه، آدرس و پورت مقصد را برای سرور SOCKS ارسال می‌کند.
  5. سرور پروکسی اتصال را با مقصد برقرار می‌کند.
  6. داده‌ها میان برنامه و مقصد از طریق سرور پروکسی منتقل می‌شوند.

در یک اتصال معمولی ساختار ارتباط به شکل زیر است:

Client ───────────────> Destination Server

اما هنگام استفاده از SOCKS Proxy، مسیر ارتباط به شکل زیر تغییر می‌کند:

Client ──────> SOCKS Proxy Server ──────> Destination Server

سرور مقصد ارتباط ورودی را از سمت پروکسی دریافت می‌کند. بنابراین در بیشتر سناریوها IP عمومی پروکسی را به‌عنوان مبدأ اتصال مشاهده خواهد کرد.

آیا SOCKS مخفف Socket Secure است؟

در بسیاری از منابع اینترنتی SOCKS به‌عنوان مخفف عبارت Socket Secure معرفی می‌شود. با این حال، در مشخصات اصلی پروتکل، SOCKS بیشتر به‌عنوان نام این فناوری به کار رفته و تعریف رسمی و صریحی برای چنین مخففی ارائه نشده است.

بنابراین بهتر است SOCKS را نام یک پروتکل پراکسی مبتنی بر اتصال و سوکت بدانیم و از ارائه عبارت Socket Secure به‌عنوان یک تعریف رسمی و قطعی خودداری کنیم.

SOCKS در کدام لایه شبکه فعالیت می‌کند؟

گاهی SOCKS به‌صورت قطعی یک پروتکل لایه پنجم مدل OSI معرفی می‌شود. این دسته‌بندی برای توضیح ساده معماری قابل استفاده است، اما تطبیق کامل پروتکل‌های واقعی اینترنت با لایه‌های مدل OSI همیشه دقیق نیست.

در عمل بهتر است SOCKS را یک پراکسی سطح اتصال یا Application-Level Relay در نظر بگیریم. این پروتکل اتصال‌های برنامه را دریافت کرده و آن‌ها را از طریق یک اتصال جدید به مقصد هدایت می‌کند.

SOCKS یک تونل کامل IP ایجاد نمی‌کند و به‌طور معمول برای پروتکل‌های مستقیم لایه شبکه مانند ICMP طراحی نشده است. به همین دلیل دستورهایی مانند Ping معمولاً از یک پراکسی SOCKS عبور نمی‌کنند.

نسخه‌های مختلف SOCKS کدام‌اند؟

نسخه‌های رایج این پروتکل شامل SOCKS4، SOCKS4a و SOCKS5 هستند. امروزه SOCKS5 به دلیل امکانات بیشتر، پشتیبانی گسترده‌تر و قابلیت احراز هویت، انتخاب مناسب‌تری برای بیشتر کاربردها محسوب می‌شود.

SOCKS4 چیست؟

SOCKS4 نسخه قدیمی‌تر این پروتکل است و عمدتاً برای هدایت اتصال‌های TCP طراحی شده است. این نسخه از IPv4 استفاده می‌کند و امکانات استاندارد محدودی برای احراز هویت دارد.

در SOCKS4 معمولاً نام دامنه ابتدا توسط سیستم کاربر به IP تبدیل می‌شود و سپس آدرس IP مقصد به سرور پروکسی ارسال می‌شود. این موضوع ممکن است باعث شود درخواست DNS از مسیر محلی کاربر ارسال شود.

SOCKS4a چیست؟

SOCKS4a توسعه‌ای بر SOCKS4 است که اجازه می‌دهد نام دامنه به‌جای IP مقصد برای سرور پروکسی ارسال شود. در این حالت، تبدیل نام دامنه به IP توسط سرور پروکسی انجام می‌شود.

این قابلیت می‌تواند در شبکه‌هایی که DNS مقصد از سمت کاربر قابل دسترسی نیست یا کاربر نمی‌خواهد نام دامنه را به DNS محلی ارسال کند، مفید باشد.

SOCKS5 چیست؟

SOCKS5 نسخه کامل‌تر و جدیدتر این پروتکل است و نسبت به SOCKS4 امکانات بیشتری ارائه می‌دهد. مهم‌ترین قابلیت‌های SOCKS5 عبارت‌اند از:

  • پشتیبانی از روش‌های مختلف احراز هویت
  • پشتیبانی از TCP
  • پشتیبانی از UDP Relay
  • پشتیبانی از IPv4
  • پشتیبانی از IPv6
  • پشتیبانی از نام دامنه به‌عنوان مقصد
  • امکان واگذاری DNS Resolution به سرور پروکسی
  • پشتیبانی از فرمان‌های CONNECT، BIND و UDP ASSOCIATE

تفاوت SOCKS4 و SOCKS5 چیست؟

ویژگیSOCKS4SOCKS5
پشتیبانی از TCPدارددارد
پشتیبانی از UDPندارداز طریق UDP ASSOCIATE
احراز هویتمحدود و غیراستاندارددارای سازوکار مذاکره احراز هویت
IPv4دارددارد
IPv6ندارددارد
نام دامنهدر SOCKS4aبه‌صورت مستقیم پشتیبانی می‌شود
DNS سمت پروکسیدر SOCKS4aدر صورت پشتیبانی و تنظیم برنامه
کاربرد پیشنهادیسازگاری با سیستم‌های قدیمیاغلب کاربردهای جدید

در بیشتر پروژه‌های جدید، استفاده از SOCKS5 توصیه می‌شود؛ مگر اینکه یک نرم‌افزار قدیمی فقط با SOCKS4 سازگار باشد.

فرمان‌های اصلی SOCKS5

SOCKS5 سه فرمان اصلی برای مدیریت انواع مختلف اتصال تعریف می‌کند.

فرمان CONNECT

فرمان CONNECT متداول‌ترین فرمان SOCKS5 است. برنامه از سرور پروکسی می‌خواهد یک اتصال TCP با آدرس و پورت مقصد برقرار کند.

کاربردهای رایج این فرمان شامل موارد زیر است:

  • مرور وب
  • اتصال HTTPS
  • اتصال SSH
  • ارسال و دریافت ایمیل
  • انتقال فایل
  • اتصال نرم‌افزارهای مبتنی بر TCP

فرمان BIND

فرمان BIND برای برنامه‌هایی طراحی شده است که علاوه بر اتصال خروجی، باید اتصال ورودی مرتبطی را نیز دریافت کنند. کاربرد سنتی آن در بعضی حالت‌های FTP و پروتکل‌هایی با کانال داده جداگانه بوده است.

پشتیبانی از BIND در تمام نرم‌افزارها و سرورهای SOCKS یکسان نیست و امروزه در مقایسه با CONNECT کمتر استفاده می‌شود.

فرمان UDP ASSOCIATE

فرمان UDP ASSOCIATE به کاربر اجازه می‌دهد دیتاگرام‌های UDP را از طریق Relay مربوط به SOCKS5 ارسال و دریافت کند.

پشتیبانی از این قابلیت می‌تواند برای برخی برنامه‌های DNS، تماس صوتی، بازی آنلاین و نرم‌افزارهای مبتنی بر UDP مفید باشد. با این حال، همه سرورهای SOCKS5 و همه برنامه‌ها از UDP ASSOCIATE پشتیبانی نمی‌کنند.

تفاوت SOCKS Proxy و HTTP Proxy چیست؟

HTTP Proxy برای ترافیک HTTP و در برخی حالت‌ها HTTPS طراحی شده است و ساختار درخواست‌های وب را می‌شناسد. این نوع پروکسی می‌تواند براساس URL، Header، Hostname یا سایر اطلاعات مرتبط با HTTP تصمیم‌گیری کند.

در مقابل، SOCKS معمولاً محتوای پروتکل کاربردی را تحلیل نمی‌کند و بیشتر نقش یک واسط برای انتقال اتصال را دارد. به همین دلیل می‌تواند برای مجموعه متنوع‌تری از برنامه‌ها استفاده شود.

ویژگیSOCKS ProxyHTTP Proxy
دامنه کاربردانواع برنامه‌های TCP و برخی UDPعمدتاً HTTP و HTTPS
شناخت محتوای HTTPمعمولاً ندارددارد
امکان Cache وبمعمولاً ندارددر برخی پیاده‌سازی‌ها دارد
فیلتر URL و Headerمحدودامکان‌پذیر است
پشتیبانی از UDPدر SOCKS5 امکان‌پذیر استمعمولاً ندارد
کاربردمسیریابی عمومی‌تر اتصال برنامه‌هاکنترل و مدیریت ترافیک وب

برای سازمانی که به Cache، فیلتر محتوا یا کنترل دقیق درخواست‌های وب نیاز دارد، HTTP Proxy می‌تواند مناسب‌تر باشد. برای برنامه‌هایی که محدود به HTTP نیستند، SOCKS5 انعطاف‌پذیری بیشتری ارائه می‌دهد.

تفاوت SOCKS5 و VPN چیست؟

SOCKS5 و VPN هر دو می‌توانند مسیر ترافیک را از یک سرور واسط عبور دهند، اما معماری و هدف آن‌ها یکسان نیست.

SOCKS معمولاً در سطح برنامه تنظیم می‌شود. بنابراین فقط نرم‌افزارهایی که برای استفاده از پروکسی پیکربندی شده‌اند، ترافیک خود را از آن عبور می‌دهند.

VPN معمولاً یک رابط شبکه مجازی ایجاد می‌کند و می‌تواند تمام ترافیک سیستم یا شبکه‌های مشخص‌شده را از داخل یک تونل عبور دهد. بیشتر پروتکل‌های VPN مدرن نیز ترافیک تونل را رمزگذاری می‌کنند.

ویژگیSOCKS5VPN
سطح عملکردمعمولاً در سطح برنامه یا اتصالمعمولاً در سطح شبکه
پوشش ترافیکفقط برنامه‌های تنظیم‌شدهتمام سیستم یا مسیرهای انتخاب‌شده
رمزنگاری داخلیبه‌صورت پیش‌فرض نداردمعمولاً دارد
پشتیبانی نرم‌افزاربرنامه باید SOCKS را پشتیبانی کنداغلب برای برنامه‌ها شفاف است
پیچیدگی راه‌اندازیمعمولاً ساده‌ترمعمولاً نیازمند تنظیمات بیشتر
کاربرد مناسبهدایت ترافیک یک یا چند برنامهارتباط امن کامل یا اتصال شبکه‌ها

اگر فقط می‌خواهید ترافیک مرورگر یا یک نرم‌افزار خاص را از مسیر دیگری عبور دهید، SOCKS5 می‌تواند کافی باشد. اگر هدف شما حفاظت از کل ارتباط سیستم، دسترسی امن به شبکه داخلی یا اتصال دو شبکه است، VPN معمولاً انتخاب مناسب‌تری خواهد بود.

آیا SOCKS5 ترافیک را رمزگذاری می‌کند؟

خیر. یکی از مهم‌ترین نکاتی که باید درباره SOCKS5 بدانید این است که این پروتکل به‌صورت پیش‌فرض محتوای ترافیک را رمزگذاری نمی‌کند.

اگر از طریق SOCKS5 به یک وب‌سایت HTTPS متصل شوید، ارتباط میان مرورگر و وب‌سایت با TLS رمزگذاری می‌شود. سرور SOCKS محتوای رمزگذاری‌شده را عبور می‌دهد، اما همچنان ممکن است اطلاعاتی مانند زمان اتصال، IP کاربر، IP مقصد و میزان ترافیک را مشاهده کند.

اگر پروتکل اصلی رمزگذاری نشده باشد، مانند HTTP معمولی، FTP ساده یا Telnet، اپراتور سرور پروکسی و سایر نقاط دارای دسترسی به مسیر ارتباط ممکن است قادر به مشاهده محتوای آن باشند.

برای افزایش امنیت می‌توان SOCKS را از داخل یک تونل رمزگذاری‌شده مانند SSH اجرا کرد یا از VPN استفاده نمود.

امنیت احراز هویت نام کاربری و رمز عبور در SOCKS5

SOCKS5 امکان انتخاب روش احراز هویت را فراهم می‌کند. یکی از روش‌های رایج، استفاده از نام کاربری و رمز عبور است.

با این حال، روش استاندارد Username/Password در SOCKS5 رمز عبور را به‌صورت متن واضح در نشست احراز هویت منتقل می‌کند. بنابراین استفاده مستقیم از آن روی یک شبکه غیرقابل اعتماد و بدون تونل رمزگذاری‌شده، امنیت کافی ندارد.

برای کاهش ریسک می‌توان یکی از راهکارهای زیر را استفاده کرد:

  • اجرای SOCKS داخل تونل SSH
  • محدودسازی دسترسی سرور پروکسی براساس IP
  • استفاده از VPN میان کاربر و سرور SOCKS
  • استفاده از روش‌های احراز هویت امن‌تر در پیاده‌سازی‌های سازگار
  • عدم انتشار مستقیم سرور SOCKS بدون کنترل دسترسی

DNS Leak در SOCKS Proxy چیست؟

هنگامی که برنامه به یک دامنه مانند example.com متصل می‌شود، ابتدا باید نام دامنه به آدرس IP تبدیل شود. این فرایند ممکن است توسط سیستم کاربر یا توسط سرور SOCKS انجام شود.

اگر نام دامنه روی سیستم کاربر Resolve شود، درخواست DNS ممکن است مستقیماً برای DNS Server محلی یا ارائه‌دهنده اینترنت ارسال شود؛ حتی اگر اتصال اصلی از SOCKS عبور کند. به این وضعیت در کاربردهای حریم خصوصی، نشت DNS یا DNS Leak گفته می‌شود.

برای جلوگیری از این مشکل، برنامه باید نام دامنه را به خود سرور SOCKS5 ارسال کند تا DNS Resolution در سمت پروکسی انجام شود.

تفاوت socks5 و socks5h در curl

ابزار curl میان دو حالت زیر تفاوت قائل می‌شود:

  • socks5://: نام دامنه توسط سیستم محلی Resolve می‌شود.
  • socks5h://: نام دامنه برای Resolve شدن به سرور پروکسی ارسال می‌شود.

نمونه استفاده با DNS سمت پروکسی:

curl --proxy socks5h://127.0.0.1:1080 https://example.com

یا به شکل زیر:

curl --socks5-hostname 127.0.0.1:1080 https://example.com

نوع عملکرد DNS در برنامه‌های مختلف متفاوت است. بنابراین فقط واردکردن آدرس SOCKS5 تضمین نمی‌کند که تمام درخواست‌های DNS نیز از طریق پروکسی ارسال شوند.

کاربردهای ساکس پروکسی چیست؟

۱. هدایت ترافیک یک برنامه خاص

می‌توان فقط مرورگر، ابزار دانلود، برنامه پیام‌رسان یا نرم‌افزار خاصی را برای استفاده از SOCKS5 تنظیم کرد و سایر برنامه‌ها را روی مسیر عادی اینترنت نگه داشت.

۲. دسترسی کنترل‌شده از شبکه سازمانی

در شبکه‌های سازمانی می‌توان از سرور SOCKS به‌عنوان یک دروازه خروجی کنترل‌شده استفاده کرد. مدیر شبکه می‌تواند مشخص کند چه کاربران یا IPهایی اجازه استفاده از پروکسی را دارند.

۳. تونل‌سازی از طریق SSH

OpenSSH می‌تواند روی سیستم کاربر یک SOCKS Proxy محلی ایجاد کند و ترافیک برنامه‌ها را از داخل تونل رمزگذاری‌شده SSH عبور دهد.

این روش برای دسترسی امن به سرویس‌های راه دور، مدیریت سرورها و استفاده موقت از یک مسیر مطمئن کاربرد دارد.

۴. تست موقعیت و مسیر شبکه

توسعه‌دهندگان و مدیران سیستم می‌توانند از SOCKS Proxy برای بررسی نحوه دسترسی یک سرویس از شبکه یا موقعیت دیگری استفاده کنند.

۵. عبور برنامه‌های غیر HTTP از پروکسی

برخلاف HTTP Proxy، SOCKS5 محدود به مرور وب نیست و می‌تواند برای بسیاری از برنامه‌های مبتنی بر اتصال TCP استفاده شود.

۶. جداسازی مسیر ترافیک برنامه‌ها

در برخی سناریوها لازم است ترافیک یک نرم‌افزار از یک Gateway خاص عبور کند، در حالی که سایر برنامه‌ها از مسیر اصلی شبکه استفاده کنند. تنظیم SOCKS در سطح برنامه این امکان را فراهم می‌کند.

مزایای SOCKS5 Proxy

  • پشتیبانی از طیف متنوعی از برنامه‌ها و پروتکل‌های مبتنی بر TCP
  • امکان پشتیبانی از UDP در پیاده‌سازی‌های سازگار
  • پشتیبانی از IPv4، IPv6 و نام دامنه
  • قابلیت احراز هویت کاربران
  • عدم وابستگی کامل به پروتکل HTTP
  • امکان تنظیم جداگانه برای هر برنامه
  • قابلیت استفاده در تونل SSH
  • امکان Resolve کردن DNS در سمت پروکسی
  • راه‌اندازی نسبتاً ساده برای کاربردهای موقت
  • مناسب برای تست و عیب‌یابی مسیر ارتباطی

معایب و محدودیت‌های SOCKS Proxy

  • به‌صورت پیش‌فرض ترافیک را رمزگذاری نمی‌کند.
  • تمام برنامه‌ها از SOCKS پشتیبانی نمی‌کنند.
  • معمولاً فقط ترافیک برنامه‌های تنظیم‌شده را پوشش می‌دهد.
  • ممکن است DNS همچنان به‌صورت محلی Resolve شود.
  • همه سرورها از UDP ASSOCIATE پشتیبانی نمی‌کنند.
  • Ping، ARP و بسیاری از پروتکل‌های مستقیم شبکه از آن عبور نمی‌کنند.
  • ارائه‌دهنده پروکسی می‌تواند اطلاعات ارتباط را ثبت کند.
  • پروکسی عمومی و ناشناس ممکن است ناامن یا آلوده باشد.
  • استفاده از سرور دور می‌تواند تأخیر و افت سرعت ایجاد کند.
  • SOCKS جایگزین فایروال، آنتی‌بدافزار یا VPN سازمانی نیست.

آیا SOCKS Proxy باعث ناشناس‌شدن کامل می‌شود؟

خیر. SOCKS Proxy می‌تواند IP مستقیم کاربر را از سرور مقصد مخفی کند، اما ناشناس‌بودن کامل را تضمین نمی‌کند.

وب‌سایت‌ها و سرویس‌های آنلاین ممکن است کاربران را با روش‌های دیگری شناسایی کنند، از جمله:

  • Cookie و Session
  • ورود به حساب کاربری
  • اثر انگشت مرورگر
  • شناسه‌های تبلیغاتی
  • WebRTC
  • DNS Leak
  • رفتار و الگوی استفاده
  • اطلاعات ثبت‌شده توسط سرور پروکسی

بنابراین تغییر IP تنها یکی از بخش‌های حریم خصوصی آنلاین است و نباید با ناشناس‌ماندن کامل اشتباه گرفته شود.

آیا استفاده از SOCKS Proxy سرعت اینترنت را افزایش می‌دهد؟

در حالت عادی افزودن یک سرور واسط، مسیر ارتباط را طولانی‌تر می‌کند و ممکن است باعث افزایش Latency و کاهش سرعت شود. سرعت نهایی به عوامل مختلفی بستگی دارد:

  • فاصله جغرافیایی سرور پروکسی
  • ظرفیت پردازشی و پهنای باند سرور
  • تعداد کاربران هم‌زمان
  • کیفیت مسیر کاربر تا پروکسی
  • کیفیت مسیر پروکسی تا مقصد
  • میزان Packet Loss
  • محدودیت سرعت اعمال‌شده توسط ارائه‌دهنده

در برخی شرایط خاص ممکن است مسیر پروکسی به یک مقصد بهتر از مسیر مستقیم باشد، اما SOCKS5 به‌خودی‌خود یک فناوری افزایش سرعت اینترنت نیست.

ساخت SOCKS5 Proxy با SSH

یکی از روش‌های امن و سریع برای ایجاد یک SOCKS Proxy شخصی، استفاده از قابلیت Dynamic Port Forwarding در SSH است.

در لینوکس، macOS و ویندوزهای دارای OpenSSH Client می‌توان دستور زیر را اجرا کرد:

ssh -D 127.0.0.1:1080 -N -T user@server.example.com

توضیح گزینه‌ها:

  • -D 127.0.0.1:1080: ایجاد SOCKS Proxy محلی روی پورت 1080
  • -N: اجرا نکردن فرمان روی سرور راه دور
  • -T: ایجاد نکردن ترمینال تعاملی
  • user@server.example.com: نام کاربری و آدرس سرور SSH

پس از ایجاد تونل، می‌توان curl را به آن متصل کرد:

curl --proxy socks5h://127.0.0.1:1080 https://example.com

در این حالت، ارتباط میان سیستم شما و سرور SSH رمزگذاری می‌شود و سرور SSH نقش SOCKS Proxy را برای اتصال‌های خروجی ایفا می‌کند.

هشدار امنیتی: پراکسی محلی را روی آدرس 127.0.0.1 اجرا کنید تا سایر دستگاه‌های شبکه نتوانند بدون مجوز از آن استفاده کنند. بازکردن SOCKS Proxy روی آدرس 0.0.0.0 می‌تواند آن را در اختیار کل شبکه یا حتی اینترنت قرار دهد.

تنظیم SOCKS5 در مرورگر

برخی مرورگرها امکان تنظیم مستقیم SOCKS Proxy را فراهم می‌کنند و برخی دیگر از تنظیمات Proxy سیستم‌عامل استفاده می‌کنند.

برای تنظیم معمولاً به اطلاعات زیر نیاز دارید:

  • آدرس IP یا نام سرور SOCKS
  • شماره پورت
  • نسخه SOCKS5
  • نام کاربری و رمز عبور در صورت نیاز
  • گزینه Proxy DNS یا Remote DNS در صورت پشتیبانی

پس از تنظیم، بهتر است موارد زیر آزمایش شوند:

  1. بررسی IP عمومی در یک وب‌سایت معتبر
  2. بررسی عملکرد DNS
  3. بررسی دسترسی به HTTPS
  4. بررسی اینکه فقط برنامه موردنظر از پروکسی استفاده می‌کند
  5. بررسی احتمال WebRTC Leak در مرورگر

تست SOCKS5 با curl

برای بررسی اتصال پروکسی می‌توان از curl استفاده کرد:

curl -v --proxy socks5h://127.0.0.1:1080 https://example.com

برای مشاهده IP خروجی:

curl --proxy socks5h://127.0.0.1:1080 https://api.ipify.org

برای تعیین Timeout اتصال:

curl --connect-timeout 10 --proxy socks5h://127.0.0.1:1080 https://example.com

در محیط‌های عملیاتی بهتر است نام کاربری و رمز عبور پروکسی مستقیماً در خط فرمان قرار داده نشود؛ زیرا ممکن است در Shell History یا فهرست Processها قابل مشاهده باشد.

مشکلات رایج SOCKS Proxy و روش رفع آن‌ها

خطای Connection Refused

این خطا معمولاً به این معناست که سرویسی روی آدرس و پورت مشخص‌شده در حال گوش‌دادن نیست یا Firewall اتصال را مسدود کرده است.

در لینوکس می‌توان پورت محلی را بررسی کرد:

ss -lntp | grep 1080

خطای Authentication Failed

نام کاربری، رمز عبور، روش احراز هویت و تنظیمات سرور را بررسی کنید. برخی برنامه‌ها فقط از روش‌های مشخصی از احراز هویت SOCKS5 پشتیبانی می‌کنند.

بازشدن سایت با IP ولی نه با نام دامنه

این مشکل معمولاً به DNS Resolution مربوط است. در curl به‌جای socks5:// از socks5h:// استفاده کنید تا نام دامنه توسط پروکسی Resolve شود.

کارکردن مرورگر ولی کارنکردن سایر برنامه‌ها

SOCKS معمولاً در سطح برنامه تنظیم می‌شود. هر نرم‌افزار باید جداگانه از پروکسی پشتیبانی کرده یا از ابزارهای Proxy Wrapper استفاده کند.

کارنکردن UDP

مطمئن شوید کلاینت، سرور و برنامه هر سه از UDP ASSOCIATE پشتیبانی می‌کنند. بسیاری از پیاده‌سازی‌ها فقط فرمان CONNECT و ترافیک TCP را پشتیبانی می‌کنند.

کندی یا تأخیر زیاد

سروری نزدیک‌تر، خلوت‌تر و دارای پهنای باند مناسب انتخاب کنید. همچنین Latency و Packet Loss میان کاربر، پروکسی و مقصد را بررسی کنید.

هنگام انتخاب SOCKS Proxy به چه نکاتی توجه کنیم؟

  • پشتیبانی واقعی از SOCKS5
  • امکان Remote DNS Resolution
  • پشتیبانی از IPv6 در صورت نیاز
  • پشتیبانی از UDP در صورت نیاز برنامه
  • وجود احراز هویت و کنترل دسترسی
  • سیاست نگهداری Log
  • موقعیت جغرافیایی سرور
  • ظرفیت و محدودیت پهنای باند
  • تعداد کاربران مشترک روی هر IP
  • اعتبار و شفافیت ارائه‌دهنده
  • امکان استفاده داخل SSH یا VPN
  • عدم قرارگرفتن IP سرور در فهرست‌های مسدودشده

پروکسی‌های رایگان و ناشناس ممکن است ترافیک کاربران را ثبت، دست‌کاری یا تحلیل کنند. از واردکردن اطلاعات حساس در سرویس‌های رمزگذاری‌نشده هنگام استفاده از پروکسی‌های ناشناس خودداری کنید.

چه زمانی از SOCKS5 استفاده کنیم؟

SOCKS5 در شرایط زیر انتخاب مناسبی است:

  • فقط یک یا چند برنامه باید از مسیر پروکسی عبور کنند.
  • برنامه محدود به HTTP و HTTPS نیست.
  • به یک Proxy موقت از طریق SSH نیاز دارید.
  • نیاز به Remote DNS Resolution دارید.
  • می‌خواهید مسیر اتصال یک برنامه را برای تست تغییر دهید.
  • نمی‌خواهید تمام ترافیک سیستم از یک تونل عبور کند.

چه زمانی VPN انتخاب مناسب‌تری است؟

در شرایط زیر بهتر است از VPN استفاده شود:

  • تمام ترافیک سیستم باید محافظت شود.
  • ارتباط میان کاربر و Gateway باید رمزگذاری شود.
  • کاربر باید به چندین سرویس شبکه داخلی دسترسی داشته باشد.
  • قرار است دو دفتر یا دو شبکه به یکدیگر متصل شوند.
  • برنامه‌ها از تنظیم Proxy پشتیبانی نمی‌کنند.
  • کنترل مسیرها، DNS و دسترسی شبکه باید متمرکز باشد.

سؤالات متداول درباره SOCKS Proxy

ساکس پروکسی چیست؟

ساکس پروکسی یک واسط شبکه است که اتصال برنامه را دریافت کرده و آن را از طریق سرور دیگری به مقصد هدایت می‌کند. سرور مقصد معمولاً IP پروکسی را به‌عنوان مبدأ مشاهده می‌کند.

SOCKS5 بهتر است یا SOCKS4؟

SOCKS5 به دلیل پشتیبانی از احراز هویت، IPv6، نام دامنه و UDP امکانات بیشتری دارد و برای بیشتر کاربردهای جدید انتخاب مناسب‌تری است.

پورت پیش‌فرض SOCKS5 چیست؟

پورت 1080 به‌طور رایج برای SOCKS استفاده می‌شود، اما مدیر سرور می‌تواند هر پورت دیگری را برای این سرویس در نظر بگیرد.

آیا SOCKS5 امن است؟

SOCKS5 امکان احراز هویت و کنترل اتصال را فراهم می‌کند، اما به‌صورت پیش‌فرض ترافیک را رمزگذاری نمی‌کند. برای ارتباط امن باید از HTTPS، SSH، TLS یا VPN استفاده شود.

آیا SOCKS5 آدرس IP را تغییر می‌دهد؟

برای مقصد نهایی، اتصال معمولاً از IP سرور SOCKS برقرار می‌شود. با این حال، ارائه‌دهنده پروکسی همچنان IP واقعی کاربر را مشاهده می‌کند.

آیا SOCKS5 از UDP پشتیبانی می‌کند؟

بله، پروتکل SOCKS5 فرمان UDP ASSOCIATE را تعریف کرده است؛ اما پشتیبانی عملی به سرور، کلاینت و نرم‌افزار مورد استفاده بستگی دارد.

آیا SOCKS5 از Ping پشتیبانی می‌کند؟

معمولاً خیر. Ping از ICMP استفاده می‌کند و SOCKS برای ایجاد یک تونل عمومی در سطح IP طراحی نشده است.

آیا SOCKS5 مانع DNS Leak می‌شود؟

تنها زمانی که نرم‌افزار نام دامنه را برای Resolve شدن به پروکسی ارسال کند. در غیر این صورت، درخواست DNS ممکن است از سیستم محلی ارسال شود.

تفاوت socks5 و socks5h چیست؟

در ابزار curl، حالت socks5 نام دامنه را به‌صورت محلی Resolve می‌کند، اما socks5h نام دامنه را به سرور پروکسی می‌فرستد تا Resolution در سمت پروکسی انجام شود.

آیا می‌توان با SSH یک SOCKS5 Proxy ساخت؟

بله. با قابلیت Dynamic Port Forwarding در OpenSSH می‌توان یک SOCKS Proxy محلی ایجاد کرد و اتصال برنامه‌ها را از داخل تونل رمزگذاری‌شده SSH عبور داد.

SOCKS5 بهتر است یا VPN؟

برای هدایت ترافیک یک برنامه، SOCKS5 ساده و انعطاف‌پذیر است. برای رمزگذاری و هدایت ترافیک کل سیستم یا اتصال امن شبکه‌ها، VPN معمولاً انتخاب مناسب‌تری خواهد بود.

جمع‌بندی؛ آیا SOCKS5 انتخاب مناسبی است؟

ساکس پروکسی یک راهکار انعطاف‌پذیر برای عبور دادن اتصال برنامه‌ها از یک سرور واسط است. نسخه SOCKS5 با پشتیبانی از TCP، UDP، IPv4، IPv6، نام دامنه و روش‌های احراز هویت، امکانات بیشتری نسبت به SOCKS4 ارائه می‌دهد.

مزیت اصلی SOCKS5 این است که برخلاف HTTP Proxy فقط به ترافیک وب محدود نیست و می‌تواند برای طیف متنوعی از نرم‌افزارها استفاده شود. همچنین می‌توان تنها برنامه‌های موردنظر را برای استفاده از پروکسی تنظیم کرد، بدون اینکه مسیر تمام سیستم تغییر کند.

با این حال، SOCKS5 به‌تنهایی ترافیک را رمزگذاری نمی‌کند، ناشناس‌بودن کامل را تضمین نمی‌کند و ممکن است در صورت تنظیم نادرست باعث نشت DNS شود. برای اطلاعات حساس باید از پروتکل‌های رمزگذاری‌شده مانند HTTPS و SSH استفاده کرد و در صورت نیاز به حفاظت کامل ترافیک، استفاده از VPN را در نظر گرفت.

در مجموع، SOCKS5 برای هدایت ترافیک برنامه‌های مشخص، ایجاد پراکسی موقت با SSH، تست مسیرهای شبکه و عبور اتصال‌های غیر HTTP گزینه‌ای کاربردی است؛ اما باید با آگاهی از محدودیت‌های امنیتی و فقط از طریق سرورهای قابل اعتماد مورد استفاده قرار گیرد.