iOS:n VPN-sovellusliittymät: NEVPNManager, tunnelintarjoaja vai profiili?
Valitse sovellusliittymä sen siirtotien mukaan, jota sinun on puhuttava, ja osoita sitten, että tunneli kuljettaa liikennettä: tallenna, lataa, käynnistä -järjestys, tarjoajan oikeudet ja kysynnän mukaiset säännöt.
Kolme eri tuotetta vastaa nimeen VPN iOS:ssa, eivätkä ne jaa samaa sovellusliittymää. Henkilökohtainen VPN kulkee järjestelmän sisäänrakennetuilla IPsec- ja IKEv2-siirtoteillä. Mukautettu tunneli ajaa omaa protokollaasi verkkolaajennuksen sisällä. Ja kokoonpanoprofiili määrittää kumman tahansa ja voi lisätä kysynnän mukaista toimintaa. Valitseminen sen siirtotien mukaan, jota sinun on puhuttava, on nopeampaa kuin valitseminen sen opetusohjelman mukaan, joka käännettiin ensin.
Suorita alla olevat tarkistukset järjestyksessä, koska jokainen vaihe olettaa, että edellinen tuotti kelvollisen kokoonpanon.
Vaihe 1: valitse siirtotien mukaan
Jos palvelin on IKEv2 tai Ciscon tyylinen IPsec, NEVPNManager riittää ja järjestelmän siirtotiet tulevat ilmaiseksi. Jos palvelin puhuu OpenVPN, WireGuardia tai mitä tahansa muuta, NEVPNManager ei voi auttaa: siinä ei ole koukkua kolmannen osapuolen protokollalle. Tämä tapaus tarvitsee NETunnelProviderManagerin ja pakettitunnelintarjoajan, joka toteuttaa protokollan. Profiili vain jakaa kokoonpanoa eikä voi lisätä siirtotietä, jota käyttöjärjestelmässä ei ole.
PPTP ei ole kohde nykyisissä järjestelmissä. Jaetun salaisuuden IPsec odottaa yhä ryhmän nimeä remoteIdentifierissä, salaisuuden säilyttävää avainnipun kohdetta ja laajennettua todennusta, kun palvelin pyytää käyttäjänimeä. Jokainen puuttuva osa näkyy samana yleisenä kokoonpanovirheenä, joten lisää ne kaikki ennen kuin alat selvittää mitään muuta.
Vaihe 2: noudata järjestystä tallenna, lataa, käynnistä
NEVPNManager kirjoittaa asetuksiin, lukee ne takaisin ja käynnistyy vasta sitten. Täytä protokolla- ja hallintaobjektit, kutsu saveToPreferences, kutsu loadFromPreferences ja kutsu startVPNTunnel latauksen valmistumiskäsittelijästä. Käynnistäminen ennen kuin lataus palaa tuottaa virheellisen kokoonpanon virheen, koodi 1 NEVPNErrorDomainissa, kokoonpanossa, joka on muuten oikein.
Muoto on tarpeeksi lyhyt pidettäväksi yhdessä paikassa:
manager.protocolConfiguration = proto
manager.isEnabled = true
manager.saveToPreferences { }
manager.loadFromPreferences { manager.connection.startVPNTunnel() }
startVPNTunnel palaa, kun pyyntö on hyväksytty, ei kun tunneli on ylhäällä. Tarkkaile NEVPNStatusDidChangea ja lue connection.status todellista tilaa varten. Sovellus, joka olettaa onnistumisen kutsukohdassa, raportoi yhdistetyn VPN:n, kun laajennus vielä neuvottelee. Yhdistämisen tila on hetken normaali; tila, joka ei koskaan poistu siitä, on kirjaamisen arvoinen vika.
Vaihe 3: anna tarjoajaprosessille mitä se tarvitsee
Mukautettu siirtotie toimii erillisessä prosessissa omalla nipun tunnisteellaan ja omalla oikeudellaan. Sekä säiliösovellus että tarjoaja tarvitsevat verkkolaajennuksen oikeuden allekirjoitettaessa, ja App Storen ulkopuolisen Developer ID -koonnin on yhä kannettava se provisiointiprofiilissa. Puuttuva oikeus näyttää protokollavirheeltä, koska laajennus ei yksinkertaisesti käynnisty.
Lainattavaa julkista pistokekuvausta ei ole. NEPacketTunnelProvider antaa sinulle NEPacketTunnelFlow'n read-, write- ja cancel-toiminnoilla, ja yksityisiin avainpolkuihin yltävä koodi hajoaa julkaisujen välillä. Tarjoaja jatkaa toimintaansa, kun sovellus on taustalla, joten säiliö ei tarvitse siihen taustatilaa.
Vaihe 4: kysynnän mukaisuus on sääntöjoukko, ei kytkin
isOnDemandEnabled vain virittää säännöt; NEOnDemandRuleConnect ja sen sisarukset päättävät, milloin tunneli nousee. Yhteyden arviointisääntö probe-URL:n kanssa on vain niin hyvä kuin se URL. Jos probe vastaa ilman tunnelia, sääntö päättelee, että yksityisverkko on jo saavutettavissa, eikä koskaan yhdistä, joten kohdista se johonkin, joka vastaa vain sisältä.
Aina päällä on erillinen lupaus. Se vaatii valvotun laitteen ja hallitun profiilin, ja valvomaton käyttäjä voi poistaa profiilin milloin haluaa. Älä toimita suunnittelua, joka riippuu aina päällä -tilasta, ellei laitekanta ole valvottu.
Vaihe 5: todista polku, ei tarra
tun-, tap-, ppp- tai ipsec-liitäntöjen skannaaminen todistaa, että VPN on määritetty, ei sitä, että pyyntösi käytti sitä. NWPathMonitor usesInterfaceType(.other)-toiminnolla kertoo, että virtuaalinen liitäntä on saatavilla, ja elinkelpoisuuskäsittelijä voi testata yhtä isäntää. Kumpikaan ei todista lähtöpolkua, joten yhdistä ne pyyntöön resurssiin, johon vain tunneli pääsee. Liitäntöjen nimet ovat diagnoosiapukeino, eivät koskaan portti, jonka varaan sovelluslogiikan pitäisi haarautua.
Kenttätarkistusta varten vertaa julkista osoitetta tunnelin kanssa ja ilman ja hae vain sisäinen sivu. Tilakutsua voi raportoida yhdistetyksi, kun tarjoaja neuvottelee, joten anna resurssin tuloksen päättää ja käsittele tilaa tukevana todisteena.