Tasker: پیش از باز کردن یک نشانی URL خصوصی، VPN را متصل کنید
Tasker باید پیش از باز کردن یک نشانی URL خصوصی متصل شود و صبر کند: آمادگی را تعریف کنید، از رابط کنترل کلاینت استفاده کنید و برای مرز سخت، اتصال همیشگی را نگه دارید.
باز کردن یک نشانی URL خصوصی و امید به اینکه تونل اول بالا بیاید یک مسابقه است و معمولاً مرورگر برنده میشود. میانبری که به صفحهای در حال بارگذاری واکنش نشان میدهد، جستوجوی DNS و اغلب نخستین اتصال را از دست داده است، و همین بخشی است که به VPN نیاز داشت. گردشکار باید مالک ترتیب باشد، نه ناظر آن. سه شرط تعیین میکند که آیا این گردشکار اصلاً جایگاهی در Tasker دارد.
یک نقطه ورود باید مالک توالی باشد
به سرویس خصوصی یک نقطه ورود تأییدشده بدهید و بگذارید همان نقطه مراحل را به ترتیب انجام دهد. مقصد را اعتبارسنجی کنید، نمایه موردنظر را انتخاب کنید، اتصال را درخواست کنید، با محدودیتی برای مدت انتظار منتظر نتیجه آمادگی بمانید و تنها پس از آن نشانی URL را باز کنید. اگر هر مرحله شکست خورد، توقف کنید و آن را بگویید، بهجای اینکه به باز کردن مستقیم برسید.
همان بند آخر است که مردم از آن رد میشوند. گردشکاری که با پایان مهلت باز هم نشانی URL را باز میکند بدتر از نبود خودکارسازی است، چون درخواستی میسازد که شبیه VPN شکستخورده به نظر میرسد، در حالی که هرگز از یکی استفاده نکرده است.
1. validate destination against the approved list
2. select the intended VPN profile
3. request connection through the client's supported interface
4. wait for readiness, maximum 20 seconds
5. open the URL only if readiness succeeded
6. on timeout, stop and report
فهرست شمارهدار بالا قرارداد است، نه نمایه صادرشده. هر کلاینت سطح کنترل خود را متفاوت پیادهسازی میکند و برخی به یک افزونه، اجازه کنترل صریح یا رضایت یکباره کاربر نیاز دارند که هیچ خودکارسازی نمیتواند فراهم کند.
متصل بودن با آماده بودن یکی نیست
وضعیتی که میگوید تونل آغاز شده است اثبات میکند که کلاینت درخواست را پذیرفته است. اثبات نمیکند که حلکننده اکنون نشانیهای خصوصی برمیگرداند یا سرویس موردنظر قابل دسترسی است. اینها نتایج جداگانهاند و شکاف میان آنها همان جایی است که میانبری که خیلی زود باز میکند بیصدا شکست میخورد. کلاینت وضعیت خودش را گزارش میدهد، نه وضعیت مسیری را که نشانی URL استفاده خواهد کرد.
آمادگی را در برابر چیزی تعریف کنید که گردشکار بتواند مشاهده کند. وضعیت اتصال از کلاینت، نشانی حلشده از محدوده مورد انتظار، یا کاوش دسترسیپذیری به سرویس مشخص، همه کار میکنند، به شرطی که کاوش نتواند به مسیر شبکه معمولی بازگردد. کاوشی که از مسیر عادی موفق میشود چیزی به شما نمیگوید.
انتظار را محدود کنید. شرط آمادگی بدون مهلت، نمایه خراب را به میانبری تبدیل میکند که معلق میماند و کاربران آن را بهصورت یخ زدن گوشی گزارش میکنند، نه مشکل VPN.
Tasker چه میتواند و چه نمیتواند بکند
Tasker چسب را فراهم میکند: یک محرک، فهرست مرتب کنشها، شرطها و یک کنش URL. کنش باز کردن URL فقط مرحله باز کردن را انجام میدهد و هیچ چیز دیگر. مرحله اتصال باید از کلاینت VPN بیاید، از طریق افزونه، intent یا سرویس افشاشدهای که کلاینت مستند میکند و مجاز میداند.
OpenVPN for Android برای نمونه رابط کنترل راه دوری را مستند میکند که بر AIDL و intentها ساخته شده است. این توانایی همان کلاینت است، نه مجوزی برای هر وظیفهای در دستگاه تا آن را هدایت کند. کنترل را فقط به برنامهای بدهید که قصدش را دارید، چون لایه خودکارسازی که میتواند تونلی را وصل و قطع کند سطح کنترلی است که ارزش محافظت دارد.
اگر کلاینت نصبشده هیچ سازوکار کنترل پشتیبانیشدهای افشا نکند، پاسخ صادقانه این است که این گردشکار روی آن کلاینت ساخته نمیشود. صفحه قدیمی مقایسه ویژگیها مشخصات تواناییهای نسخه روی گوشی نیست.
وقتی مرز باید اجباری باشد
خودکارسازی یک راحتی است و راحتی نمیتواند مرز امنیتی را اعمال کند. اگر الزام این است که برنامههای پوششدادهشده هرگز بدون VPN ارتباط برقرار نکنند، از تنظیم VPN همیشگی و مسدودسازی بستر، یا پیکربندی مدیریتشده معادل آن استفاده کنید. رویداد مرورگری که پس از آغاز پیمایش فعال میشود نمیتواند جایگزین آن اعمال شود، هر قدر هم که وظیفه با دقت مرتب شده باشد.
تصمیم بگیرید کدام را میسازید. میانبری که اول متصل میشود و سپس باز میکند مفید است و ضمانت نیست. دستگاه مدیریتشده با مسدودسازی فعال، ضمانت است و اصلاً به توالی Tasker نیاز ندارد.
| Requirement | Mechanism |
|---|---|
| Open the page after the tunnel is ready | Ordered task with a bounded readiness wait |
| Never allow traffic outside the tunnel | Always-on VPN with blocking, or managed policy |
| Only some apps use the tunnel | Per-app VPN or work-profile scope |
| Different URL every time | Validate the input before opening it |
سه پیامد را آزمایش کنید، نه یکی
گردشکار را در برابر اتصال موفق، مهلت عمدی و اتصال مجدد عادی پس از افتادن تونل اجرا کنید. مورد مهلت همان چیزی است که آشکار میکند آیا توالی واقعاً متوقف میشود، و مورد اتصال مجدد آشکار میکند آیا آمادگی بررسی میشود یا فقط از موفقیت پیشین فرض میشود. ابتدا مورد مهلت را اجرا کنید، چون گردشکاری که شکست را نادیده میگیرد ارزش آزمایش برای موفقیت را ندارد.
فقط مقصدهای فهرست تأییدشده را مجاز بدانید و هر پیوندی را که از بیرون میآید پیش از باز کردن بررسی کنید. وظیفهای که پیوندهای دلخواه را میپذیرد به راهی برای اجرای طرحهای غیرمنتظره تبدیل میشود و صفحه مدیریت خصوصی که از این راه به آن رسیده باشد، پیامدی بدتر از یک میانبر شکستخورده است.
نمایه، شرط آمادگی و مهلت را کنار وظیفه بنویسید. نفر بعدی که کلاینت VPN را تغییر میدهد به هر سه نیاز خواهد داشت و هیچیک از آنها از نماد میانبر دیده نمیشود.