VPN įrankio nustatymai: aplinka paleidimo metu ar eksportas kabliuke?
Kabliukas paleidžia savo pačio vaikus, o ne tą apvalkalą, kurį jau atidarėte. Aplinka paleidimo metu privačią galinę vietą laiko tik toje vienoje komandoje, kuriai jos reikia.
VPN kabliukas, kuris eksportuoja API galinę vietą, keičia jo paleidžiamų procesų aplinką, o ne to terminalo, kuris jau buvo atidarytas, kai tunelis pakilo. Šis vienas skirtumas paaiškina daugumą pranešimų „įrankis vis dar kviečia viešą galinę vietą“. Yra dvi darbingos nustatymo vietos, ir pasirinkimas priklauso nuo to, kas jį naudoja ir kaip dažnai jis keičiasi. Palyginkite juos prieš pridėdami dar vieną paleidimo scenarijų.
Dvi vietos, kuriose nustatymas gali gyventi
Pirmasis variantas yra priešdėlis pačioje komandoje: reikšmė egzistuoja tik tam vienam kvietimui ir išnyksta kartu su juo. Antrasis variantas yra eksportas ryšio kabliuke, kuris pasiekia kiekvieną procesą, kurį kabliukas paleidžia po to momento. Jie skiriasi aprėptimi ir gyvavimo trukme, o ne sintakse, ir šis skirtumas nulemia daugumą gedimų.
| 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 |
Lentelė daro kabliuką pigų ir slepia tikrą sąskaitą: ji taip pat parenka privačią galinę vietą komandoms, neturinčioms nieko bendra su užduotimi. Kiekvieną eilutę skaitykite kaip apribojimą, o ne kaip pageidavimą. Jei galinė vieta keičiasi kiekvienai užduočiai, priešdėlis laimi tikslumu, net jei tai kainuoja vieną klavišo paspaudimą.
Kodėl kabliukas negali pasiekti jau atidaryto apvalkalo
Aplinkos kintamieji perduodami procesui, kai sukuriamas proceso atvaizdas. Apvalkalas, pradėtas prieš prisijungimą, išlaiko gautą kopiją, o kabliuke įvykdytas eksportas nėra transliacija kiekvienam kompiuterio procesui. Jį paveldi tik paties kabliuko vaikai. Apvalkalo vaikai paima tai, ką apvalkalas turi jų paleidimo momentu, ir todėl ta pati komanda gali veikti viename terminale ir neveikti kitame.
Tas pats galioja grafiniam redaktoriui. Jo plėtinių šeimininkas, integruotas terminalas ir foninė kalbos serveris buvo atskirti paleidimo metu ir turi savo kopijas. Aplanko atidarymas iš naujo nebūtinai paleidžia tuos vaikus iš naujo, todėl pridėtas nustatymas vis tiek niekada neatvyksta.
Pigiausias testas yra atspausdinti kintamąjį iš tos vietos, kuri nepavyksta, o ne iš apvalkalo, kuris veikia. Jei nepavykstantis procesas prasidėjo prieš tunelį, eksportas neturėjo jokio šanso.
Kiekvienos komandos forma, išrašyta
Priešdėlis palieka pasirinkimą matomą toje komandoje, kuri jį naudoja, ir tai padeda, kai galinė vieta keičiasi tarp užduočių:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Komanda yra tik pavyzdys: my-work-tool yra vietos žymeklis, o INTERNAL_API nėra VPN standartas, todėl įrašykite dokumentuotą programos, kurią iš tikrųjų vykdote, nustatymą ir savo patvirtintą mazgą. Nedėkite žetono ar slaptažodžio toje pačioje eilutėje, nes jie patenka į apvalkalo istoriją.
Kai kelioms komandoms tenka viena užduotis, trumpas peržiūrėtas apvado scenarijus nustato kintamuosius ir tada juos paleidžia. Taip išlieka vienintelis apibrėžimas, o reikšmė netampa globali kiekvienai būsimai terminalo komandai.
Įkelkite iš naujo, paleiskite iš naujo arba palikite
Jau veikiančiam įrankiui pirmenybę teikite jo pačio įkėlimui iš naujo arba darbo srities profiliui, jei jis yra. Priešingu atveju išsaugokite darbą ir paleiskite iš naujo komponentą, kuris skaito nustatymą, o tai dažnai yra kalbos serveris, o ne redaktoriaus langas. Langą paleisti iš naujo ir manyti, kad vaikų procesai pasekė, yra būtent tai, dėl ko įkėlimas iš naujo atrodo neveikiantis.
Atsijungimas yra atskiras sprendimas. Pristabdymas, uždarymas ar prisijungimas iš naujo priklauso programai, ir galinės vietos kintamasis to nekontroliuoja. Traktuokite kintamąjį kaip konfigūraciją, kuri parenka adresą, o ne kaip taisyklę apie tai, koks tinklo srautas gali būti naudojamas vėliau, ir abu klausimai lieka atskiriami.