Налады інструмента 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, таму падстаўце дакументаваную наладу праграмы, якую вы сапраўды запускаеце, і свой ухвалены хост. Не стаўце токен або пароль у той жа радок, бо ён трапіць у гісторыю абалонкі.
Калі некалькі каманд належаць адной задачы, кароткі правераны скрыпт-абгортка задае зменныя і затым запускае іх. Гэта захоўвае адзінае азначэнне, не робячы значэнне глабальным для кожнай будучай каманды ў тэрмінале.
Перазагрузіце, перазапусціце або пакіньце як ёсць
Для інструмента, які ўжо працуе, аддайце перавагу яго ўласнай перазагрузцы або профілю працоўнай прасторы, калі ён ёсць. Інакш захавайце працу і перазапусціце кампанент, які чытае наладу, — часта гэта моўны сервер, а не акно рэдактара. Перазапуск акна з меркаваннем, што даччыныя працэсы пайшлі за ім, — вось чаму перазагрузка выглядае так, быццам не працуе.
Адключэнне — асобнае рашэнне. Прыпынак, закрыццё або перападлучэнне належаць праграме, і зменная канчатковай кропкі не кіруе гэтым. Стаўцеся да зменнай як да канфігурацыі, што выбірае адрас, а не як да правіла пра тое, які сеткавы трафік можна выкарыстоўваць пасля, і гэтыя дзве справы застануцца аддзельнымі.