A deschide un URL privat și a spera că tunelul urcă primul este o cursă, iar browserul câștigă de obicei. O scurtătură care reacționează la o pagină deja în curs de încărcare a ratat căutarea DNS și adesea prima conexiune, exact partea care avea nevoie de VPN. Fluxul de lucru trebuie să dețină ordinea, nu să o observe. Trei condiții decid dacă acel flux aparține deloc de Tasker.

Un singur punct de intrare ar trebui să dețină secvența

Dă serviciului privat un singur punct de intrare aprobat și lasă acel punct să execute pașii în ordine. Validează destinația, selectează profilul dorit, solicită conexiunea, așteaptă un rezultat de pregătire cu o limită privind cât vei aștepta și abia apoi deschide URL-ul. Dacă vreun pas eșuează, oprește-te și spune asta în loc să treci la o deschidere directă.

Exact această ultimă clauză este cea pe care oamenii o sar. Un flux care deschide URL-ul oricum la expirarea timpului este mai rău decât nicio automatizare, pentru că produce o cerere care arată ca un VPN eșuat deși nu a folosit niciodată unul.

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

Lista numerotată de mai sus este contractul, nu un profil exportat. Fiecare client își implementează suprafața de control diferit, iar unii necesită un plugin, o permisiune de control explicită sau un consimțământ unic al utilizatorului pe care nicio automatizare nu îl poate oferi.

Conectat nu este același lucru cu pregătit

O stare care spune că tunelul a pornit dovedește că clientul a acceptat cererea. Nu dovedește că rezolvatorul returnează acum adrese private sau că serviciul dorit este accesibil. Acestea sunt rezultate separate, iar decalajul dintre ele este locul unde o scurtătură care deschide prea devreme eșuează în tăcere. Clientul raportează propria stare, nu starea căii pe care o va folosi URL-ul.

Definește pregătirea în raport cu ceva ce fluxul poate observa. O stare de conexiune de la client, o adresă rezolvată din intervalul așteptat sau o sondă de accesibilitate către serviciul concret funcționează toate, cu condiția ca sonda să nu poată reveni la calea de rețea obișnuită. O sondă care reușește pe ruta normală nu îți spune nimic.

Limitează așteptarea. O condiție de pregătire fără limită de timp transformă un profil defect într-o scurtătură care atârnă, iar utilizatorii raportează asta ca telefonul care îngheață, nu ca o problemă de VPN.

Ce poate și ce nu poate face Tasker

Tasker oferă lipiciul: un declanșator, o listă ordonată de acțiuni, condiții și o acțiune URL. Acțiunea sa de deschidere a URL-ului execută doar pasul de deschidere și nimic altceva. Pasul de conectare trebuie să vină de la clientul VPN, printr-un plugin, un intent sau un serviciu expus pe care clientul îl documentează și îl permite.

OpenVPN for Android, de exemplu, documentează o interfață de control la distanță construită pe AIDL și intent. Aceasta este o capacitate a acelui client, nu o licență pentru orice sarcină de pe dispozitiv să îl controleze. Acordă controlul doar aplicației pe care o vizezi, pentru că un strat de automatizare care poate conecta și deconecta un tunel este o suprafață de control care merită protejată.

Dacă clientul instalat nu expune niciun mecanism de control acceptat, răspunsul onest este că acest flux nu poate fi construit pe acel client. O pagină veche de comparare a funcțiilor nu este o specificație de capabilități pentru versiunea aflată pe telefon.

Când limita trebuie să fie obligatorie

Automatizarea este o comoditate, iar o comoditate nu poate impune o limită de securitate. Dacă cerința este ca aplicațiile acoperite să nu comunice niciodată fără VPN, folosește setarea VPN permanent și blocare a platformei, sau configurația gestionată echivalentă. Un eveniment de browser care se declanșează după începerea navigării nu poate înlocui acea impunere, oricât de atent ar fi ordonată sarcina.

Decide pe care îl construiești. O scurtătură care se conectează mai întâi și apoi deschide este utilă și nu este o garanție. Un dispozitiv gestionat cu blocarea activată este o garanție și nu are deloc nevoie de o secvență 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

Testează trei rezultate, nu unul

Rulează fluxul împotriva unei conexiuni reușite, a unui timeout deliberat și a unei reconectări obișnuite după căderea tunelului. Cazul timeout-ului este cel care dezvăluie dacă secvența chiar se oprește, iar cazul reconectării dezvăluie dacă pregătirea este verificată sau doar presupusă dintr-un succes anterior. Rulează mai întâi cazul timeout-ului, pentru că un flux care ignoră eșecul nu merită testat pentru succes.

Permite doar destinații din lista aprobată și verifică orice link care vine din exterior înainte de a-l deschide. O sarcină care acceptă linkuri arbitrare devine o cale de a lansa scheme neașteptate, iar o pagină de administrare privată ajunsă astfel este un rezultat mai rău decât o scurtătură eșuată.

Notează profilul, condiția de pregătire și timeout-ul lângă sarcină. Următoarea persoană care va schimba clientul VPN va avea nevoie de toate trei, iar niciuna dintre ele nu se vede din pictograma scurtăturii.

Articole similare