Indstillinger for VPN-værktøj: miljø ved start eller eksport i et hook?
Et hook starter sine egne børn, ikke den skal, du allerede har åbnet. Et miljø ved start holder det private endepunkt på den ene kommando, der har brug for det.
Et VPN-hook, der eksporterer et API-endepunkt, ændrer miljøet for de processer, det starter, ikke for den terminal, der allerede var åben, da tunnelen kom op. Den ene forskel forklarer de fleste rapporter om, at „værktøjet stadig kalder det offentlige endepunkt“. Der er to brugbare steder at lægge indstillingen, og valget afhænger af, hvem der bruger den, og hvor ofte den ændrer sig. Sammenlign dem, før du tilføjer endnu et opstartsscript.
To steder indstillingen kan bo
Mulighed et er et præfiks på selve kommandoen: værdien findes for netop det ene kald og forsvinder med det. Mulighed to er en eksport inde i forbindelsens hook, som når hver proces, som hooket starter derefter. De adskiller sig i rækkevidde og levetid, ikke i syntaks, og den forskel afgør de fleste fejl.
| 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 hooket til at se billigt ud og skjuler den egentlige regning: det vælger også et privat endepunkt til kommandoer, der intet har med opgaven at gøre. Læs hver række som en begrænsning, ikke som en præference. Hvis endepunktet skifter pr. opgave, vinder præfikset på præcision, selv om det koster ét tastetryk.
Hvorfor hooket ikke kan nå en skal, der allerede er åben
Miljøvariabler gives til en proces, når procesbilledet oprettes. En skal, der startede før forbindelsen, beholder den kopi, den fik, og en eksport, der køres inde i hooket, er ikke en udsendelse til hver proces på maskinen. Kun hookets egne børn arver den. En skals egne børn tager det, som skallen holder i det øjeblik, de starter, og derfor kan den samme kommando virke i én terminal og fejle i en anden.
Det samme gælder en grafisk editor. Dens udvidelsesvært, integrerede terminal og baggrundssprogserver blev forgrenet ved start og holder deres egne kopier. Genåbning af en mappe genstarter ikke nødvendigvis de børn, så den indstilling, du tilføjede, når stadig aldrig frem.
Den billigste test er at udskrive variablen fra det sted, der fejler, ikke fra den skal, der virker. Hvis processen, der fejler, startede før tunnelen, havde eksporten aldrig en chance.
Formen pr. kommando, skrevet ud
Et præfiks holder valget synligt i den kommando, der bruger det, hvilket hjælper, når endepunktet skifter mellem opgaver:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Kommandoen er kun et eksempel: my-work-tool er en pladsholder, og INTERNAL_API er ikke en VPN-standard, så indsæt den dokumenterede indstilling for det program, du faktisk kører, og din egen godkendte vært. Sæt ikke et token eller en adgangskode på samme linje, for de ender i skallens historik.
Når flere kommandoer hører til én opgave, sætter et kort, gennemgået indpakningsscript variablerne og starter dem derefter. Det holder én definition uden at gøre værdien global for hver fremtidig kommando i terminalen.
Genindlæs, genstart, eller lad det være
Til et værktøj, der allerede kører, foretrækker du dets egen genindlæsning eller arbejdsrumsprofil, når det har en. Ellers gem arbejdet, og genstart den komponent, der læser indstillingen, hvilket ofte er en sprogserver og ikke editorvinduet. At genstarte vinduet og antage, at barneprocesserne fulgte med, er netop, hvorfor en genindlæsning ser ud til ikke at virke.
Afbrydelsen er en separat beslutning. Pause, lukning eller genopkobling hører til applikationen, og endepunktvariablen styrer det ikke. Behandl variablen som konfiguration, der vælger en adresse, ikke som en regel om, hvilken netværkstrafik der må bruges bagefter, og de to anliggender forbliver adskilte.