Mae dau waith hollol wahanol yn cael eu rhoi o dan yr enw VPN rhaglennol, a dim ond un ohonynt sydd ar gael i ap cyffredin ar y naill lwyfan symudol neu’r llall. Y cyntaf yw troi ymlaen proffil y mae’r defnyddiwr eisoes wedi’i gadw; yr ail yw adeiladu twndwl y tu mewn i’ch proses eich hun. Mae Android yn rhoi’r ail i chi drwy VpnService ac mae iOS yn rhoi’r ail i chi drwy hawl Network Extension, tra bod y cyntaf yn aros gyda’r system, perchennog dyfais neu weinydd MDM. Mae canfod pa un sydd ei angen arnoch mewn gwirionedd fel arfer yn gwneud y prosiect yn llai.

Dau waith sy’n rhannu enw

Mae actifadu proffil wedi’i gadw yn golygu dweud wrth dwndwl sy’n bodoli eisoes am godi: gwesteiwr, tystlythyrau, protocol, i gyd eisoes wedi’u ffurfweddu yn rhywle y gall y defnyddiwr ei weld. Mae adeiladu twndwl yn golygu mai eich cod chi sy’n berchen ar y rhyngwyneb, y ddolen pecynnau a’r protocol. Maent yn edrych yn debyg mewn ôl-groniad cynnyrch ac yn rhannu bron dim gweithrediad.

Nid yw’r naill lwyfan symudol na’r llall yn datgelu’r cyntaf i ap SDK. Mae cysylltiad sy’n ymddangos heb i’r defnyddiwr wneud unrhyw beth yn amhosibl ei wahaniaethu oddi wrth feddalwedd faleisus, felly mae’r ddwy system yn rhoi giât gydsyniad o flaen unrhyw ap sy’n cario traffig.

Android: giât gydsyniad, a dim API proffil

VpnService wedi bodoli ers Android 4.0 ac mae’n gadael i ap greu rhyngwyneb tun, yna darllen ac ysgrifennu pecynnau. Rhaid datgan y gwasanaeth gyda BIND_VPN_SERVICE, ac mae VpnService.prepare() yn cynhyrchu deialog y system sy’n gofyn i’r defnyddiwr ei ganiatáu. Sampl y llwyfan, ToyVpn, yw’r datganiad cliriaf o’r siâp arfaethedig: eich cod chi sy’n berchen ar y rhyngwyneb a phopeth sy’n llifo drwyddo.

Yr hyn nad yw’n ei wneud yw ychwanegu cofnod at sgrin gosodiadau VPN y system. Nid oes API cyhoeddus ar gyfer hynny, ac mae’r ap Gosodiadau yn cadw ei broffiliau mewn storfa na all ap cyffredin gyrraedd. Mae galwadau i’r dosbarthiadau cudd o ap normal yn cynhyrchu proffiliau nad yw’r system byth yn eu rhestru, a dyna pam mae cod a oedd yn ymddangos yn gweithio mewn un adeiladwaith yn stopio gweithio’n dawel yn y nesaf.

Mae’r llwybr rheoli yn wahanol. Gall perchennog dyfais neu berchennog proffil ddynodi pecyn VPN bob amser ymlaen drwy APIau polisi’r ddyfais, a gall offeryn menter wthio proffil y mae’r defnyddiwr wedyn yn ei gymeradwyo. Awdurdod rheoli dyfais yw hyn, nid caniatâd y mae ap yn ei ofyn wrth osod. Os mai sefydliad yw eich cwsmer, dyma’r llwybr i gynllunio ar ei gyfer; os mai person sy’n gosod o siop yw eich cwsmer, nid yw ar gael o gwbl.

iOS: yr hawl yw’r ffin

Mae iOS yn rhannu’r un gwaith yn wahanol. Mae cleient VPN yn gweithredu darparwr twndwl pecynnau neu ddirprwy ap o dan fframwaith Network Extension, a rhaid rhoi’r hawl gyfatebol i’r cyfrif datblygwr. Mae ffurfweddiad VPN personol drwy NEVPNManager yn bodoli ar gyfer yr achos symlach, ac mae’n dal i redeg o fewn yr un model caniatâd. Mae Apple yn dogfennu’r wyneb cyfan yn gyfeirlyfr Network Extension, sy’n werth ei ddarllen cyn i chi fesur y gwaith.

Nid oes ffordd gefnogol i agor sgrin gosodiadau VPN, darllen ffurfweddiadau wedi’u cadw’r defnyddiwr, na chychwyn un ohonynt. Yr hyn y gall cleient ei wneud yw anfon proffil ffurfweddu i’r defnyddiwr ei osod, ac yna defnyddio’r twndwl canlyniadol drwy alwadau rhwydwaith cyffredin. Mae twndwlio fesul ap yn cael ei bennu gan weinydd MDM drwy reol ar alw, nid yw’r ap yn ei ddewis ar amser rhedeg.

Nid yw cleient VPN gan werthwr mawr yn dystiolaeth y gall eich cyfrif anfon yr un peth. Mae’r hawliau hynny’n cael eu ceisio fesul cyfrif datblygwr ac yn cael eu hadolygu, felly mae’r risg amserlen yn gorwedd gyda Apple, nid gyda’ch cynllun sbrint.

Mae’r bwrdd gwaith yn cyrraedd ymhellach, ond mae perchnogaeth yr un fath

Windows yw’r achos caniatäol. Mae Add-VpnConnection yn creu cofnod llyfr ffôn o sesiwn PowerShell wedi’i ddyrchafu, ac mae rasdial yn ei gysylltu neu’n ei ddatgysylltu o sgript. Gall ap hefyd yrru cleient gwerthwr drwy ei linell orchymyn wedi’i dogfennu. Mae creu’r proffil yn dal yn weithred weinyddol, oherwydd bod y cofnod yn byw mewn storfa ar draws y peiriant.

Mae macOS yn ymddwyn yr un ffordd gydag offer gwahanol. Mae scutil --nc start a stop yn gweithredu ar wasanaethau sy’n bodoli eisoes, tra bod creu un yn dasg gweinyddu system. Nid yw perchenogi’r broses ar liniadur yn eich gwneud yn berchennog y ffurfweddiad.

Beth i’w adeiladu yn lle hynny

Os mai’r gwir ofyniad yw bod eich ap yn cyrraedd API mewnol, mae’r twndwl y mae’r defnyddiwr eisoes yn ei redeg yn ddigon. Gwnewch geisiadau HTTPS arferol, gadewch i’r system ddewis y llwybr, a stopiwch geisio rheoli’r twndwl. Os mai’r gofyniad yw mai dim ond traffig eich ap sy’n defnyddio’r twndwl, gofynnwch am VPN fesul ap drwy’r sianel reoli, neu derfynwch TLS y tu mewn i’r ap yn erbyn gwasanaeth sy’n gyrraeddadwy heb un.

Nid yw APIau cudd yn llwybr byr sy’n werth ei gymryd. Maent yn newid rhwng rhyddhau, maent yn methu adolygiad ap, ac mae’r methiannau a gynhyrchant yn edrych i’r sawl sy’n etifeddu’r cod fel diffygion rhwydwaith cyffredin. Nid Android yn erbyn iOS yw’r gymhariaeth; perchenogi twndwl yn erbyn gofyn i’r llwyfan lwybr traffig ydyw, a dim ond y cyntaf sy’n eich un chi i’w adeiladu.

Erthyglau cysylltiedig