استفاده از دو VPN یک درخواست واحد نیست. می‌تواند به معنای رسیدن به دو سازمان یکی پس از دیگری، جدا نگه داشتن برنامه‌های کاری و شخصی، یا اجرای یک تونل درون تونل دیگر باشد. اندروید این سه حالت را به روش‌های کاملاً متفاوتی مدیریت می‌کند، و تعداد برنامه‌های VPN نصب‌شده روی گوشی معماری نیست. پرسشی که آن‌ها را از هم جدا می‌کند ساده است: آیا باید دو مسیر در همان لحظه برای همان برنامه وجود داشته باشد؟

سه ساختار، یک پرسش

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

هر چیز دیگری از این انتخاب ناشی می‌شود. جابه‌جایی یک پنجره گذار دارد، جداسازی یک مرز سیاستی دارد، و زنجیره هزینه سرریز و وابستگی دارد. انتخاب مورد نادرست به‌طور تمیز شکست نمی‌خورد؛ گوشی‌ای تولید می‌کند که متصل به نظر می‌رسد و برنامه‌ای که به هیچ چیز نمی‌رسد.

جابه‌جایی درون یک زمینه کاربر

اندروید یک سرویس VPN فعال برای هر کاربر اجازه می‌دهد. اجرای برنامه VPN دوم در همان زمینه، اولی را جایگزین می‌کند یا کاملاً رد می‌شود؛ هرگز دو مجموعه مسیر را ترکیب نمی‌کند و قطعاً رمزنگاری آن‌ها را روی هم نمی‌گذارد. درون یک کاربر، دو تونل یک توالی هستند، نه یک مجموع.

این زمانی عملی است که دسترسی واقعاً پیوسته باشد. نیم‌رخ‌ها را طوری نام‌گذاری کنید که فعال آشکار باشد، هر چیز حساس را پیش از جابه‌جایی تمام کنید، و انتظار یک پنجره کوتاه را داشته باشید که در آن هیچ‌یک از دو مسیر کاملاً برقرار نیست. بستن یک زبانه مرورگر همانند پایان دادن به یک نشست نیست: زبانه می‌تواند وضعیت حساب خود را نگه دارد و صرفاً درخواست بعدی را از شبکه تازه‌انتخاب‌شده بفرستد، و این دقیقاً همان نشتی است که مردم بعداً متوجه می‌شوند.

چیزی که جابه‌جایی نمی‌تواند به شما بدهد ماشینی است که همزمان در هر دو شبکه باشد. اگر یک برنامه از هر طرف به یک نشانی خصوصی نیاز دارد، هیچ میزان نظم کارخواه آن را تولید نمی‌کند.

جداسازی بر اساس نیم‌رخ

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

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

مرز را ثابت در نظر بگیرید. ساختن نیم‌رخ دوم یا حذف نیم‌رخ کاری برای دور زدن تصمیم مسیریابی کارفرما دقیقاً همان جداسازی را نابود می‌کند که ساختار را کارآمد کرده بود، و روی یک دستگاه مدیریت‌شده معمولاً نقض سیاست است نه یک تغییر پیکربندی.

زنجیره‌ای که ترتیب در آن طراحی است

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

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

انتظار هزینه‌های عملی را داشته باشید. هر لایه کپسوله‌سازی اضافه می‌کند، بنابراین MTU مؤثر کاهش می‌یابد و مقداری که برای یک تونل خوب بود اکنون تکه‌تکه می‌شود یا متوقف می‌شود تا وقتی MTU تونل درونی به‌صورت محافظه‌کارانه تنظیم شود. دو لایه همچنین به معنای دو وابستگی خرابی و دو مجموعه پیام زنده‌نگهدار است، و تونل درونی مبتنی بر TCP روی پیوند بیرونی دارای افت می‌تواند به شکل‌هایی متوقف شود که شبیه سرور مرده است.

مهم‌تر از همه، زنجیره دو شبکه خصوصی را ادغام نمی‌کند. مسیرها، پیشوندهای هم‌پوشان، تفکیک DNS و قواعد دسترسی تصمیم‌های جداگانه می‌مانند، و روتری که یک VPN را حمل می‌کند در حالی که گوشی دیگری را حمل می‌کند، هر دو فضای نشانی را به گوشی نمی‌دهد.

طراحی را پیش از اشکال‌زدایی بررسی کنید

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

adb shell ip -br addr
adb shell ip route get 10.20.0.8
adb shell dumpsys connectivity | grep -i vpn

اگر جست‌وجوی مسیر واسط فیزیکی را نام می‌برد در حالی که برنامه انتظار تونل را دارد، طراحی و زمینه برنامه هم‌خوان نیستند، و هیچ برنامه VPN اضافه‌ای آن‌ها را آشتی نمی‌دهد. مستندات نیم‌رخ‌های مدیریت‌شده قواعد جداسازی را پوشش می‌دهد اگر به جزئیات سیاست نیاز دارید نه جزئیات مسیریابی.

مقالات مرتبط