Meta tibni skrin VPN ġewwa app iOS, l-ewwel sorpriża hi li il-lista tal-protokolli fl-app Settings mhix il-lista tal-API. Il-qafas Network Extension iħalli l-app tiegħek toħloq konfigurazzjoni VPN personali waħda, proprjetà ta’ dik l-app, u jaċċetta biss ftit oġġetti tal-protokoll. Kull ħaġa oħra li n-nies jistennew, minn L2TP sa profil imniżżel, tinsab barra minn dan il-wiċċ jew hija privata għal Apple. Il-fallimenti li jiġu wara normalment mhumiex bugs, l-API qed tirrifjuta xogħol li qatt ma ngħata lilha.

Il-mit: l-API hija editur tas-Settings

Huwa maħsub li għax iOS jista’ jikkonfigura profili IKEv1, IKEv2, L2TP u IPsec, app tista’ toħloq wieħed minnhom b’mod programmatiku. Ma tistax. Il-qafas jesponi eżattament post wieħed tal-konfigurazzjoni lill-app li ssejjaħ, u dak il-post jaċċetta biss sett żgħir ta’ klassijiet tal-protokoll pubbliċi. Kull ħaġa oħra li n-nies jistennew, minn L2TP sa profil imniżżel, tinsab barra minn dan il-wiċċ jew hija privata għal Apple.

Il-fallimenti li jiġu wara normalment mhumiex bugs. L-API qed tirrifjuta xogħol li qatt ma ngħata lilha, u s-soluzzjoni hi li tiddisinja l-iskrin madwar dak li jippossjedi l-API.

Tliet oġġetti tal-protokoll u dawk li ma jeżistux

L-għażliet tiegħek huma IKEv1 permezz ta’ NEVPNProtocolIPSec, IKEv2 permezz ta’ NEVPNProtocolIKEv2, u NETunnelProviderProtocol jekk tibgħat estensjoni tal-mina tal-pakketti tiegħek stess. Ir-referenza NEVPNManager telenka l-oġġetti tal-protokoll aċċettati. L2TP u PPTP qatt ma jidhru f’dik il-lista għax Apple ma ppubblikat l-ebda klassi għalihom. Li tipprova wieħed minnhom jispiċċa fil-ħin tal-iffrankar b’żball, jew agħar, b’konfigurazzjoni li s-sistema tirrifjuta bil-moħbi li tuża.

Il-kodiċi tad-desktop isegwi regoli oħra. Fuq macOS, SCNetworkInterfaceCreateWithInterface jistiva tip ta’ interface bħal L2TP fuq IPv4 u jwaħħalha ma’ servizz tan-netwerk, u networksetup -connectpppoeservice jibda r-riżultat. Hemm bżonn drittijiet ta’ amministratur u għodda assistenti, għax is-sigriet kondiviż u l-password jmorru fil-keychain tas-sistema. Ikkopja dan id-disinn għal iOS u xejn ma jikkompila.

Għaddi referenza tal-keychain, mhux il-password

L-ebda waħda miż-żewġ klassijiet IKE ma taċċetta password bħala test. Iż-żewġ proprjetajiet passwordReference u sharedSecretReference iridu referenza persistenti tal-keychain, li tikseb minn SecItemCopyMatching billi titlob kSecReturnPersistentRef. Li tgħaddi d-data tal-oġġett, jew li tdaħħal string fil-qasam, tipproduċi falliment tal-iffrankar jew konnessjoni b’kredenzjali vojta. Ir-referenza hija dejjiema biss daqs l-oġġett tal-keychain warajha, u għalhekk l-oġġett irid jeżisti qabel ma tiġi assemblata l-konfigurazzjoni. Oħolqu fl-istess transazzjoni tal-iffrankar u tneħħi klassi sħiħa ta’ bugs tal-ordni.

L-awtentikazzjoni b’ċertifikat tieħu triq differenti: identityData flimkien ma’ identityDataPassword għal blob PKCS#12. Li tibgħat dak il-blob fil-bundle tal-app hija drawwa li ġiet mill-kodiċi ta’ eżempju, mhux deċiżjoni tal-ħruġ, għax il-password tivvjaġġa miegħu u kull kopja tal-app iġġorr l-istess identità.

Id-dritt u d-disponibbiltà jiddefinixxu kollox

Jista’ jkun li l-maniġer ma jeżistix xejn, u r-raġuni hija l-provisioning. L-identifikatur tal-app tiegħek jeħtieġ il-kapaċità Network Extension flimkien mad-dritt tal-VPN personali, u l-profil li jiffirma l-build irid iġorr it-tnejn.

Aqbeż dan u l-istanza kondiviża tirritorna nil, jew l-iffrankar ifalli b’żball li qatt ma jsemmi d-dritt. Id-disponibbiltà hija l-bieb l-ieħor. Jekk timmira għal xi ħaġa eqdem minn iOS 8, is-simbolu jonqos fil-ħin tal-eżekuzzjoni, allura l-falliment huwa crash jew maniġer nil, mhux maniġer mingħajr konfigurazzjoni. Iċċekkja l-ħin tal-eżekuzzjoni u d-dritt qabel ma tiddeb baga l-graf tal-oġġetti tiegħek.

Ittella’, ibdel, iffranka, imbagħad osservi l-ordni fuq talba

Ittratta ċ-ċiklu tal-ħajja bħala ttella’, ibdel, iffranka, u qatt ma taqbeż it-tagħbija. Sakemm loadFromPreferences ma jitlesta, il-maniġer ma jżomm xejn u l-oġġett tal-protokoll ma jistax jinqara jew jinbidel.

It-tieni ffrankar jissostitwixxi l-konfigurazzjoni minflok ma żżid oħra, allura ffrankar nofsu lest jista’ jagħmel ħsara lil profil li kien qed jaħdem. Ir-regoli fuq talba jiffurmaw array ordnat, u dak l-ordni hija l-politika. Poġġi regola ta’ qabbad-minn-kullimkien qabel ir-regola ta’ skonnettja u wara skonnettja manwali tiġi rikonnessjoni immedjata, li tidher bħala difett imma ssegwi l-valutazzjoni dokumentata.

Mexxi r-regola ta’ skonnettja ’l quddiem meta l-azzjoni tal-utent trid tirbaħ. Dak li jibqa’ barra mill-kontroll tal-app huwa importanti daqstant. Ir-rotot jiġu mill-mina jew mill-politika tas-server minflok minn preferenza li tistabbilixxi int, u fornitur tal-mina tal-pakketti jirrappurtahom meta jibda. L-app ma tistax telenka jew teditja profili installati minn apps oħra jew profili ta’ konfigurazzjoni, allura tippromettix skrin li juri kull VPN fuq it-tagħmir.

Artikli relatati