Tasker: verbind de VPN voordat je een privé-URL opent
Tasker moet verbinden en wachten voordat het een privé-URL opent: definieer gereedheid, gebruik de besturingsinterface van de client en houd always-on aan voor een harde grens.
Een privé-URL openen en hopen dat de tunnel eerst omhoogkomt is een race, en de browser wint meestal. Een snelkoppeling die reageert op een pagina die al laadt, heeft de DNS-opzoeking en vaak de eerste verbinding gemist, precies het deel dat de VPN nodig had. De workflow moet de volgorde bezitten in plaats van hem te observeren. Drie voorwaarden bepalen of die workflow überhaupt in Tasker thuishoort.
Eén toegangspunt moet de volgorde bezitten
Geef de privédienst één goedgekeurd toegangspunt, en laat dat toegangspunt de stappen in volgorde uitvoeren. Valideer de bestemming, selecteer het bedoelde profiel, vraag de verbinding aan, wacht op een gereedheidsresultaat met een grens aan hoe lang je wacht, en open pas dan de URL. Als een stap mislukt, stop en zeg het, in plaats van door te vallen naar een directe opening.
Die laatste clausule slaan mensen over. Een workflow die de URL bij een time-out toch opent, is erger dan geen automatisering, omdat hij een verzoek produceert dat op een mislukte VPN lijkt terwijl er nooit een werd gebruikt.
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
De genummerde lijst hierboven is het contract, geen geëxporteerd profiel. Elke client implementeert zijn besturingsoppervlak anders, en sommige vereisen een plug-in, een uitdrukkelijke besturingstoestemming of een eenmalige gebruikersinstemming die geen enkele automatisering kan leveren.
Verbonden is niet hetzelfde als gereed
Een status die zegt dat de tunnel is gestart bewijst dat de client het verzoek heeft geaccepteerd. Het bewijst niet dat de resolver nu privéadressen teruggeeft of dat de bedoelde dienst bereikbaar is. Dat zijn afzonderlijke resultaten, en de kloof daartussen is waar een snelkoppeling die te vroeg opent stil faalt. De client rapporteert zijn eigen toestand, niet de toestand van het pad dat de URL gaat gebruiken.
Definieer gereedheid ten opzichte van iets dat de workflow kan observeren. Een verbindingstoestand van de client, een opgelost adres uit het verwachte bereik of een bereikbaarheidstest naar de specifieke dienst werken allemaal, mits de test niet kan terugvallen op het gewone netwerkpad. Een test die via de normale route slaagt, vertelt je niets.
Beperk het wachten. Een gereedheidsvoorwaarde zonder time-out maakt van een kapot profiel een snelkoppeling die blijft hangen, en gebruikers melden dat als een telefoon die bevriest, niet als een VPN-probleem.
Wat Tasker wel en niet kan
Tasker levert de lijm: een trigger, een geordende actielijst, voorwaarden en een URL-actie. De actie URL openen voert alleen de openingsstap uit en niets anders. De verbindingsstap moet van de VPN-client komen, via een plug-in, een intent of een blootgestelde dienst die de client documenteert en toestaat.
OpenVPN for Android documenteert bijvoorbeeld een interface voor bediening op afstand, gebouwd op AIDL en intents. Dat is een capaciteit van die client, geen licentie voor welke taak op het apparaat dan ook om hem aan te sturen. Verleen besturing alleen aan de app die je bedoelt, want een automatiseringslaag die een tunnel kan verbinden en verbreken is een besturingsoppervlak dat het waard is te beschermen.
Als de geïnstalleerde client geen enkel ondersteund besturingsmechanisme blootlegt, is het eerlijke antwoord dat deze workflow niet op die client kan worden gebouwd. Een oude functievergelijkingspagina is geen capaciteitsspecificatie voor de versie op de telefoon.
Wanneer de grens verplicht moet zijn
Automatisering is een gemak, en een gemak kan geen beveiligingsgrens afdwingen. Als de eis is dat gedekte applicaties nooit zonder de VPN communiceren, gebruik dan de always-on-VPN en blokkering van het platform, of de gelijkwaardige beheerde configuratie. Een browserevenement dat afgaat nadat de navigatie is begonnen, kan die afdwinging niet vervangen, hoe zorgvuldig de taak ook is geordend.
Bepaal welke je bouwt. Een snelkoppeling die eerst verbindt en dan opent, is nuttig en het is geen garantie. Een beheerd apparaat met blokkering ingeschakeld is een garantie en het heeft helemaal geen Tasker-reeks nodig.
| 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 |
Test drie uitkomsten, niet één
Voer de workflow uit tegen een geslaagde verbinding, een bewuste time-out en een gewone herverbinding nadat de tunnel wegvalt. Het time-outgeval is het geval dat onthult of de reeks echt stopt, en het herverbindingsgeval onthult of gereedheid wordt gecontroleerd of alleen wordt aangenomen op grond van een eerder succes. Voer het time-outgeval eerst uit, want een workflow die falen negeert, is het niet waard op succes te worden getest.
Sta alleen bestemmingen van de goedgekeurde lijst toe, en controleer elke link die van buiten komt voordat je hem opent. Een taak die willekeurige links accepteert, wordt een manier om onverwachte schema's te starten, en een privébeheerpagina die zo wordt bereikt is een slechtere uitkomst dan een mislukte snelkoppeling.
Schrijf het profiel, de gereedheidsvoorwaarde en de time-out naast de taak. De volgende persoon die de VPN-client wijzigt, heeft alle drie nodig, en geen ervan is zichtbaar vanaf het snelkoppelingspictogram.