کلید قطعِ هر برنامه در برابر قفل کل دستگاه: چه چیزی تغییر میکند
بر اساس مجموعهٔ محافظتشده تصمیم بگیرید، نه برچسب: چه چیزی برای برنامههای مستثنا، کمککنندههای پسزمینه و اتصالهای جدید متوقف میشود و هر مورد را چگونه آزمایش کنید.
کلید قطعِ هر برنامه شبیه انتخاب محتاطانه به نظر میرسد: وقتی تونل میافتد فقط کلاینت کاری شبکهاش را از دست میدهد و بقیهٔ چیزها به کار خود ادامه میدهند. بعد کسی متوجه میشود که مرورگر شخصی با این حال صفحهای بارگذاری کرده، کمککنندهٔ همگامسازیِ همان بسته مدام دوباره تلاش میکرده، و نامی که در حافظهٔ نهان ذخیره شده بود همچنان به نشانیای حل میشد که هرگز به تونل نرسیده بود. برچسب روی ویژگی و مجموعهٔ اتصالهایی که واقعاً محافظت میکند دو چیز متفاوتاند. نخست مجموعهٔ محافظتشده را مشخص کنید، چون همان مجموعه تعیین میکند که اجرای هر برنامه یا قفل کل دستگاه توصیف صادقانه است.
با مجموعه شروع کنید، نه با برچسب
سیاست هر برنامه از برنامههای برگزیده محافظت میکند. قفل دستگاه مرز شبکهای گستردهتری را هدف میگیرد، معمولاً با استثناهای مستند برای چاپ محلی، ترافیک مدیریت یا درگاههای جذب. هیچیک از دو برچسب کامل نیست تا بتوانید به سه پرسش پاسخ دهید: چه اتفاقی برای برنامههای مستثنا میافتد، چه اتفاقی برای کمککنندههایی میافتد که آن برنامهها راه میاندازند، و چه اتفاقی برای اتصالهایی میافتد که وقتی محافظت در دسترس نیست باز میشوند.
این پاسخها را پیش از دست زدن به تنظیمی در کلاینت بنویسید. اگر لازمه این است که «این کلاینت حقوق و دستمزد هرگز بیرون از تونل با اینترنت حرف نزند و مرورگر من میتواند»، مجموعه کوچک است و اجرای هر برنامه مناسب است. اگر لازمه این است که «هیچ چیز روی این دستگاه بدون محافظت به اینترنت نرسد، جز سرویس بهروزرسانی»، هیچ سیاست هر برنامهای آن را تولید نمیکند، چون برنامههایی که نامشان را نبردید همان مشکلاند.
اجرای هر برنامه شناسهها را تطبیق میدهد، نه نام برنامهها را
اندروید VPN هر برنامه را از طریق بستهها ارائه میکند و مستندات VpnService آن توضیح میدهد که این چگونه با حالت همیشهروشن و مسدودسازی تعامل دارد. iOS VPN هر برنامه را از طریق نمایهٔ مدیریت پیکربندی میکند و بر اساس برنامه یا دامنه تطبیق میدهد. ویندوز و لینوکس هیچ مسیر هر فرایندی ندارند، بنابراین همان ایده با قاعدهٔ دیوار آتش محدود به یک برنامه یا قاعدهای که با کاربر مالک میخواند تقریب زده میشود.
مرز همان شناسه است و دور زدن شناسهها آسان است. برنامهای که نشانی URL را به مرورگر سیستم میسپارد یا سندی را در نمایشگر باز میکند، به فرایندی میرود که سیاست شما هرگز نامش را نبرده است. گزینهٔ خاتمه هنگام افتادن نیز فیلتر بسته نیست: برنامهای را که پیکربندی کردهاید میکشد، در حالی که یک فرایند فرزند، یک کارگر صف یا یک زبانهٔ مرورگر میتواند سوکت موجود را زنده نگه دارد.
قفل چیزی را پوشش میدهد که سیاست هر برنامه نمیبیند
قفل کل دستگاه انتخاب را برمیدارد. هر بستهٔ خروجی که به تونل تعلق ندارد دور ریخته میشود، از جمله ترافیک فرایندهایی که سیاست برنامههای شما هرگز از آنها خبر نداشت. در اندروید این حالت VPN همیشهروشن همراه با تنظیم مسدودسازی اتصالهاست و اجرا در سیستم رخ میدهد، نه در پنجرهٔ کلاینت. در رایانهٔ رومیزی یک قاعدهٔ پایدار دیوار آتش است یا مسیر پیشفرضی که به درگاهی دستنیافتنی اشاره میکند.
هزینه این است که همهچیز دیگر میایستد، پس استثناها بخشی از طراحی میشوند نه فکری بعدی. چاپگرهای محلی، کشف سرویس، ورود به درگاههای جذب، عاملهای مدیریت و بهروزرسانی سیستمعامل هر یک به حفرهای مستند نیاز دارند، چون هر یک مسیری است که وقتی تونل پایین است باز میماند. قفل تنها بهاندازهٔ کوتاهترین مدخل آن فهرست نیرومند است.
DNS و IPv6 و کمککنندههای پسزمینه نشتها را پنهان میکنند
اینکه برنامهای محافظتشده نتواند نامی را حل کند ثابت نمیکند که پاسخهای نهان یا ترافیک مستقیم IP مسدود شدهاند. اگر حلکننده هنوز بیرون از تونل در دسترس باشد، نام حل میشود و اتصال شکست میخورد، که شبیه کلید قطعِ کارکننده است و نیست. بدتر اینکه رکورد نهان میتواند به نشانیای اشاره کند که تونل آن را حمل نمیکند، پس اتصال مستقیم بیرون میرود در حالی که برنامه خطای VPN گزارش میکند.
IPv6 روی هر پلتفرمی که آن را اجرا میکند قاعدهٔ خودش را میخواهد، چون قاعدهٔ دورانداختن v4 مسیر v6 را پوشش نمیدهد. در موبایل، تنظیم DNS خصوصی میتواند حل نام را به کانالی رمزنگاریشده ببرد که سیاست دستگاه آن را بازرسی نمیکند. و کمککنندههای پسزمینه مقصر همیشگی در رایانهٔ رومیزیاند: فرایند بهروزرسان یا همگامسازی سینی پیش از کلاینت VPN شروع میشود و اتصال خودش را نگه میدارد، پس هرگز مسیر تغییرکرده را نمیبیند.
سه برنامه و دو گذار را آزمایش کنید
| Test | What it proves |
|---|---|
| Included app, by name and by direct IP | the policy is applied, not just the resolver |
| Excluded app, same checks | the exclusion is intentional and documented |
| Helper or updater process | nothing inherited an older route |
| Tunnel drop, then Wi-Fi to cellular | the block survives the transition |
هر ردیف را دو بار اجرا کنید، یک بار با نام میزبان و یک بار با نشانی صریح، و یک بار دیگر روی IPv6 اگر شبکه آن را عرضه میکند. قبولی یعنی برنامهٔ درونگروه ایستاد، برنامهٔ مستثنا همانطور که نوشته بودید رفتار کرد و کمککننده بیرون نلغزید. رفتار مستقیمی را که آن را پذیرفتنی دانستید ثبت کنید تا مدیر بعدی بتواند استثنای عمدی را از خرابی تشخیص دهد.
سپس نتیجه را در یک جمله که نام برنامهها و شرایط را میبرد توصیف کنید، برای نمونه: کلاینت حقوق و دستمزد هیچ مسیری بیرون از تونل ندارد، مرورگر بهحکم طراحی مستقیم است و هر چیز دیگر وقتی تونل پایین است میایستد. اگر نوشتن آن جمله دشوار است، سیاست هنوز دو سیاست است که با هم میجنگند.