Tasker: opret VPN-forbindelse før du åbner en privat URL
Tasker skal forbinde og vente, før den åbner en privat URL: definér parathed, brug klientens kontrolgrænseflade, og hold altid-til for en hård grænse.
At åbne en privat URL og håbe på, at tunnelen kommer op først, er et kapløb, og browseren vinder som regel. En genvej, der reagerer på en side, der allerede indlæses, har misset DNS-opslaget og ofte den første forbindelse, som netop er den del, der havde brug for VPN'en. Arbejdsgangen skal eje rækkefølgen i stedet for at observere den. Tre betingelser afgør, om den arbejdsgang overhovedet hører til i Tasker.
Ét indgangspunkt bør eje sekvensen
Giv den private tjeneste ét godkendt indgangspunkt, og lad det indgangspunkt udføre trinnene i rækkefølge. Validér destinationen, vælg den tilsigtede profil, anmod om forbindelsen, vent på et parathedsresultat med en grænse for, hvor længe du vil vente, og åbn først derefter URL'en. Hvis et trin fejler, stop og sig det i stedet for at falde igennem til en direkte åbning.
Det er den sidste klausul, folk springer over. En arbejdsgang, der alligevel åbner URL'en ved timeout, er værre end ingen automatisering, fordi den producerer en anmodning, der ligner en mislykket VPN, mens den aldrig brugte nogen.
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
Den nummererede liste ovenfor er kontrakten, ikke en eksporteret profil. Hver klient implementerer sin kontrolflade forskelligt, og nogle kræver et plugin, en udtrykkelig kontroltilladelse eller et engangssamtykke fra brugeren, som ingen automatisering kan levere.
Forbundet er ikke det samme som parat
En status, der siger, at tunnelen er startet beviser, at klienten accepterede anmodningen. Det beviser ikke, at resolveren nu returnerer private adresser, eller at den tilsigtede tjeneste kan nås. Det er separate resultater, og kløften mellem dem er der, hvor en genvej, der åbner for tidligt, fejler lydløst. Klienten rapporterer sin egen tilstand, ikke tilstanden af den vej, URL'en vil bruge.
Definér parathed i forhold til noget, arbejdsgangen kan observere. En forbindelsestilstand fra klienten, en opløst adresse fra det forventede område eller en nåbarhedstest mod den konkrete tjeneste fungerer alle, forudsat at testen ikke kan falde tilbage til den almindelige netværksvej. En test, der lykkes ad den normale rute, fortæller dig intet.
Begræns ventetiden. En parathedsbetingelse uden timeout gør en brudt profil til en genvej, der hænger, og det rapporterer brugerne som telefonen, der fryser, ikke som et VPN-problem.
Hvad Tasker kan og ikke kan
Tasker leverer klæbet: en trigger, en ordnet handlingsliste, betingelser og en URL-handling. Dens handling til at åbne URL udfører kun åbningstrinnet og intet andet. Forbindelsestrinnet skal komme fra VPN-klienten, via et plugin, et intent eller en eksponeret tjeneste, som klienten dokumenterer og tillader.
OpenVPN for Android dokumenterer for eksempel en fjernkontrolgrænseflade bygget på AIDL og intents. Det er en evne hos den klient, ikke en licens for enhver opgave på enheden til at styre den. Giv kun kontrol til den app, du har til hensigt, fordi et automatiseringslag, der kan forbinde og afbryde en tunnel, er en kontrolflade, der er værd at beskytte.
Hvis den installerede klient ikke eksponerer nogen understøttet kontrolmekanisme, er det ærlige svar, at denne arbejdsgang ikke kan bygges på den klient. En gammel funktionssammenligningsside er ikke en kapacitetsspecifikation for den version, der er på telefonen.
Når grænsen skal være obligatorisk
Automatisering er en bekvemmelighed, og en bekvemmelighed kan ikke håndhæve en sikkerhedsgrænse. Hvis kravet er, at omfattede applikationer aldrig kommunikerer uden VPN'en, brug platformens altid-til VPN og blokeringsindstilling eller den tilsvarende administrerede konfiguration. En browsershændelse, der udløses, efter at navigationen er begyndt, kan ikke erstatte den håndhævelse, uanset hvor omhyggeligt opgaven er ordnet.
Beslut, hvilken du bygger. En genvej, der først forbinder og derefter åbner, er nyttig, og den er ikke en garanti. En administreret enhed med blokering aktiveret er en garanti, og den har slet ikke brug for en Tasker-sekvens.
| 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 |
Kør tre udfald, ikke ét
Kør arbejdsgangen mod en vellykket forbindelse, et bevidst timeout og en almindelig genopkobling, efter at tunnelen falder. Timeout-tilfældet er det, der afslører, om sekvensen virkelig stopper, og genopkoblingstilfældet afslører, om parathed kontrolleres, eller blot antages ud fra en tidligere succes. Kør timeout-tilfældet først, fordi en arbejdsgang, der ignorerer fejl, ikke er værd at teste for succes.
Tillad kun destinationer fra den godkendte liste, og kontrollér ethvert link, der kommer udefra, før du åbner det. En opgave, der accepterer vilkårlige links, bliver en måde at starte uventede skemaer, og en privat administrationsside, der nås på den måde, er et værre udfald end en mislykket genvej.
Skriv profilen, parathedsbetingelsen og timeoutet ned ved siden af opgaven. Den næste person, der ændrer VPN-klienten, får brug for alle tre, og ingen af dem er synlige fra genvejsikonet.