Freegje in iOS-app oft de telefoan op in VPN is, en it earlike antwurd is dat er dat net witte kin op 'e manier dy'tsto bedoelst. De SDK biedt gjin flag foar «it apparaat sit yn in tunnel», en de privee-ynterfaces dy't dat benei komme kinne, binne sletten foar apps dy't útbrocht wurde. Do kinst de eigen konfiguraasje fan dyn app observearje, de tastân dy't dêroan ferbûn is, en ien of twa yndirekte oanwizings út 'e netwurkstapel. Elk beantwurdet in oare fraach, en de measte brutsen kontrôles komme derfan dat men ien fan harren as it hiele antwurd nimt.

De myte fan it inkelde VPN-flag

It leauwen is dat der earne yn 'e SDK in eigenskip is dy't meldt oft it apparaat yn in tunnel sit, lykas in berikberheidsflag meldt oft in host antwurdet. Sa'n iepenbiere eigenskip bestiet net. Sels as dy bestie, binne «der is in tunnel» en «myn ferkear brûkt him» ferskate bewearings, en foar de measte apps jildt allinnich de twadde.

Krekt dy kleau is de reden dat biblioteken dy't advertearje mei in ienrigel VPN-detektor meastentiids eat brekfallichs lêze, lykas in ynterfacenamme of in proxy-kaai, en dat as in fûnis presintearje.

Laad de foarkarren foardatst in nil fertroust

De dielde manager-eksimplaar bestiet sa gau as do derom freegst, mar syn protokol-eigenskip bliuwt nil oant de laad-callback klear is. In nil-protokol betsjut dus «noch net laden» teminsten like faak as «net ynstallearre». Doch it lêzen binnen it foltôgingsblok, en beslút pas dan: in protokol-objekt dat bestiet, mei it ynskeakele flag oan, is hoe't «ynstallearre» derút sjocht.

In twadde sinjaal sit op it ferbining-objekt: de ûnjildige tastân, dy't it systeem meldt as dit app gjin konfiguraasje ynstallearre hat. Unjildige status tegearre mei in nil-protokol nei in foltôge lading is in echte ôfwêzigens, gjin timing-wedrin.

Ferbiningferoarings komme as meldingen

Hantlieders dy't oan load en save jûn wurde, melde wat der mei de konfiguraasje barde, net wat de tunnel docht. Wachtsje dat ien fan harren by it ferbinen ôfgiet is in wedrin dy't nea oplost. Hâld ynstee de statusferoaringsmelding yn 'e gaten, en lês de hjoeddeiske wearde fan it ferbining-objekt as dy komt.

As in konfiguraasje ienris ynstallearre is, giet de ferbiningstastân troch in koarte searje: ferbrutsen, ferbynt, ferbûn, opnij befêstiget, ferbrekt. «Ferbûn» beskriuwt de tunnel en net de tsjinner dêrefter, dus it is gjin bewiis dat ferkear floeit. On-demand kin ek in tunnel omheech bringe wylst it app skorst is, en dan komt de melding foardatsto eat te bywurkjen hast.

De beheinde proxy-ôfbylding is in oanwizing, gjin fûnis

CFNetwork kin it app de hjoeddeiske systeem-proxyynstellingen jaan, en binnen dat resultaat sit in beheind wurdboek mei kaai op ynterfacenamme. In namme sjen dy't begjint mei tun, utun, ppp, ipsec of tap is in oanwizing dat der in tunnel is. It bliuwt in ôfbylding fan wat dit app sjen kin, gjin útspraak oer wêr't pakketten reizgje.

Oanbieders binne it net iens oer nammejouwing, dus in ûntbrekkend foarheaksel bewiist neat, en in oanwêzige ynterface kin bestean sûnder ferkear te dragen. Berikberens is noch swakker: in suksesfol fersyk nei in privee-adres lit sjen dat it paad foar dat fersyk op dat stuit wurke, net dat der in VPN ynstallearre is.

De simulator brûkt de Mac, en oare apps bliuwe ûnsichtber

De simulator hat gjin eigen netwurkstapel; elke ferbining dy't er makket is fan 'e Mac. In VPN dy't op 'e host-Mac draait is dus al fan krêft foar it simulearre app, en de eigen ynstellingen fan 'e simulator litte neat sjen. As de tunnel omheech kaam nei't de simulator starte, is it meastentiids flugger om him opnij te starten as om it app te debuggen. In host op in net-standert poarte hat dy poarte nedich yn 'e URL, of in lokale trochstjoering lykas socat TCP-LISTEN:12345,fork TCP:host:12345.

Iepenbiere API's sille gjin VPN-profylen opsomme dy't by oare apps of by konfiguraasjeprofylen hearre. Foar ien bekend app is in URL-skema-proef fia canOpenURL de draachbere trúk, en sûnt iOS 9 moat it frege skema yn dyn Info.plist ferklearre wêze; lit it fuort en de oprop jout false werom. OpenVPN Connect antwurdet op openvpn://, wat it in goed foarbyld en in minne algemiene detektor makket.

Kombinearje trije observaasjes en sis wat se betsjutte

Stapelje trije resultaten yn 'e praktyk: in konfiguraasje dy't laden en ynskeakele is, in ferbiningstastân dy't net ûnjildich is, en in fersyk nei in adres dat allinnich fia de tunnel berikber is. Elk misliedt op himsels; tegearre sizze se wat it app witte kin ynstee fan wat de brûker oannimt.

Skriuw it resultaat as trije rigels yn dyn diagnostyk, net as ien boolean. As in brûker seit dat de VPN út is wylst dyn app it net iens is, litte de trije rigels sjen hokker observaasje ôfwykt, en dat is it ferskil tusken in stipekaartsje dêr'tst op hannelje kinst en ien dy't einiget mei «by my wurket it».

Relatearre artikelen