NEVPNManager-status er ugyldig, indtil indstillingerne indlæses
At læse status eller gemme, før loadFromPreferences er færdig, giver forældede eller mislykkede resultater. Indlæsningsrækkefølge, nøgleringreferencer og adgangsgrupper afgør det.
Genstart appen, spørg manageren om forbindelsesstatus, og den rapporterer afbrudt, mens systemmenuen tydeligt viser en aktiv tunnel. Eller et gemme-kald returnerer en fejl, der ikke forklarer noget, eller en delt hemmelighed erklæres manglende sekunder efter, at den blev tildelt. Tre symptomer, én mekanisme: manageren er en visning oven på et systemlager, og en visning læses som tom, indtil nogen indlæser den.
Før du fejlfinder noget af det, skal du afgøre, hvilken API du skal bruge. En system-IPsec- eller IKEv2-tunnel passer til den indbyggede manager; en protokol, som systemet ikke implementerer, kræver en tunneludbyder med din egen pakkehåndtering, og ingen kombination af felter ændrer det.
Managere er en visning oven på et lager
Opret eller hent manageren, bed den indlæse sine indstillinger, og lad fuldførelseshandleren blive færdig, før du læser status eller ændrer protokolindstillinger. Når opgaven er at liste gemte konfigurationer, brug kaldet for alle varianter i stedet for at genbruge én instans til to formål. Før indlæsningen lander, er status typisk ugyldig, og at afbilde ugyldig til slukket er præcis den fejl, der får en app til at se forkert ud kun efter en genstart.
Skrivning følger samme rækkefølge. Et gemme-forsøg på en manager, der aldrig har indlæst noget, kan mislykkes uden en brugbar besked, fordi der ikke er nogen gemt identitet, som ændringen kan anvendes på. Indlæs, ændr, gem, og læs derefter status igen. Det objekt, systemet forbinder, er den gemte profil, ikke den, du redigerede i hukommelsen.
Statusændringer kommer kun, mens du ser på
Når indstillingerne er indlæst, bevæger status sig gennem afbrudt, forbinder, forbundet, genbekræfter og afbryder. Initialiser grænsefladen fra én aflæsning, og lyt derefter efter ændringsnotifikationen i stedet for at polle på en timer. Polling virker i forgrunden og lyver i baggrunden, og det er sådan apps ender med en spinner, der aldrig går væk.
Notifikationer ankommer kun, mens appen er i forgrunden. Alt, der vedligeholder tilstand i baggrunden, vil se forældet ud efter en genstart, så opdater ved start og igen, når appen vender tilbage til forgrunden. Hvis en udbyder ejer tunnelen, skal du styre den gennem det matchende session-objekt; den almindelige forbindelsesegenskab modellerer ikke en udbyders livscyklus.
Hemmeligheder er referencer, ikke strenge
En rapporteret manglende delt hemmelighed betyder sjældent, at ingen tildelte den. Protokolobjektet vil have en reference: én til brugeradgangskoden og én til IPsec-foruddelte nøgle. At sende nil, eller en reference afledt af den forkerte nøgleringpost, giver samme klage som en tom plads. Fejlen navngiver symptomet og skjuler årsagen, og derfor indtaster folk den samme hemmelighed flere gange.
Skriv hemmeligheden som et generisk adgangskodeelement først, og læs derefter en vedvarende reference tilbage til det. En vedvarende reference overlever genstart, i modsætning til en pointer i hukommelsen, og det er den repræsentation, profilen serialiserer. Vælg en tilgængelighedsklasse, der stadig tillader adgang, når enheden er låst op, ellers vil en tunnel, der skal genoprette forbindelse på en låst skærm, fejle godkendelse med en fuldt gyldig hemmelighed.
Udvidelsen har sin egen nøgleringvisning
En netværksudvidelse er en separat proces, så appens standardadgang til nøgleringen når den ikke. Giv begge mål den samme nøgleringadgangsgruppe i deres rettigheder, gem elementet én gang inde i den gruppe, og lad hver proces læse det. Uden gruppen finder udvidelsen intet og rapporterer en legitimationsfejl, som appen ikke kan genskabe.
Hvis udbyderen konfigureres gennem sit udbyderkonfigurationsobjekt, må du ikke også indlejre hemmeligheden i appen. To kopier driver fra hinanden, og driften fremstår som dårlige legitimationsoplysninger snarere end som duplikering. En widget eller en anden proces, der rapporterer en anden tilstand, har samme forklaring: hver især har brug for gruppen, og hver især skal indlæse indstillinger, før den læser.
Tilpas API'en til protokollen
Den indbyggede manager bærer IPsec- og IKEv2-protokolobjekter. Den bliver ikke en generisk SSL VPN-klient gennem ekstra felter, og en upassende profil kan gemmes pænt og stadig aldrig forbinde. Afgør, hvilken kategori du er i, før du undersøger status, for en statusfejl og en ikke-understøttet protokol ser identiske ud udefra.
Til den næste genstart er tjeklisten kort: indlæs indstillinger, læs status, hold ændringsabonnementer i forgrunden, genopbyg referencer fra den delte gruppe, og bekræft, at protokolobjektet matcher den API, du implementerede. At køre listen tager et minut; at gætte på den tager en eftermiddag.