چرخش IPهای پروکسی بدون VPN: خروجی چه میبیند
خروجیهای پروکسی را بدون VPN بچرخانید: پروکسی HTTP چه میتواند بخواند، چگونه نشستهای چسبنده از وضعیت خراب جلوگیری میکنند و کدام خروجی را میتوانید در یک سیاست دفاع کنید.
چرخش پروکسی و VPN آدرس عمومی شما را در لایههای متفاوتی تغییر میدهند و همین تفاوت تعیین میکند چه چیزی نشت میکند. VPN هر بسته را به یک تونل منتقل میکند، پس آدرس مبدأیی که هدف میبیند نقطه پایان تونل است. پروکسی بالاتر از لایه شبکه مینشیند: فقط درخواستهایی که از طریق آن میفرستید از خروجی دیده میشوند، در حالی که هر چیز دیگری روی ماشین آدرس واقعی را نگه میدارد. درست انجام دادن این تفکیک، چرخش را از یک گزینه تیکخورده به یک تصمیم طراحی تبدیل میکند.
آدرس عمومی واقعاً از کجا میآید
آدرسی که هدف میبیند همانی است که ترافیک شما آخرین بار از آن خارج شده و در یک اتصال خانگی آدرس ارائهدهنده روی روتر شماست، نه چیزی که ماشین مالک آن باشد. راهاندازی دوباره روتر ممکن است همان اجاره را برگرداند و تغییر آدرس MAC آن گاهی آدرس تازهای میسازد، اما هیچکدام به شما انتخاب کشور نمیدهد. VPN آدرس مبدأ را در لایه IP جایگزین میکند، پس هر بسته از ماشین، از جمله DNS و بهروزرسانیهای پسزمینه، از نقطه پایان تونل خارج میشود. پروکسی یک لایه بالاتر کار میکند: درخواستی را میپذیرد، اتصال خودش را به هدف باز میکند و تنها همان درخواست از خروجی دیده میشود. هر چیز دیگری روی ماشین همچنان از آدرس واقعی استفاده میکند.
این تفکیک بیشتر شگفتیها را توضیح میدهد. افزونهای مرورگر که به یک پروکسی اشاره میکند فقط آنچه مرورگر میفرستد را تغییر میدهد و نه چیز دیگری، پس یک برنامه دوم روی همان میزبان همچنان آدرس اصلی را نشت میدهد. VPN سراسری سیستم حالت خرابی معکوس دارد: ترافیکی را که میخواستید محلی بماند میپوشاند و تنها در صورتی که کلاینت برای آن تنظیم شده باشد بسته شکست میخورد. انتخاب بین این دو در واقع انتخاب این است که کدام ترافیک باید جابهجا شود.
سپس چرخش به هر لایهای که انتخاب کردهاید اعمال میشود. با پروکسی، چرخش یعنی درخواست بعدی از خروجی دیگری استفاده میکند. با VPN یعنی تونل را خراب و دوباره بسازید، که کندتر است و به صورت یک اتصال دوباره قابل مشاهده خود را نشان میدهد.
پروکسی HTTP چه چیزی میتواند بخواند و چه چیزی نمیتواند
در HTTP ساده پروکسی یک URI مطلق در خط درخواست، هر سرصفحه و بدنه را میبیند. میتواند همه آن را ثبت کند و هر بخشی را بازنویسی کند، و به همین دلیل یک پروکسی رایگان که اسکریپتی را در پاسخها تزریق میکند دقیقاً همان کاری را میکند که پروتکل اجازه میدهد. احراز هویت از Proxy-Authorization استفاده میکند، و اعتبارنامه گمشده یا نادرست 407 Proxy Authentication Required را به جای خطای اتصال تولید میکند.
در HTTPS کلاینت CONNECT host:port را میفرستد و پروکسی یک تونل خام باز میکند، پس از آن بایتهای رمزگذاریشده را میبیند. هنوز نام میزبان را از خط CONNECT و معمولاً از فیلد SNI در دستدادن TLS یاد میگیرد، پس ثبت در سطح نام میزبان باقی میماند حتی اگر محتوا باقی نماند. خواندن محتوا نیازمند پایان دادن به TLS با گواهینامهای است که کلاینت به آن اعتماد دارد، که محصول دیگری با ریسک دیگری است. و مشخصات معناشناسی HTTP CONNECT را به عنوان یک درخواست تونل تعریف میکند، که مدل ذهنی درستی برای چیزی است که یک خروجی میتواند و نمیتواند ببیند.
curl -v -x http://proxy.example.net:8080 https://example.com 2>&1 | grep -E 'CONNECT|Proxy-'
خروجی مشروح خط CONNECT را پیش از هر ترافیک TLS نشان میدهد و همان لحظه است که پروکسی مقصد شما را میآموزد. پروکسی که با 407 پاسخ میدهد هرگز تونل را باز نکرده است، پس تلاش دوباره با تنظیمات TLS متفاوت کمکی نمیکند.
دانهبندی چرخش تعیین میکند چه چیزی میشکند
چرخش در هر درخواست تنظیمی است که امنترین به نظر میرسد و بیشترین آسیب را میزند. کوکیها، توکنهای CSRF و نشستهای سمت سرور به یک هویت گره خوردهاند و هویتی که بین ورود و فراخوانی بعدی عوض میشود برای هدف شبیه ربودن نشست است. بسیاری از ارائهدهندگان نشست چسبنده را با کد کردن آن در نام کاربری پروکسی عرضه میکنند، پس خروجی برای یک پنجره انتخابی ثابت میماند.
دانهبندی را از وظیفه انتخاب کنید نه از پیشفرض ارائهدهنده. خزندهای که صفحههای مستقل میآورد میتواند در هر درخواست بچرخد، در حالی که جریان پرداخت یا یک API احراز هویت شده باید یک خروجی را برای کل جریان نگه دارد. دو فراخوانی زیر یک نام کاربری چسبنده و یک نقطه پایانی چرخان ساده را نشان میدهند، و socks5h طرحواره نامها را در پروکسی حل میکند نه به صورت محلی.
curl -sS -x http://user-session-a1b2:[email protected]:8080 https://ifconfig.me
curl -sS -x socks5h://127.0.0.1:1080 https://ifconfig.me
DNS محلی یک نشت بیصداست. اگر کلاینت نام را پیش از اتصال حل کند، حلکننده همچنان هر میزبانی را که بازدید میکنید میآموزد حتی اگر درخواست HTTP جای دیگری خارج شود. و socks5h شکل و حل سمت پروکسی از آن جلوگیری میکنند و استفاده از آنها هیچ هزینهای ندارد.
هدف علاوه بر آدرس چه چیزی را طبقهبندی میکند
اعتبار آدرس یکی از چندین ورودی است. هدفها ASN و برچسب مرکز داده یا مسکونی آن، اثر انگشت TLS کلاینت، تنظیمات HTTP/2، ترتیب سرصفحهها، نرخ درخواست و شکل ناوبری را ترکیب میکنند. یک خروجی مسکونی که مرورگری بدون رابط آن را هدایت میکند میتواند شکست بخورد جایی که خروجی مرکز دادهای که یک نشست واقعی آن را هدایت میکند عبور میکند.
نوع خروجی تعیین میکند چه چیزی را میتوانید صادقانه درباره ترافیک ادعا کنید و هر یک هزینه متفاوتی دارد.
| Exit type | What the target sees | Main cost |
|---|---|---|
| Datacenter proxy | Hosting ASN, cheap, often pre-blocked | Low reputation, easy to detect |
| Residential network | A consumer ISP address belonging to someone else | Consent and terms-of-service exposure |
| Mobile carrier | A carrier NAT address shared by many subscribers | Price, plus shared blame for abuse |
| Your own cloud egress | An address you are accountable for | Recognisable, but defensible |
یک خروجی مشترک خنثی نیست. هر چیز دیگری که از آن آدرس اجرا میشود در همان سطل اعتبار میافتد و آدرسی که مستأجرهای دیگر سوختهاند پیش از خوانده شدن اولین درخواست شما شکست میخورد.
خروجیای انتخاب کنید که بتوانید در یک سیاست توصیفش کنید
پرسش سودمند این نیست که چگونه آدرس را پنهان کنیم، بلکه این است که چه کسی پاسخگوی ترافیکی است که از آن خارج میشود. خروجی ابری خودتان برای هر وظیفه، ارائهدهندهای قراردادی با توافق پردازش داده و مدت نگهداری منتشرشده، و یک VPN خودمیزبان با یک هویت برای هر وظیفه همه در یک جمله توصیفپذیرند. فهرست رایگان اینطور نیست، چون اپراتورش هیچ تعهدی به شما ندارد و هر انگیزهای برای ثبت دارد.
محدودیتهای نرخ خودتان را زیر آنچه هدف تحمل میکند نگه دارید و فقط فیلدهایی را جمع کنید که وظیفه لازم دارد، تا یک اشتباه کوچک بماند. چرخش سریعتر برای فرار از یک مسدودی معمولاً نرخ درخواستی را که آن را ایجاد کرده بالا میبرد.
بنویسید خروجی انتخابشده، پنجره چرخش آن و مالک آن را پیش از اولین اجرا در پیکربندی کار. وقتی مسدودی میرسد، همان یادداشت به شما میگوید خروجی را عوض کنید یا رفتار را.