Kill switch dan aturan tanpa tumpang tindih menunjuk ke arah yang berlawanan, yang menjelaskan mengapa pengaturan VPN biasa tidak pernah menyatakan yang kedua. Kill switch bereaksi terhadap terowongan yang turun, sedangkan persyaratan ini bereaksi terhadap terowongan yang naik dan menjaga aplikasi keluar dari gambar. Satu keputusan desain menyelesaikan sebagian besarnya: apakah aplikasi dihentikan, dicegah dimulai, atau sekadar dicabut akses jaringannya. Pilih lapisan itu sebelum meraih aturan firewall atau lingkaran pembunuh proses, karena aturan yang ditegakkan lewat pengamatan membocorkan jendela pada setiap peluncuran.

Mitos: kill switch mencegah program dimulai

Kill switch adalah kendali lalu lintas, dan mereka jujur soal itu: mereka mengizinkan atau menolak paket menurut status terowongan. Tidak ada yang menolak memulai program, dan tidak ada yang memeriksa executable mana yang membuka soket. Pintasan desktop, tugas terjadwal, dan pembantu latar belakang semuanya mencapai jaringan tanpa melewati sesuatu yang mengetahui nama aplikasi. Jarak antara kedua mekanisme itulah tempat sebagian besar kebingungan hidup.

Pengaturan yang benar-benar memutuskan apakah program boleh mulai adalah kendali aplikasi. Di Windows itu berarti AppLocker atau WDAC, dan di macOS terkelola itu berarti daftar izin yang ditegakkan oleh profil perangkat. Keduanya independen dari terowongan, itulah sebabnya kedua persyaratan digabung dalam satu tiket lalu tidak dipenuhi oleh keduanya.

Beri nama mode sebelum memberi nama alat

Tulis aturan sebagai mesin status dengan tiga status: penggunaan biasa, sesi kerja VPN, dan keluar. Tumpang tindih terlarang milik status tengah, bukan perangkat lunak klien.

Siapa pun yang mengubah status memiliki tiga tindakan berurutan: menyelesaikan pekerjaan aplikasi, meminta penutupan normalnya, dan memastikan instansnya sudah hilang sebelum terowongan naik. Urutan juga penting di ujung lain, karena VPN yang terhubung dulu dan menghentikan program kemudian sudah membiarkan tumpang tindih. Jika persyaratan mencakup pembentukan koneksi, menunggu indikator terhubung sudah terlambat.

Apa yang sebenarnya dilakukan konflik dua arah

Untuk dua layanan yang benar-benar dikelola systemd, Conflicts= bersifat simetris: memulai satu menghentikan yang lain. Referensi unit mendokumentasikan perilaku itu dan secara terpisah menuntut urutan eksplisit ketika satu harus selesai berhenti sebelum yang lain mulai. Tanpa entri urutan itu, penghentian dan permulaan berlomba, dan hasilnya bergantung pada waktu.

Itu bukan daftar larangan. Pasang dependensi terbalik dan memulai aplikasi malah menghentikan VPN, yang merupakan kegagalan yang patut dicurigai ketika terowongan memutus sendiri pada momen yang dapat diprediksi. Aplikasi desktop bukan unit systemd, dan koneksi NetworkManager juga bukan unit, jadi pola ini hanya bekerja untuk layanan yang Anda bungkus sendiri.

Uji transisinya, bukan hanya peluncuran pertama

Empat transisi menentukan apakah persyaratan bertahan: masuk sesi dengan aplikasi berjalan, meluncurkannya lagi di tengah sesi, permulaan VPN yang gagal, dan pemutusan yang disengaja. Uji masing-masing dan simpan hasilnya di samping file unit. Perintah di bawah membaca hubungan saat ini lalu melatih transisi yang paling penting.

systemctl show work-vpn.service -p Conflicts -p After
systemctl start work-vpn.service
systemctl is-active office-sync.service
nmcli connection show --active

Perintah ketiga harus meninggalkan aplikasi tidak aktif, dan perintah keempat harus mencantumkan hanya koneksi terowongan saat sesi berjalan. Hasil berbeda berarti transisi tidak ditegakkan sama sekali.

Peluncuran ulang selama sesi adalah kasus yang membongkar desain berbasis pembungkus, karena pintasan yang dimulai dari desktop tidak pernah berkonsultasi dengan skrip peluncur. Jika pengelakan itu penting, penegakan berada di kendali aplikasi dan bukan di klien VPN. Dokumentasikan juga akhir sesi, dan utamakan kelanjutan yang disengaja daripada membuka kembali setiap proses yang dihentikan saat masuk. Catat hasil setiap transisi dalam catatan yang sama yang menyimpan file unit.

Artikel terkait