Adeiladwch sgrin VPN y tu mewn i ap iOS a’r syndod cyntaf yw bod rhestr protocol yn ap Gosodiadau heb fod yn rhestr API. Mae’r fframwaith Network Extension yn caniatáu i’ch ap greu un ffurfweddiad VPN personol, sy’n eiddo i’r ap hwnnw, ac mae’n derbyn dim ond ychydig o wrthrychau protocol. Mae popeth arall y mae pobl yn ei ddisgwyl, o L2TP i broffil a lawrlwythwyd, y tu allan i’r wyneb hwnnw neu’n breifat i Apple. Nid bygiau yw’r methiannau sy’n dilyn fel rheol; yr API sy’n gwrthod tasg na chafodd erioed.

Y myth: nid golygydd Gosodiadau yw’r API

Y gred yw, am fod iOS yn gallu ffurfweddu proffiliau IKEv1, IKEv2, L2TP ac IPsec, y gall ap greu unrhyw un ohonynt yn rhaglennol. Na all. Mae’r fframwaith yn datgelu un slot ffurfweddiad yn union i’r ap sy’n galw, ac mae’r slot hwnnw’n derbyn set fach o ddosbarthiadau protocol cyhoeddus. Mae popeth arall y mae pobl yn ei ddisgwyl, o L2TP i broffil a lawrlwythwyd, y tu allan i’r wyneb hwnnw neu’n breifat i Apple.

Nid bygiau yw’r methiannau sy’n dilyn fel rheol. Yr API sy’n gwrthod tasg na chafodd erioed, a’r ateb yw cynllunio’r sgrin o amgylch yr hyn sy’n eiddo i’r API.

Tri gwrthrych protocol a’r rhai nad ydynt yn bodoli

Eich opsiynau yw IKEv1 drwy NEVPNProtocolIPSec, IKEv2 drwy NEVPNProtocolIKEv2, ac NETunnelProviderProtocol os ydych yn cludo estyniad twndl pecynnau eich hun. Mae cyfeirlyfr NEVPNManager yn rhestru’r gwrthrychau protocol a dderbynnir. Nid yw L2TP a PPTP byth yn ymddangos yn y rhestr honno oherwydd na chyhoeddodd Apple unrhyw ddosbarth ar eu cyfer. Mae ceisio’r naill neu’r llall yn gorffen wrth gadw gyda gwall, neu’n waeth, gyda ffurfweddiad y mae’r system yn gwrthod ei ddefnyddio’n dawel.

Mae cod bwrdd gwaith yn dilyn rheolau gwahanol. Ar macOS, mae SCNetworkInterfaceCreateWithInterface yn pentyrru math o ryngwyneb fel L2TP dros IPv4 ac yn ei atodi at wasanaeth rhwydwaith, ac mae networksetup -connectpppoeservice yn cychwyn y canlyniad. Mae angen hawliau gweinyddwr ac offeryn cynorthwyol, oherwydd bod y gyfrinach a rennir a’r cyfrinair yn mynd i gadwyn allweddi’r system. Copïwch y dyluniad hwnnw i iOS ac ni fydd dim yn cyfuno.

Pasiwch gyfeirnod cadwyn allweddi, nid y cyfrinair

Nid yw’r naill ddosbarth IKE na’r llall yn derbyn cyfrinair fel testun. Mae’r ddau briodwedd passwordReference a sharedSecretReference eisiau cyfeirnod parhaus i gadwyn allweddi, a gewch o SecItemCopyMatching drwy ofyn am kSecReturnPersistentRef. Mae pasio data’r eitem, neu orfodi llinyn i’r maes, yn cynhyrchu methiant cadw neu gysylltiad â chymwysterau gwag. Dim ond mor barhaus ag y mae’r eitem gadwyn allweddi y tu ôl iddo y mae’r cyfeirnod, ac felly rhaid i’r eitem fodoli cyn i’r ffurfweddiad gael ei gynnull. Crëwch hi yn yr un trafodiad â’r cadw ac fe gewch wared ar ddosbarth cyfan o fygiau trefnu.

Mae dilysu tystysgrif yn cymryd llwybr gwahanol: identityData ynghyd ag identityDataPassword ar gyfer blob PKCS#12. Mae cludo’r blob hwnnw y tu mewn i fwndel yr ap yn arfer a ddaeth o god enghreifftiol yn hytrach na phenderfyniad cludo, oherwydd bod y cyfrinair yn teithio gydag ef ac mae pob copi o’r ap yn cario’r un hunaniaeth.

Mae’r hawl a’r argaeledd yn penderfynu popeth

Efallai nad yw’r rheolydd yn bodoli o gwbl, a’r rheswm yw darparu. Mae angen gallu Network Extension ar eich dynodydd ap ynghyd â’r hawl VPN personol, a rhaid i’r proffil sy’n llofnodi’r adeiladwaith gario’r ddau.

Heidiwch dros hynny ac mae’r enghraifft a rennir yn dychwelyd nil, neu mae’r cadw’n methu â gwall nad yw byth yn sôn am hawl. Argaeledd yw’r giât arall. Targedwch unrhyw beth hŷn nag iOS 8 ac mae’r symbol ar goll ar amser rhedeg, felly’r methiant yw damwain neu reolydd gyda gwerth nil, nid rheolydd heb ffurfweddiad. Gwiriwch yr amgylchedd rhedeg a’r hawl cyn dadfygio’ch graff gwrthrychau.

Llwythwch, addaswch, cadwch, ac yna gwyliwch y drefn ar-alw

Triniwch y cylch bywyd fel llwytho, addasu, cadw, a pheidiwch byth â hepgor y llwytho. Nes bod loadFromPreferences wedi cwblhau, nid yw’r rheolydd yn dal dim ac ni ellir darllen na chyfnewid y gwrthrych protocol.

Mae ail gadw’n disodli’r ffurfweddiad yn lle ychwanegu un arall, felly gall cadw hanner-gorffenedig ddifrodi proffil a oedd yn gweithio. Mae rheolau ar-alw’n ffurfio arae drefnus, a’r drefn honno yw’r polisi. Rhowch reol cysylltu o unrhyw le o flaen y rheol datgysylltu ac mae datgysylltiad â llaw yn cael ei ddilyn gan ailgysylltu ar unwaith, sy’n edrych fel diffyg ond yn dilyn y gwerthusiad a ddogfennwyd.

Symudwch y rheol datgysylltu i’r blaen pan fo’n rhaid i weithred y defnyddiwr ennill. Mae’r hyn sy’n aros y tu allan i reolaeth yr ap yr un mor bwysig. Daw llwybrau o’r twndl neu o bolisi’r gweinydd, nid o ffefryn a osodwch chi, gyda darparwr twndl pecynnau’n eu hadrodd pan fydd yn cychwyn. Ni all yr ap restru nac olygu proffiliau a osodwyd gan apiau eraill neu broffiliau ffurfweddu, felly peidiwch ag addo sgrin sy’n dangos pob VPN ar y ddyfais.

Erthyglau cysylltiedig