Tasker: свържете VPN преди отваряне на частен URL
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 клиента, ще се нуждае и от трите, а нито едно от тях не се вижда от иконата на прекия път.