Kill switch per aplikasi versus penguncian seluruh perangkat: apa yang berubah
Putuskan berdasarkan himpunan yang dilindungi, bukan labelnya: apa yang berhenti untuk aplikasi yang dikecualikan, pembantu latar belakang, dan koneksi baru, dan cara menguji setiap kasus.
Kill switch per aplikasi terdengar seperti pilihan yang hati-hati: hanya klien kerja yang kehilangan jaringannya saat terowongan putus, dan semua yang lain tetap berjalan. Lalu seseorang menyadari bahwa peramban pribadi tetap memuat halaman, pembantu sinkronisasi yang disertakan dalam paket yang sama terus mencoba, dan nama yang tersimpan di cache masih diresolusikan ke alamat yang tidak pernah menyentuh terowongan. Label pada fitur dan himpunan koneksi yang benar-benar dilindunginya adalah dua hal berbeda. Tentukan dulu himpunan yang dilindungi, karena himpunan itulah yang memutuskan apakah penegakan per aplikasi atau penguncian seluruh perangkat adalah deskripsi yang jujur.
Mulai dari himpunan, bukan label
Kebijakan per aplikasi melindungi aplikasi terpilih. Penguncian perangkat menyasar batas jaringan yang lebih luas, biasanya dengan pengecualian terdokumentasi untuk pencetakan lokal, lalu lintas manajemen, atau portal captive. Tidak ada label yang lengkap sampai Anda dapat menjawab tiga pertanyaan: apa yang terjadi pada aplikasi yang dikecualikan, apa yang terjadi pada pembantu yang dijalankan aplikasi itu, dan apa yang terjadi pada koneksi yang dibuka saat perlindungan tidak tersedia.
Tuliskan jawaban itu sebelum Anda menyentuh pengaturan klien. Jika persyaratannya adalah "klien penggajian ini tidak boleh pernah berbicara dengan internet di luar terowongan, dan peramban saya boleh", himpunannya kecil dan penegakan per aplikasi cocok. Jika persyaratannya adalah "tidak ada apa pun di perangkat ini yang mencapai internet tanpa perlindungan, kecuali layanan pembaruan", tidak ada kebijakan per aplikasi yang akan menghasilkannya, karena aplikasi yang tidak Anda sebutkan adalah masalahnya.
Penegakan per aplikasi mencocokkan pengenal, bukan nama program
Android menyediakan VPN per aplikasi melalui paket, dan dokumentasi VpnService-nya menjelaskan bagaimana hal itu berinteraksi dengan operasi selalu aktif dan pemblokiran. iOS mengonfigurasi VPN per aplikasi melalui profil manajemen dan mencocokkan berdasarkan aplikasi atau berdasarkan domain. Windows dan Linux tidak memiliki rute per proses sama sekali, sehingga gagasan yang sama didekati dengan aturan firewall yang dibatasi pada program atau aturan yang cocok dengan pengguna pemilik.
Batasnya adalah pengenal, dan pengenal mudah diakali. Aplikasi yang menyerahkan URL ke peramban sistem, atau membuka dokumen di penampil, berpindah ke proses yang tidak pernah disebut kebijakan Anda. Opsi hentikan-saat-putus juga bukan penyaring paket: ia mematikan aplikasi yang Anda konfigurasi, sementara proses anak, pekerja antrean, atau tab peramban dapat menjaga soket yang sudah ada tetap hidup.
Penguncian mencakup apa yang tidak dapat dilihat kebijakan per aplikasi
Penguncian seluruh perangkat menghapus pilihan. Setiap paket keluar yang bukan milik terowongan dibuang, termasuk lalu lintas dari proses yang tidak pernah diketahui kebijakan aplikasi Anda. Di Android itu adalah VPN selalu aktif yang digabungkan dengan pengaturan blokir koneksi, dan penegakannya terjadi di sistem, bukan di jendela klien. Di desktop itu adalah aturan firewall permanen atau rute default yang menunjuk ke gerbang yang tak terjangkau.
Biayanya adalah semua yang lain berhenti, jadi pengecualian menjadi bagian dari desain, bukan pikiran belakangan. Pencetak lokal, penemuan layanan, login portal captive, agen manajemen, dan pembaruan OS masing-masing memerlukan lubang terdokumentasi, karena masing-masing adalah jalur yang tetap terbuka saat terowongan mati. Penguncian hanya sekuat entri terpendek dalam daftar itu.
DNS, IPv6, dan pembantu latar belakang menyembunyikan kebocoran
Kegagalan aplikasi yang dilindungi untuk meresolusikan nama tidak membuktikan bahwa jawaban cache atau lalu lintas IP langsung diblokir. Jika resolver masih dapat dijangkau di luar terowongan, nama teresolusikan dan koneksi gagal, yang terlihat seperti kill switch yang berfungsi dan bukan. Lebih buruk lagi, catatan cache dapat menunjuk ke alamat yang tidak dibawa terowongan, sehingga koneksi keluar langsung sementara aplikasi melaporkan kesalahan VPN.
IPv6 memerlukan aturannya sendiri di setiap platform yang menjalankannya, karena aturan penurunan v4 tidak mencakup rute v6. Di seluler, pengaturan DNS privat dapat memindahkan resolusi ke saluran terenkripsi yang tidak diperiksa kebijakan perangkat. Dan pembantu latar belakang adalah tersangka biasa di desktop: proses pembaru atau sinkronisasi di baki mulai sebelum klien VPN dan mempertahankan koneksinya sendiri, sehingga tidak pernah melihat rute yang berubah.
Uji tiga aplikasi dan dua transisi
| Test | What it proves |
|---|---|
| Included app, by name and by direct IP | the policy is applied, not just the resolver |
| Excluded app, same checks | the exclusion is intentional and documented |
| Helper or updater process | nothing inherited an older route |
| Tunnel drop, then Wi-Fi to cellular | the block survives the transition |
Jalankan setiap baris dua kali, sekali dengan nama host dan sekali dengan alamat literal, dan sekali lagi melalui IPv6 jika jaringan menawarkannya. Lulus berarti aplikasi yang disertakan berhenti, aplikasi yang dikecualikan berperilaku seperti yang Anda tulis, dan pembantunya tidak menyelinap keluar. Catat perilaku langsung yang Anda putuskan dapat diterima, agar administrator berikutnya dapat membedakan pengecualian yang disengaja dari kegagalan.
Lalu jelaskan hasilnya dalam satu kalimat yang menyebutkan aplikasi dan syaratnya, misalnya: klien penggajian tidak memiliki rute di luar terowongan, peramban langsung menurut desain, dan semua yang lain berhenti saat terowongan mati. Jika kalimat itu sulit ditulis, kebijakannya masih dua kebijakan yang saling bertarung.