Sådan kører du OpenConnect i baggrunden efter interaktivt login
Afslut loginet i forgrunden, og overlad derefter tunnelen til klientens egen baggrundstilstand. De kontroller, der holder den findbar og stoppelig.
Du afslutter MFA-prompten, tunnelen kommer op, og lukning af terminalen tager forbindelsen med ned. Det er et overvågningsproblem, ikke et godkendelsesproblem, og OpenConnect leverer allerede kontakten, der løser det. Løsningen er at lade klienten forgrene sig til baggrunden, når opstarten er færdig, og den interaktive del reelt er forbi. Her følger en række kontroller: gå dem igennem i rækkefølge, og stop ved den første, der ikke holder for din gateway.
Bekræft, hvad gatewayen kræver ved login
Før du skriver en kommando, skal du notere den legitimationsvej, som udrulningen håndhæver. Kun certifikat, adgangskode plus token og en browserrunde gennem en SAML-udbyder opfører sig forskelligt, og baggrundstilstand kan ikke springe nogen af dem over. Indstillingen ændrer, hvad der sker efter opstart, aldrig hvad der sker under den.
Den fristende omvej er at automatisere prompten. En wrapper, der skriver et fast svar, når den genkender en adgangskodeprompt, brækker sammen i det øjeblik, gatewayen beder om en engangskode, og den efterlader en legitimationsoplysning i en fil, som andre konti kan læse. Hvis en person skal godkende sessionen, så hold personen i løkken.
Kør den første session i forgrunden, og læs outputtet
Forbind normalt én gang, og lad hele håndtrykket blive udskrevet. Notér protokollen, der bruges, certifikat- eller tokenstien, den tunneladresse serveren tildeler, og alle advarsler før forbindelsen accepteres. Den udskrift er din baseline, og det er den eneste billige måde senere at skelne et klientproblem fra en gatewayændring. Gem den uden for terminalens buffer.
Gentag derefter samme kald med baggrundstilstand og en PID-fil tilføjet, for eksempel openconnect --background --pid-file /run/openconnect.pid vpn.example.net, mens du beholder de protokol- og godkendelsesindstillinger, din gateway kræver, på samme linje. OpenConnect-manualen beskriver den indstilling som at fortsætte i baggrunden, når opstarten er fuldført, og det er netop derfor, den interaktive fase skal være afsluttet først.
Gør den kørende proces findbar og stoppelig
En PID-fil er kun bevis, så længe den matcher en levende proces. Læg den i en mappe, som tjenestekontoen ejer, og sammenlign det registrerede nummer med procestabellen, før du signalerer noget. Genstarter og nedbrud efterlader filen, og en forældet fil er den sædvanlige grund til, at et stopscript rapporterer succes, mens tunnelen stadig er oppe. Behandl kontrollen som en del af stop-proceduren, ikke som et valgfrit trin.
Signalér den verificerede PID, og bekræft derefter, at tunnelinterfacet faktisk er forsvundet i stedet for at stole på exitstatus. Hvis klienten har brug for forhøjede rettigheder til at konfigurere interfacet, skal signalet komme fra en konto, der må sende det.
Stabl ikke baggrundstilstand under en supervisor
systemd og lignende supervisore forventer at eje den proces, de startede, og derfor forvirrer en klient, der forgrener sig væk, dem. Supervisoren ser en starter afslutte, mens den rigtige forbindelse lever videre, så genstartslogik, statusrapportering og stoptimeouts beskriver noget, der ikke længere er sandt. Skriv enheden i den understøttede forgrundsopsætning, og lad supervisoren gøre daemonarbejdet.
Gem --background til sessioner, som en person starter og derefter går fra. Hvis kravet er en tunnel, der findes, før nogen logger ind, er den manglende brik en godkendt ikke-interaktiv identitet plus en plan for at forny den, og ingen kommandolinjeflag leverer nogen af delene. At tilføje flaget til et bootscript giver en tunnel, der fejler lydløst ved den første udløbne legitimationsoplysning.
Behandl sessionens cookie som en legitimationsoplysning
OpenConnect dokumenterer en separat godkendelsesfase via --authenticate, og det resulterende materiale kan gives tilbage med --cookie-on-stdin. Det par findes til integrationsarbejde, og det, det producerer, er lige så følsomt som den adgangskode, der skabte det.
Hold værdien ude af shell-historikken, ude af logfiler og ude af enhver ticket, du åbner. Et overdragelsesscript skal også bevare den verificerede endpoint-information, som klienten modtog sammen med cookien; taber du den, kan en senere kørsel forbinde til en vært, du aldrig godkendte, hvilket er værre end en forbindelse, der bare fejler.
Gå listen igennem, før du lukker terminalen
Fire ting skal være sande: det interaktive login blev afsluttet i forgrunden, PID-filen peger på en proces, du har verificeret, supervisorspørgsmålet er afgjort den ene eller anden vej, og cookien har en opbevaringsplan, der ikke er en almindelig tekstfil. Når alle fire holder, er det sikkert at gå fra terminalen, og tunnelen kører videre.
Hvis en af dem fejler, skal du rette det punkt, før du rører de andre, fordi de resterende kontroller ikke kan kompensere for det. Gem også forgrundsudskriften fra din første kørsel: næste gang tunnelen falder uden varsel, er den baseline det, der skiller en ændring på gateway-siden fra en på klient-siden.