Start appen på nytt, spør administratoren om tilkoblingsstatus, og den rapporterer frakoblet mens systemmenyen tydelig viser en aktiv tunnel. Eller et lagringskall returnerer en feil som ikke forklarer noe, eller en delt hemmelighet erklæres manglende sekunder etter at den ble tildelt. Tre symptomer, én mekanisme: administratoren er en visning over et systemlager, og en visning leses tom til noen laster den.

Før du feilsøker noe av dette, avgjør hvilken API du skal bruke. En systemtunnel med IPsec eller IKEv2 passer den innebygde administratoren; en protokoll systemet ikke implementerer trenger en tunnelleverandør med din egen pakkebehandling, og ingen kombinasjon av felt endrer det.

Administratoren er en visning over et lager

Opprett eller hent administratoren, be den laste innstillingene sine, og la fullføringshandleren bli ferdig før du leser status eller endrer protokollinnstillinger. Når oppgaven er å liste lagrede konfigurasjoner, bruk kallet for alle varianter i stedet for å gjenbruke én instans til to formål. Før lastingen kommer, er statusen vanligvis ugyldig, og å tolke ugyldig som av er nettopp feilen som får en app til å se feil ut bare etter en omstart.

Skriving følger samme rekkefølge. Et lagringsforsøk på en administrator som aldri har lastet noe kan mislykkes uten en nyttig melding, fordi det ikke finnes noen lagret identitet endringen kan brukes på. Last, endre, lagre, og les deretter statusen på nytt. Objektet systemet kobler til er den lagrede profilen, ikke den du redigerte i minnet.

Statusendringer kommer bare mens du ser på

Når innstillingene er lastet, går statusen gjennom frakoblet, kobler til, tilkoblet, bekrefter på nytt og kobler fra. Initialiser grensesnittet fra én lesing, og lytt deretter etter endringsvarslet i stedet for å polle med en timer. Polling fungerer i forgrunnen og lyver i bakgrunnen, og slik ender apper med en spinner som aldri løses.

Varsler kommer bare mens appen er i forgrunnen. Alt som holder tilstand i bakgrunnen vil se utdatert ut etter en omstart, så oppdater ved oppstart og igjen når appen kommer tilbake til forgrunnen. Hvis en leverandør eier tunnelen, styr den gjennom det samsvarende sesjonsobjektet; den vanlige tilkoblingsegenskapen modellerer ikke en leverandørs livssyklus.

Hemmeligheter er referanser, ikke strenger

En melding om manglende delt hemmelighet betyr sjelden at ingen har tildelt en. Protokollobjektet vil ha en referanse: én for brukerpassordet og én for den forhåndsdelte IPsec-nøkkelen. Å sende nil, eller en referanse utledet fra feil nøkkelringoppføring, gir samme klage som en tom plass. Feilen navngir symptomet og skjuler årsaken, derfor taster folk inn den samme hemmeligheten flere ganger.

Skriv hemmeligheten først som et generisk passordselement, og les deretter tilbake en vedvarende referanse til den. En vedvarende referanse overlever omstart, i motsetning til en peker i minnet, og det er representasjonen profilen serialiserer. Velg en tilgjengelighetsklasse som fortsatt tillater tilgang når enheten er låst opp, ellers vil en tunnel som må koble til på nytt på en låst skjerm mislykkes i autentiseringen med en fullstendig gyldig hemmelighet.

Utvidelsen har sin egen nøkkelringvisning

En nettverksutvidelse er en separat prosess, så appens standardtilgang til nøkkelringen når den ikke. Gi begge målene den samme nøkkelringtilgangsgruppen i rettighetene deres, lagre elementet én gang inne i den gruppen, og la hver prosess lese det. Uten gruppen finner utvidelsen ingenting og rapporterer en legitimasjonsfeil appen ikke kan gjenskape.

Hvis leverandøren konfigureres gjennom sitt leverandørkonfigurasjonsobjekt, må du ikke også bygge hemmeligheten inn i appen. To kopier driver fra hverandre, og driften fremstår som dårlige legitimasjoner snarere enn som duplisering. En widget eller en andre prosess som rapporterer en annen tilstand har samme forklaring: hver trenger gruppen, og hver må laste innstillingene før den leser.

Tilpass API-et til protokollen

Den innebygde administratoren bærer IPsec- og IKEv2-protokollobjekter. Den blir ikke en generisk SSL VPN-klient gjennom ekstra felt, og en upassende profil kan lagres pent og likevel aldri koble til. Avgjør hvilken kategori du er i før du undersøker statusen, for en statusfeil og en protokoll som ikke støttes ser identiske ut utenfra.

For neste omstart er sjekklisten kort: last innstillingene, les statusen, hold endringsabonnementene i forgrunnen, bygg referansene på nytt fra den delte gruppen, og bekreft at protokollobjektet samsvarer med API-et du implementerte. Å gå gjennom listen tar ett minutt; å gjette på den tar en hel ettermiddag.

Relaterte artikler