وقتی گوشی یا کامپیوترت میخواد یه سایت مثل
example.com رو باز کنه، در حالت عادی خودش مستقیم به سرور اون سایت درخواست میفرسته. اول DNS میپرسه IP اون دامنه چیه، بعد با اون IP ارتباط TCP برقرار میکنه، اگر سایت HTTPS باشه TLS هم برقرار میشه و بعد درخواست HTTP میفرسته. یعنی مسیر این شکلیه: دستگاه تو → اینترنت → سرور سایت. بنابراین سرور سایت IP واقعی تو رو میبینه و جواب رو مستقیم به خودت برمیگردونه.
حالا پراکسی سرور دقیقاً وسط این مسیر قرار میگیره. یعنی دستگاه تو دیگه مستقیم با سایت حرف نمیزنه، بلکه فقط با پراکسی ارتباط برقرار میکنه. بعد پراکسی درخواست تو رو میگیره، خودش از طرف تو به سایت وصل میشه، جواب رو دریافت میکنه و دوباره برای تو میفرسته. یعنی مسیر میشه دستگاه تو → پراکسی → سایت → پراکسی → دستگاه تو.
از دید فنی، پراکسی یک واسطه (Intermediate Server) است. وقتی مرورگرت درخواست HTTP میفرسته، اون درخواست اول وارد پراکسی میشه. پراکسی هدرهای درخواست، آدرس مقصد، نوع درخواست و بقیه اطلاعات رو میخونه، بعد تصمیم میگیره همون درخواست رو به مقصد ارسال کنه یا نه. حتی میتونه درخواست رو تغییر بده، بعضی هدرها رو حذف یا اضافه کنه، یا کلاً جلوی ارسالش رو بگیره.
مثلاً فرض کن IP واقعی تو 185.x.x.x باشه و IP پراکسی 91.x.x.x. وقتی سایت درخواست رو دریافت میکنه، فقط IP پراکسی یعنی 91.x.x.x رو میبینه، چون از نظر سایت، کسی که بهش وصل شده پراکسیه نه دستگاه تو. برای همین میگن پراکسی هویت شبکهای تو رو تا حدی مخفی میکنه.
یه قابلیت مهم دیگه پراکسی Caching هست. فرض کن هزار نفر توی یه شرکت بخوان یه فایل ثابت رو دانلود کنن. اولین نفر فایل رو از اینترنت میگیره، پراکسی اون فایل رو توی حافظه خودش نگه میداره. دفعههای بعد به جای اینکه دوباره از اینترنت دانلود کنه، همون نسخه ذخیرهشده رو تحویل میده. این باعث میشه هم سرعت بیشتر بشه هم پهنای باند کمتری مصرف بشه.
از طرف دیگه، شرکتها و سازمانها از پراکسی برای کنترل اینترنت استفاده میکنن.
مثلاً میگن هر درخواستی که به سایتهای شبکه اجتماعی بره رد بشه یا هر سایتی که محتوای خاصی داره مسدود بشه. چون همه درخواستها از پراکسی رد میشن، اون میتونه روی همهشون نظارت داشته باشه.
یه نوع دیگه هم Reverse Proxy هست که برعکس کار میکنه. تا الان درباره Forward Proxy حرف زدیم که جلوی کاربر قرار میگیره. ولی Reverse Proxy جلوی سرور قرار میگیره. یعنی کاربر فکر میکنه مستقیم به سایت وصل شده، در حالی که اول به Reverse Proxy وصل شده. اون درخواست رو بین چند سرور تقسیم میکنه، حملات رو فیلتر میکنه، SSL رو مدیریت میکنه و بعد درخواست رو به سرور اصلی میرسونه. سرویسهایی مثل Cloudflare نمونه معروف Reverse Proxy هستن.
یه سؤال مهم اینه که آیا پراکسی امنیت ایجاد میکنه؟ جواب اینه که نه لزوماً. پراکسی فقط نقش واسطه داره. اگر ارتباط بین تو و پراکسی رمزنگاری نشده باشه، صاحب پراکسی میتونه اطلاعاتی که ازش رد میشن رو ببیند. حتی اگر HTTPS استفاده بشه، همچنان صاحب پراکسی میتونه ببیند به چه سایتی وصل شدی، هرچند محتوای رمزنگاریشده را معمولاً نمیتواند بخواند مگر اینکه تنظیمات خاصی مثل بازرسی SSL انجام شده باشد.
اینجاست که تفاوت VPN و Proxy مشخص میشه. پراکسی معمولاً فقط ترافیک یک برنامه مثل مرورگر رو از خودش عبور میده، اما VPN یک تونل رمزنگاریشده بین دستگاه تو و سرور VPN ایجاد میکنه و معمولاً تمام ترافیک سیستمعامل از داخل اون تونل عبور میکنه. بنابراین VPN علاوه بر تغییر IP، روی محرمانگی ارتباط هم تمرکز بیشتری داره.
در نهایت اگر بخوام خیلی علمی ولی ساده جمعبندی کنم، پراکسی یک سرور واسطه در لایه کاربرد (Application Layer) است که درخواستهای کلاینت را دریافت میکند، از طرف کلاینت به مقصد ارسال میکند، پاسخ را دریافت میکند و دوباره به کلاینت برمیگرداند. به همین دلیل مقصد معمولاً IP پراکسی را میبیند، نه IP واقعی کاربر، و خود پراکسی میتواند درخواستها را فیلتر، ذخیره، ثبت یا مدیریت کند.
@ITSecurityComputer