Mae tri chynnyrch gwahanol yn ateb i'r enw VPN ar iOS, ac nid ydynt yn rhannu un API. Mae VPN personol yn rhedeg ar gludwyr IPsec ac IKEv2 adeiledig y system. Mae twmnel cyfaddas yn rhedeg eich protocol eich hun y tu mewn i estyniad rhwydwaith. Ac mae proffil ffurfweddu yn ffurfweddu'r naill neu'r llall ac yn gallu ychwanegu ymddygiad ar alw. Mae dewis yn ôl y cludiant y mae'n rhaid i chi siarad ag ef yn gyflymach na dewis yn ôl pa diwtorial a gasglwyd gyntaf.

Rhedwch y gwiriadau isod yn eu trefn, oherwydd mae pob cam yn tybio bod y blaenorol wedi cynhyrchu ffurfweddiad dilys.

Cam 1: dewis yn ôl cludiant

Os yw'r gweinydd yn IKEv2 neu'n IPsec ar ddull Cisco, mae NEVPNManager yn ddigon ac mae cludwyr y system yn dod yn rhad ac am ddim. Os yw'r gweinydd yn siarad OpenVPN, WireGuard neu unrhyw beth arall, ni all NEVPNManager helpu: nid oes ganddo fachyn ar gyfer protocol trydydd parti. Mae'r achos hwnnw angen NETunnelProviderManager gyda darparwr twmnel pecynnau sy'n gweithredu'r protocol. Mae proffil ond yn dosbarthu ffurfweddiad, ac ni all ychwanegu cludiant nad yw'r system weithredu yn ei gael.

Nid yw PPTP yn darged ar systemau cyfredol. Mae IPsec a chyfrinach a rennir yn dal i ddisgwyl enw'r grwp yn remoteIdentifier, eitem cadwyn allweddi sy'n dal y gyfrinach, a dilysu estynedig pan fydd y gweinydd yn gofyn am enw defnyddiwr. Mae pob darn coll yn ymddangos fel yr un gwall ffurfweddu cyffredinol, felly ychwanegwch nhw i gyd cyn dadfygio unrhyw beth arall.

Cam 2: parchwch y drefn cadw, llwytho, cychwyn

Mae NEVPNManager yn ysgrifennu i'r dewisiadau, yn eu darllen yn ôl, ac yna'n cychwyn. Llenwch wrthrychau'r protocol a'r rheolwr, galwch saveToPreferences, galwch loadFromPreferences, a galwch startVPNTunnel o ddolen gyda'r llwytho. Mae cychwyn cyn i'r llwytho ddychwelyd yn cynhyrchu gwall ffurfweddiad annilys, cod 1 yn NEVPNErrorDomain, ar ffurfweddiad sydd fel arall yn gywir.

Mae'r siâp yn ddigon byr i'w gadw mewn un man:

manager.protocolConfiguration = proto
manager.isEnabled = true
manager.saveToPreferences { }
manager.loadFromPreferences { manager.connection.startVPNTunnel() }

Mae startVPNTunnel yn dychwelyd pan dderbynnir y cais, nid pan fydd y twmnel i fyny. Arsylwch NEVPNStatusDidChange a darllenwch connection.status am y gwir gyflwr. Mae ap sy'n tybio llwyddiant yn y man galw yn adrodd am VPN gysylltiedig tra mae'r estyniad yn dal i drafod. Mae cyflwr cysylltu yn normal am ennyd; cyflwr nad yw byth yn ei adael yw'r methiant sy'n werth ei gofnodi.

Cam 3: rhowch i broses y darparwr yr hyn sydd ei angen arni

Mae cludiant cyfaddas yn rhedeg mewn proses ar wahân gyda'i identydd pecyn ei hun a'i hawliau ei hun. Mae angen hawl estyniad rhwydwaith ar yr ap cynhwysydd a'r darparwr adeg llofnodi, ac mae adeiladu gyda Developer ID y tu allan i'r App Store yn dal i orfod ei chario yn y proffil darparu. Mae hawl sydd ar goll yn edrych fel gwall protocol oherwydd yn syml nid yw'r estyniad yn cychwyn.

Nid oes disgrifydd soced cyhoeddus i'w fenthyca. Mae NEPacketTunnelProvider yn rhoi NEPacketTunnelFlow i chi gyda read, write a cancel, ac mae cod sy'n estyn at lwybrau allweddi preifat yn torri rhwng rhyddhau. Mae'r darparwr yn dal i redeg tra mae'r ap yn y cefndir, felly nid oes angen modd cefndir ar y cynhwysydd ar gyfer hynny.

Cam 4: mae ar alw yn set o reolau, nid switsh

Mae isOnDemandEnabled ond yn arfogi'r rheolau; NEOnDemandRuleConnect a'i frodyr sy'n penderfynu pryd mae'r twmnel yn codi. Mae rheol gwerthuso cysylltiad ag URL prawf yn werth cymaint a'r URL hwnnw. Os yw'r prawf yn ateb heb y twmnel, mae'r rheol yn casglu bod y rhwydwaith preifat eisoes yn gyrhaeddadwy ac ni fydd byth yn cysylltu, felly cyfeiriwch ef at rywbeth sy'n ateb o'r tu mewn yn unig.

Mae cyson-ar waith yn addewid ar wahân. Mae angen dyfais dan oruchwyliaeth a phroffil wedi'i reoli, a gall defnyddiwr heb oruchwyliaeth dynnu proffil pryd bynnag y myn. Peidiwch a chyflenwi dyluniad sy'n dibynnu ar gyson-ar waith oni bai bod y fflyd dan oruchwyliaeth.

Cam 5: profwch y llwybr, nid y label

Mae sganio am ryngwynebau tun, tap, ppp neu ipsec yn profi bod VPN wedi'i ffurfweddu, nid bod eich cais wedi'i ddefnyddio. Mae NWPathMonitor gyda usesInterfaceType(.other) yn dweud bod rhyngwyneb rhithwir ar gael, a gall dolen hyfywedd brofi un gwesteiwr. Nid yw'r naill na'r llall yn profi'r llwybr allan, felly cyfunwch nhw a chais i adnodd na all ond y twmnel ei gyrraedd. Mae enwau rhyngwynebau yn gymorth diagnostig, byth yn borth y dylai rhesymeg yr ap gangen arno.

Ar gyfer gwiriad maes, cymharwch y cyfeiriad cyhoeddus gyda'r twmnel a hebddi a chyrchwch dudalen fewnol yn unig. Gall galwad statws adrodd am gysylltiad tra mae'r darparwr yn trafod, felly gadewch i ganlyniad yr adnodd benderfynu a thriniwch y statws fel tystiolaeth ategol.

Erthyglau cysylltiedig