Gofynnwch i ap iOS a yw'r ffôn ar VPN, a'r ateb gonest yw na all wybod hynny yn y ffordd rydych chi'n ei olygu. Nid yw'r SDK yn dangos unrhyw faner ar gyfer «mae'r ddyfais mewn tiwnel», ac mae'r rhyngwynebau preifat a allai fod yn agos at hynny ar gau i apiau sy'n cael eu cyhoeddi. Gallwch arsylwi cyfluniad eich ap eich hun, y cyflwr sy'n gysylltiedig ag ef, ac un neu ddau o awgrymiadau anuniongyrchol o'r pentwr rhwydwaith. Mae pob un yn ateb cwestiwn gwahanol, ac mae'r rhan fwyaf o wiriadau wedi torri yn dod o gymryd un ohonynt fel yr ateb cyfan.

Chwedl yr un faner VPN

Y gred yw bod eiddo yn rhywle yn y SDK sy'n adrodd a yw'r ddyfais mewn tiwnel, yn yr un modd ag y mae faner gyrhaeddadwyedd yn adrodd a yw gwesteiwr yn ateb. Nid oes eiddo cyhoeddus o'r fath. Hyd yn oed petai, mae «mae tiwnel yn bodoli» a «mae fy nhraffig yn ei ddefnyddio» yn honiadau gwahanol, a dim ond yr ail sy'n bwysig i'r rhan fwyaf o apiau.

Y bwlch hwnnw yw'r rheswm pam mae llyfrgelloedd sy'n hysbysebu canfodydd VPN un llinell yn tueddu i ddarllen rhywbeth bregus, fel enw rhyngwyneb neu allwedd dirprwy, a'i gyflwyno fel dedfryd.

Llwythwch y dewisiadau cyn ymddiried mewn nil

Mae'r enghraifft rheolwr a rennir yn bodoli cyn gynted ag y gofynnwch amdani, ond mae ei eiddo protocol yn aros yn nil nes bod y galwad yn ôl llwytho wedi cwblhau. Felly mae protocol nil yn golygu «heb ei lwytho eto» o leiaf mor aml ag y mae'n golygu «heb ei osod». Gwnewch y darllen y tu mewn i'r bloc cwblhau, a dim ond wedyn penderfynu: gwrthrych protocol sy'n bodoli, gyda'r faner alluogi ymlaen, yw'r olwg sydd ar «wedi'i osod».

Mae ail signal ar y gwrthrych cysylltiad: y cyflwr annilys, y mae'r system yn ei adrodd pan nad oes gan yr ap hwn gyfluniad wedi'i osod. Mae statws annilys ynghyd â phrotocol nil ar ôl llwytho wedi cwblhau yn absenoldeb go iawn, nid ras amseru.

Mae newidiadau cysylltiad yn dod fel hysbysiadau

Mae'r trinwyr a roddir i load a save yn adrodd beth ddigwyddodd i'r cyfluniad, nid beth mae'r tiwnel yn ei wneud. Mae aros i un ohonynt danio wrth gysylltu yn ras nad yw byth yn datrys. Gwyliwch yr hysbysiad newid statws yn lle hynny, a darllenwch werth cyfredol y gwrthrych cysylltiad pan ddaw.

Unwaith y bydd cyfluniad wedi'i osod, mae cyflwr y cysylltiad yn mynd trwy ddilyniant byr: datgysylltiedig, yn cysylltu, cysylltiedig, yn ail-ddweud, yn datgysylltu. Mae «cysylltiedig» yn disgrifio'r tiwnel ac nid y gweinydd y tu ôl iddo, felly nid yw'n brawf bod traffig yn llifo. Gall On-demand hefyd godi tiwnel tra bod yr ap wedi'i atal, ac yna mae'r hysbysiad yn glanio cyn bod gennych unrhyw beth i'w ddiweddaru.

Mae'r chipolwg dirprwy cyfyngedig yn awgrym, nid yn ddedfryd

Gall CFNetwork roi gosodiadau dirprwy cyfredol y system i'r ap, ac y tu mewn i'r canlyniad hwnnw mae geiriadur cyfyngedig wedi'i allweddoli yn ôl enw rhyngwyneb. Mae gweld enw sy'n dechrau gyda tun, utun, ppp, ipsec neu tap yn awgrym bod tiwnel yn bresennol. Mae'n parhau i fod yn chipolwg o'r hyn y gall yr ap hwn ei weld, nid yn ddatganiad am ble mae pecynnau'n teithio.

Mae darparwyr yn anghytuno am enwi, felly nid yw rhagddodiad ar goll yn profi dim, a gall rhyngwyneb presennol fodoli heb gario unrhyw draffig. Mae cyrhaeddadwyedd yn wannach fyth: mae cais llwyddiannus i gyfeiriad preifat yn dangos bod y llwybr wedi gweithio ar gyfer y cais hwnnw ar y pryd, nid bod VPN wedi'i osod.

Mae'r efelychydd yn benthyg y Mac, ac mae apiau eraill yn aros yn anweledig

Nid oes gan yr efelychydd bentwr rhwydwaith ei hun; mae pob cysylltiad y mae'n ei wneud yn un y Mac. Felly mae VPN sy'n rhedeg ar y Mac gwesteiwr eisoes yn weithredol i'r ap efelychiedig, ac nid yw gosodiadau'r efelychydd ei hun yn dangos dim. Os cododd y tiwnel ar ôl i'r efelychydd ddechrau, mae ailgychwyn fel arfer yn gyflymach na dadfygio'r ap. Mae gwesteiwr ar borthladd ansafonol angen y porthladd hwnnw yn yr URL, neu anfon ymlaen lleol fel socat TCP-LISTEN:12345,fork TCP:host:12345.

Ni fydd APIau cyhoeddus yn rhestru proffiliau VPN sy'n perthyn i apiau eraill neu i broffiliau cyfluniad. Ar gyfer un ap hysbys, prawf cynllun URL drwy canOpenURL yw'r tric cludadwy, ac ers iOS 9 rhaid datgan y cynllun a holiciir yn eich Info.plist; os hebddo, mae'r alwad yn dychwelyd false. Mae OpenVPN Connect yn ymateb ar openvpn://, sy'n ei wneud yn enghraifft dda ac yn ganfodydd cyffredinol gwael.

Cyfunwch dri arsylwad a dywedwch beth maen nhw'n ei olygu

Pentyrrwch dri chanlyniad yn ymarferol: cyfluniad a lwythwyd ac sydd wedi'i alluogi, cyflwr cysylltiad nad yw'n annilys, a chais i gyfeiriad na ellir ei gyrraedd ond drwy'r tiwnel. Mae pob un ar ei ben ei hun yn camarwain; gyda'i gilydd maen nhw'n datgan beth y gall yr ap ei wybod yn hytrach na beth mae'r defnyddiwr yn ei dybio.

Ysgrifennwch y canlyniad fel tair llinell yn eich diagnosteg, nid un boolean. Pan fydd defnyddiwr yn dweud bod y VPN i ffwrdd tra nad yw eich ap yn cytuno, mae'r tair llinell yn dangos pa arsylwad a wyrodd, a dyna'r gwahaniaeth rhwng tocyn cymorth y gallwch weithredu arno a thocyn sy'n gorffen gyda «mae'n gweithio i mi».

Erthyglau cysylltiedig