Відкривати приватний 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.

RequirementMechanism
Open the page after the tunnel is readyOrdered task with a bounded readiness wait
Never allow traffic outside the tunnelAlways-on VPN with blocking, or managed policy
Only some apps use the tunnelPer-app VPN or work-profile scope
Different URL every timeValidate the input before opening it

Проженіть три результати, а не один

Проженіть процес проти успішного підключення, навмисного тайм-ауту і звичайного повторного підключення після падіння тунелю. Випадок тайм-ауту показує, чи справді послідовність зупиняється, а випадок повторного підключення показує, чи готовність перевіряють, чи лише припускають із попереднього успіху. Спершу проженіть випадок тайм-ауту, бо процес, що ігнорує збій, не варто тестувати на успіх.

Дозволяйте лише призначення зі схваленого списку і перевіряйте будь-яке посилання, що надходить ззовні, перш ніж його відкрити. Завдання, яке приймає довільні посилання, перетворюється на спосіб запускати неочікувані схеми, а приватна адміністративна сторінка, досягнута так, — гірший результат, ніж невдалий ярлик.

Запишіть профіль, умову готовності й тайм-аут поруч із завданням. Наступній людині, яка змінить VPN-клієнт, знадобляться всі три, і жодного з них не видно з іконки ярлика.

Схожі статті