Подешавања VPN алата: окружење при покретању или извоз у куки?
Кука покреће своју сопствену децу, а не љуску коју сте већ отворили. Окружење при покретању држи приватну крајњу тачку само у оној једној наредби којој је потребна.
VPN кука која извози крајњу тачку API-ја мења окружење процеса које покреће, а не терминала који је већ био отворен када се тунел подигао. Управо та једна разлика објашњава већину извештаја „алат и даље позива јавну крајњу тачку“. Постоје два употребљива места за подешавање, а избор зависи од тога ко га троши и колико се често мења. Упоредите их пре него што додате још једну скрипту за покретање.
Два места на којима подешавање може да живи
Прва опција је префикс на самој наредби: вредност постоји само за тај један позив и нестаје с њим. Друга је извоз унутар куке за повезивање, који стиже до сваког процеса који кука покрене после те тачке. Разликују се по домету и трајању, не по синтакси, и та разлика одлучује већину отказивања.
| 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 |
Табела чини куку јефтином и скрива прави рачун: она бира приватну крајњу тачку и за наредбе које немају никакве везе са задатком. Читајте сваки ред као ограничење, а не као склоност. Ако се крајња тачка мења по задатку, префикс побеђује у прецизности иако кошта једно притискање тастера.
Зашто кука не може да стигне до већ отворене љуске
Променљиве окружења предају се процесу када се ствара слика процеса. Љуска која је почела пре везе задржава копију коју је добила, а извоз извршен унутар куке није емитовање ка сваком процесу на машини. Наслеђују га само сопствена деца куке. Сопствена деца љуске узимају оно што љуска држи у тренутку њиховог покретања, и зато иста наредба може да ради у једном терминалу, а да не успе у другом.
Исто важи и за графички уређивач. Његов домаћин за проширења, уграђени терминал и позадински језички сервер раздвојили су се при покретању и држе сопствене копије. Поновно отварање фасцикле не рестартује нужно ту децу, тако да додато подешавање и даље никада не стиже.
Најјефтинији тест је да испишете променљиву са места које отказује, а не из љуске која ради. Ако је процес који отказује почео пре тунела, извоз никада није имао шансу.
Облик по наредби, исписан
Префикс држи избор видљивим у наредби која га користи, што помаже када се крајња тачка мења између задатака:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Наредба је само илустративна: my-work-tool је замена, а INTERNAL_API није VPN стандард, зато упишите документовано подешавање програма који заиста извршавате и свој одобрени домаћин. Не стављајте токен или лозинку у исти ред, јер завршавају у историји љуске.
Када више наредби припада једном задатку, кратка прегледана скрипта-омотач поставља променљиве и затим их покреће. Тако остаје једна дефиниција, а вредност не постаје глобална за сваку будућу наредбу у терминалу.
Поново учитајте, рестартујте или оставите
За алат који већ ради, дајте предност његовом сопственом поновном учитавању или профилу радног простора када га има. У супротном сачувајте посао и рестартујте компоненту која чита подешавање, а то је често језички сервер, не прозор уређивача. Рестартовање прозора уз претпоставку да су деца процеса пошла за њим је управо разлог зашто поновно учитавање изгледа као да не ради.
Прекид је одвојена одлука. Паузирање, затварање или поновно повезивање припада апликацији, а променљива крајње тачке то не контролише. Третирајте променљиву као конфигурацију која бира адресу, а не као правило о томе који мрежни саобраћај сме да се користи после, и две ствари остају раздвојиве.