Þegar þú byggir VPN-skjá inni í iOS-appi er fyrsta undrunin sú að prótókóllistinn í Stillingum er ekki API-listinn. Network Extension-kerfið leyfir appinu þínu að búa til eina persónulega VPN-stillingu, í eigu þess apps, og það tekur aðeins við nokkrum prótókollhlutum. Allt annað sem fólk væntir, frá L2TP til niðurhalaðs prófíls, liggur utan þessa yfirborðs eða er einkamál Apple. Mistökin sem fylgja eru venjulega ekki villur, það er API-ið sem neitar vinnu sem því var aldrei gefin.

Goðsögnin: API-ið er ritill fyrir Stillingar

Talið er að þar sem iOS getur stillt IKEv1, IKEv2, L2TP og IPsec prófíl geti app búið til hvaða þeirra sem er forritunarlega. Það getur það ekki. Kerfið býður kallandi appi nákvæmlega eitt stillingarhólf, og það hólf tekur aðeins við litlum hópi opinberra prótókollklasa. Allt annað sem fólk væntir, frá L2TP til niðurhalaðs prófíls, liggur utan þessa yfirborðs eða er einkamál Apple.

Mistökin sem fylgja eru venjulega ekki villur. Það er API-ið sem neitar vinnu sem því var aldrei gefin, og lausnin er að hanna skjáinn í kringum það sem API-ið á.

Þrír prótókollhlutir og þeir sem eru ekki til

Valkostir þínir eru IKEv1 í gegnum NEVPNProtocolIPSec, IKEv2 í gegnum NEVPNProtocolIKEv2, og NETunnelProviderProtocol ef þú sendir þína eigin pakkatunnilviðbót. NEVPNManager-tilvísunin listar samþykkta prótókollhluti. L2TP og PPTP birtast aldrei á þeim lista því Apple gaf út enga klasa fyrir þau. Að reyna hvort tveggja endar við vistun með villu, eða verra, með stillingu sem kerfið neitar hljóðlega að nota.

Skrifborðskóði fylgir öðrum reglum. Á macOS staflar SCNetworkInterfaceCreateWithInterface viðmótstegund eins og L2TP yfir IPv4 og festir hana við netþjónustu, og networksetup -connectpppoeservice ræsir niðurstöðuna. Stjórnandaréttindi og hjálpartæki eru nauðsynleg, því sameiginlega leyndarmálið og lykilorðið fara í lyklakippu kerfisins. Afritaðu þá hönnun yfir á iOS og ekkert þýðist.

Sendu tilvísun í lyklakippu, ekki lykilorðið

Hvorugur IKE-klassinn tekur við lykilorði sem texta. Eiginleikarnir tveir passwordReference og sharedSecretReference vilja varanlega tilvísun í lyklakippu, sem þú færð frá SecItemCopyMatching með því að biðja um kSecReturnPersistentRef. Að senda gögn hlutarins, eða stinga streng í reitinn, veldur vistunarmistökum eða tengingu með auð skilríki. Tilvísunin er aðeins eins endingargóð og lyklakippuhluturinn á bak við hana, þess vegna verður hluturinn að vera til áður en stillingin er sett saman. Búðu hann til í sömu færslu og vistunina og þú fjarlægir heilan flokk röðunarvilla.

Vottunarskilríkjavottun fer aðra leið: identityData auk identityDataPassword fyrir PKCS#12 blob. Að senda þann blob inni í app-pakkanum er venja sem er erfð úr sýniskóða frekar en afgreiðsluákvörðun, því lykilorðið ferðast með honum og hvert eintak appsins ber sömu auðkenni.

Heimild og framboð hliða öllu

Stjórnandinn gæti alls ekki verið til, og ástæðan er úthlutun. App-auðkennið þitt þarf Network Extension-getuna ásamt heimild fyrir persónulegt VPN, og prófíllinn sem undirritar bygginguna verður að bera bæði.

Sleppt því og sameiginlega tilvikið skilar nil, eða vistunin mistekst með villu sem nefnir aldrei heimildina. Framboð er hitt hliðið. Ef þú miðar á eitthvað eldra en iOS 8 vantar táknið á keyrslutíma, svo mistökin eru hrun eða nil-stjórnandi, ekki stjórnandi án stillingar. Athugaðu keyrsluumhverfið og heimildina áður en þú kembir hlutgrafinn þinn.

Hladdu, breyttu, vistaðu og fylgstu svo með röðinni á beiðni

Meðhöndlaðu lífsferilinn sem hleðslu, breytingu og vistun og slepptu aldrei hleðslunni. Þangað til loadFromPreferences lýkur heldur stjórnandinn engu og ekki er hægt að lesa eða skipta um prótókollhlutinn.

Önnur vistun kemur í stað stillingarinnar í stað þess að bæta annarri við, svo hálfkláruð vistun getur skaðað prófíl sem virkaði. Reglur á beiðni mynda raðað fylki, og sú röð er stefnan. Settu reglu um tengingu hvar sem er á undan aftengingarreglunni og handvirkri aftengingu fylgir tafarlaus endurtenging, sem virðist galli en fylgir skjalfestu matinu.

Færðu aftengingarregluna fram þegar aðgerð notandans verður að vinna. Það sem er utan stjórnar appsins skiptir jafn miklu máli. Leiðir koma frá tunnlinum eða stefnu þjónsins frekar en vali sem þú setur, og pakkatunnilveitandi tilkynnir þær þegar hann ræsist. Appið getur ekki listað eða breytt prófílum sem önnur app eða stillingarprófíl hafa sett upp, svo lofaðu ekki skjá sem sýnir hvert VPN á tækinu.

Tengdir greinar