Innstillingar for VPN-verktøy: miljø ved oppstart eller eksport i ein krok?
Ein krok startar sine eigne born, ikkje skalet du allereie har opna. Eit miljø ved oppstart held det private endepunktet berre på den eine kommandoen som treng det.
Ein VPN-krok som eksporterer eit API-endepunkt, endrar miljøet til prosessane han startar, ikkje til terminalen som allereie var open då tunnelen kom opp. Den eine skilnaden forklarar dei fleste rapportane om at «verktøyet kallar framleis det offentlege endepunktet». Det finst to brukbare stader å leggje innstillinga, og valet avheng av kven som brukar ho og kor ofte ho blir endra. Samanlikn dei før du legg til endå eit oppstartsskript.
To stader innstillinga kan bu
Alternativ éin er eit prefiks på sjølve kommandoen: verdien finst for nettopp den eine kallinga og forsvinn med henne. Alternativ to er ein eksport inne i tilkoplingkroken, som når kvar prosess kroken startar etter det punktet. Dei skil seg i rekkevidd og levetid, ikkje i syntaks, og den skilnaden avgjer dei fleste feila.
| Property | Prefix on the command | Export from the hook |
|---|---|---|
| Who receives it | That invocation only | Children the hook starts |
| Lifetime | Until the process exits | Until the hook's own session ends |
| Leakage | Scoped to one command | Applies to later commands in that session |
| Repeat cost | Every invocation | Once per connection |
| Works for an open editor | No, unless the editor is started with it | No |
Tabellen får kroken til å sjå billeg ut og gøymer den verkelege rekninga: han vel òg eit privat endepunkt for kommandoar som ikkje har noko med oppgåva å gjere. Les kvar rad som ei avgrensing, ikkje som ei preferanse. Om endepunktet blir endra per oppgåve, vinn prefikset på presisjon sjølv om det kostar eitt tastetrykk.
Kvifor kroken ikkje kan nå eit skall som allereie er ope
Miljøvariablar blir overleverte til ein prosess når prosessbiletet blir laga. Eit skall som starta før tilkoplinga, held på kopien det fekk, og ein eksport som blir køyrd inne i kroken, er ikkje ei utsending til kvar prosess på maskina. Berre kroken sine eigne born arvar han. Eit skall sine eigne born tek det skalet har i det augneblinken dei startar, og difor kan same kommandoen verke i éin terminal og feile i ein annan.
Det same gjeld ein grafisk editor. Utvidingsverten, den integrerte terminalen og språkserveren i bakgrunnen blei forgreina ved oppstart og held eigne kopiar. Å opne ei mappe på nytt startar ikkje nødvendigvis desse borna på nytt, så innstillinga du la til, kjem framleis aldri fram.
Den billegaste testen er å skrive ut variabelen frå staden som feilar, ikkje frå skalet som verkar. Om prosessen som feilar, starta før tunnelen, hadde eksporten aldri ein sjanse.
Forma per kommando, skriven ut
Eit prefiks held valet synleg i kommandoen som brukar det, noko som hjelper når endepunktet blir endra mellom oppgåver:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Kommandoen er berre eit døme: my-work-tool er ein plasshaldar, og INTERNAL_API er ikkje ein VPN-standard, så byt inn den dokumenterte innstillinga til programmet du faktisk køyrer, og din eigen godkjende vert. Ikkje set eit token eller passord på same linje, for det hamnar i skalhistoria.
Når fleire kommandoar høyrer til éi oppgåve, set eit kort gjennomgått innpakkingsskript variablane og startar dei deretter. Det held éin definisjon utan å gjere verdien global for kvar framtidig kommando i terminalen.
Last inn på nytt, start på nytt eller lat det vere
For eit verktøy som allereie køyrer, føretrekk den eigne omlastinga eller arbeidsområdeprofilen når det har ein. Elles lagrar du arbeidet og startar komponenten som les innstillinga på nytt, og det er ofte ein språkserver og ikkje editervindauget. Å starte vindauget på nytt og gå ut frå at borneprosessane følgde med, er nettopp grunnen til at ei omlasting ser ut til å ikkje verke.
Fråkopling er eit eige vedtak. Pause, lukking eller attilkopling høyrer til programmet, og endepunktvariabelen styrer ikkje det. Handsame variabelen som konfigurasjon som vel ei adresse, ikkje som ei regel om kva nettverkstrafikk som kan brukast etterpå, og dei to sakene held seg åtskilde.