Setelan alat VPN: lingkungan saat peluncuran atau ekspor di hook?
Hook memulai anak prosesnya sendiri, bukan shell yang sudah Anda buka. Lingkungan saat peluncuran menjaga endpoint privat hanya pada satu perintah yang membutuhkannya.
Hook VPN yang mengekspor endpoint API mengubah lingkungan proses yang dijalankannya, bukan terminal yang sudah terbuka saat terowongan naik. Satu perbedaan itulah yang menjelaskan sebagian besar laporan „alat masih memanggil endpoint publik“. Ada dua tempat yang layak untuk setelan ini, dan pilihannya bergantung pada siapa yang memakainya dan seberapa sering ia berubah. Bandingkan keduanya sebelum menambahkan skrip startup lain.
Dua tempat setelan bisa hidup
Opsi pertama adalah prefiks pada perintah itu sendiri: nilainya ada untuk satu pemanggilan itu dan hilang bersamanya. Opsi kedua adalah ekspor di dalam hook koneksi, yang menjangkau setiap proses yang dijalankan hook setelah titik itu. Keduanya berbeda dalam jangkauan dan masa hidup, bukan sintaksis, dan perbedaan itulah yang menentukan sebagian besar kegagalan.
| 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 |
Tabel itu membuat hook tampak murah dan menyembunyikan tagihan sebenarnya: ia juga memilih endpoint privat untuk perintah yang tidak ada hubungannya dengan tugas. Bacalah setiap baris sebagai batasan, bukan preferensi. Jika endpoint berubah per tugas, prefiks menang dalam presisi meski harus membayar satu ketukan tombol.
Mengapa hook tidak dapat menjangkau shell yang sudah terbuka
Variabel lingkungan diberikan ke proses saat image proses dibuat. Shell yang mulai sebelum koneksi menyimpan salinan yang diterimanya, dan ekspor yang dijalankan di dalam hook bukan siaran ke setiap proses di mesin. Hanya anak proses hook sendiri yang mewarisinya. Anak proses shell mengambil apa yang dipegang shell pada saat mereka mulai, dan itulah sebabnya perintah yang sama bisa bekerja di satu terminal dan gagal di terminal lain.
Hal yang sama berlaku untuk editor grafis. Host ekstensinya, terminal terintegrasinya, dan server bahasa latarnya bercabang saat peluncuran dan menyimpan salinan sendiri. Membuka folder lagi tidak selalu memulai ulang anak proses itu, jadi setelan yang Anda tambahkan tetap tidak pernah sampai.
Uji termurah adalah mencetak variabel dari tempat yang gagal, bukan dari shell yang berhasil. Jika proses yang gagal mulai sebelum terowongan, ekspor itu tidak pernah punya kesempatan.
Bentuk per perintah, dituliskan
Prefiks menjaga pilihan tetap terlihat pada perintah yang memakainya, yang membantu saat endpoint berubah antar tugas:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Perintah ini hanya ilustrasi: my-work-tool adalah placeholder dan INTERNAL_API bukan standar VPN, jadi gantikan dengan setelan terdokumentasi dari program yang benar-benar Anda jalankan dan host Anda yang disetujui. Jangan menaruh token atau kata sandi pada baris yang sama, karena keduanya masuk ke riwayat shell.
Ketika beberapa perintah milik satu tugas, skrip pembungkus pendek yang ditinjau menetapkan variabel lalu menjalankannya. Ini menjaga satu definisi tanpa membuat nilai itu global bagi setiap perintah berikutnya di terminal.
Muat ulang, mulai ulang, atau biarkan
Untuk alat yang sudah berjalan, utamakan muat ulang atau profil ruang kerjanya sendiri bila ada. Jika tidak, simpan pekerjaan dan mulai ulang komponen yang membaca setelan, yang sering kali server bahasa, bukan jendela editor. Memulai ulang jendela sambil menganggap proses anak mengikutinya adalah alasan muat ulang tampak tidak berfungsi.
Pemutusan koneksi adalah keputusan terpisah. Menjeda, menutup, atau menyambung ulang adalah urusan aplikasi, dan variabel endpoint tidak mengendalikannya. Perlakukan variabel itu sebagai konfigurasi yang memilih alamat, bukan sebagai aturan tentang lalu lintas jaringan mana yang boleh dipakai setelahnya, dan kedua hal itu tetap terpisah.