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, спатрэбяцца ўсе тры, і ніводнае з іх не бачна з іконкі ярлыка.