VPN-toolinstellingen: omgeving bij het starten of export in de hook?
Een hook start zijn eigen kinderen, niet de shell die je al hebt geopend. Een omgeving bij het starten houdt het privé-eindpunt alleen op de ene opdracht die het nodig heeft.
Een VPN-hook die een API-eindpunt exporteert, verandert de omgeving van de processen die hij start, niet die van de terminal die al open was toen de tunnel omhoogkwam. Dat ene onderscheid verklaart de meeste meldingen „de tool roept nog steeds het openbare eindpunt aan“. Er zijn twee werkbare plekken voor de instelling, en de keuze hangt ervan af wie hem gebruikt en hoe vaak hij verandert. Vergelijk ze voordat je nog een startscript toevoegt.
Twee plekken waar de instelling kan leven
Optie één is een prefix op de opdracht zelf: de waarde bestaat voor die ene aanroep en verdwijnt ermee. Optie twee is een export binnen de verbindingshook, die elk proces bereikt dat de hook daarna start. Ze verschillen in bereik en levensduur, niet in syntaxis, en dat verschil beslist de meeste storingen.
| 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 |
De tabel laat de hook goedkoop lijken en verbergt de echte rekening: hij kiest ook een privé-eindpunt voor opdrachten die niets met de taak te maken hebben. Lees elke rij als een beperking, niet als een voorkeur. Verandert het eindpunt per taak, dan wint het prefix op precisie, ook al kost het één toetsaanslag.
Waarom de hook een al geopende shell niet kan bereiken
Omgevingsvariabelen worden aan een proces overgedragen wanneer het procesimage wordt gemaakt. Een shell die vóór de verbinding startte, houdt de kopie die hij kreeg, en een export die in de hook wordt uitgevoerd, is geen uitzending naar elk proces op de machine. Alleen de eigen kinderen van de hook erven hem. De eigen kinderen van een shell nemen wat de shell op het moment van hun start bevat, en daarom kan dezelfde opdracht in de ene terminal werken en in de andere mislukken.
Hetzelfde geldt voor een grafische editor. Zijn extensiehost, ingebouwde terminal en achtergrondtaalserver zijn bij het starten afgesplitst en houden eigen kopieën. Een map opnieuw openen herstart die kinderen niet per se, dus de instelling die je toevoegde, komt nog steeds nooit aan.
De goedkoopste test is de variabele afdrukken vanaf de plek die mislukt, niet vanuit de shell die werkt. Als het mislukkende proces vóór de tunnel startte, had de export nooit een kans.
De vorm per opdracht, uitgeschreven
Een prefix houdt de keuze zichtbaar in de opdracht die hem gebruikt, wat helpt wanneer het eindpunt tussen taken verandert:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
De opdracht is alleen een voorbeeld: my-work-tool is een plaatsaanduiding en INTERNAL_API is geen VPN-standaard, vervang hem dus door de gedocumenteerde instelling van het programma dat je echt uitvoert en door je eigen goedgekeurde host. Zet geen token of wachtwoord op dezelfde regel, want die belanden in de shellgeschiedenis.
Wanneer meerdere opdrachten bij één taak horen, zet een kort nagekeken wrapper-script de variabelen en start ze daarna. Zo blijft één definitie bestaan zonder de waarde globaal te maken voor elke toekomstige opdracht in de terminal.
Herladen, herstarten of met rust laten
Voor een tool die al draait, geef je de voorkeur aan zijn eigen herlaadactie of werkruimteprofiel als het die heeft. Anders sla je het werk op en herstart je het onderdeel dat de instelling leest, wat vaak een taalserver is en niet het editorvenster. Het venster herstarten en aannemen dat de kinderprocessen volgden, is precies de reden dat een herlading lijkt te falen.
De verbinding verbreken is een aparte beslissing. Pauzeren, sluiten of opnieuw verbinden hoort bij de toepassing, en de eindpuntvariabele bestuurt dat niet. Behandel de variabele als configuratie die een adres kiest, niet als een regel over welk netwerkverkeer daarna gebruikt mag worden, en de twee kwesties blijven scheidbaar.