Dua aplikasi VPN sekaligus: kill switch mana yang sebenarnya berlaku?
Klien VPN kedua tidak pernah mewarisi kill switch klien pertama. Tiga kondisi menentukan kebijakan mana yang berlaku, dan cara memverifikasi milik Anda.
Dua klien VPN dapat berjalan berdampingan, tetapi kill switch keduanya tidak menyatu menjadi satu kebijakan. Setiap klien memasang aturan untuk terowongannya sendiri, dan tak satu pun tahu bahwa yang lain ada. Saya mengalaminya dengan klien kantor yang terhubung lebih dulu: aplikasi kedua tidak bisa menyelesaikan handshake, tertahan di „Connecting“ selama sepuluh menit, dan terowongan pertama diam-diam membawa semuanya. Apakah aplikasi kedua terlindungi bergantung pada tiga kondisi, bukan pada apakah kedua ikon menampilkan Terhubung.
Apa yang sebenarnya menjadi cakupan kill switch
Tidak ada satu pun flag kill switch di sistem operasi. Klien yang mengiklankan kill switch memasang sekumpulan aturan: buang semua yang tidak keluar melalui terowongan saya, dan sering fail closed saat terowongan hilang. Di Linux biasanya rantai nftables atau iptables, di Windows sekumpulan filter Windows Filtering Platform, di Android dan iOS perutean layanan terowongan itu sendiri ditambah pengaturan sistem yang memblokir koneksi tanpa VPN. Panduan VPN Android menjelaskan model layanan itu jika Anda ingin sudut pandang platform.
Cakupan adalah bagian yang penting. Aturan seperti „izinkan hanya paket pada antarmuka keluaran wg0“ tidak peduli apakah ada terowongan kedua. Jika klien lain menaikkan wg1, aturan klien pertama memperlakukan paket itu sebagai lalu lintas biasa: biasanya dibuang, kadang diizinkan. Bagaimanapun juga, klien pertama yang menentukan, dan ia sama sekali tidak tahu ada aplikasi kedua yang menunggu.
Tiga kondisi yang menentukan siapa yang tercakup
Anda tidak perlu menyebutkan setiap kombinasi. Tiga pertanyaan menyelesaikannya dalam beberapa menit.
- Apakah platform sama sekali mengizinkan terowongan kedua? Sebagian besar ponsel Android dan iPhone hanya menerima satu layanan VPN aktif per profil pengguna, sehingga aplikasi kedua tidak pernah punya terowongan dan tidak pernah menegakkan apa pun. Anda mendapat satu kebijakan, dari aplikasi yang memenangkan tempat itu.
- Proses mana yang memiliki rute default? Windows, macOS, dan Linux dengan senang hati membawa dua terowongan. Rute default menjadi milik klien yang mengaturnya terakhir atau dengan metrik lebih baik, dan klien lainnya terhubung tetapi menganggur. Di Linux, mode rute default wg-quick memakai perutean berbasis kebijakan dengan tabel privat dan aturan fwmark, sehingga terowongan wg-quick kedua menambahkan aturan pesaing alih-alih menggantikan yang pertama.
- Dapatkah klien kedua mencapai servernya sendiri? Jika kill switch pertama bersifat tolak-default, titik akhir luar aplikasi kedua hanyalah tujuan lain yang dibuang. Ia mencoba ulang dalam diam dan tidak pernah melaporkan kesalahan.
Versi singkat, untuk utas dukungan:
| Setup | What you actually get |
|---|---|
| Second client cannot hold a tunnel | One active policy; the other app only reports that it is waiting |
| Both tunnels up, second took the default route | The first kill switch blocks traffic it never meant to touch; the connection dies, or leaks if its rules are broad |
| First kill switch allows only its own endpoint and interface | Second client never connects; first tunnel unaffected |
| Both up, DNS written by whichever client ran last | Name resolution breaks for one side when either tunnel drops |
Dua dari baris itu terlihat identik dari ikon di baki sistem, dan itulah sebabnya ikon menjadi bukti terburuk yang tersedia di sini.
Apa yang gagal lebih dulu, dan seperti apa bentuknya
Klien yang tersangkut di „Connecting“ sementara yang lain sehat hampir selalu berarti kelaparan titik akhir: kill switch yang berjalan membuang handshake klien kedua ke servernya sendiri. Pastikan dengan murah dengan menjeda aturan blokir klien pertama selama satu percobaan. Jika klien kedua langsung terhubung, pertanyaannya terjawab.
DNS adalah kegagalan kedua. Klien mengatur konfigurasi resolver untuk antarmukanya sendiri, dan sebagian menimpa daftar global begitu saja. Dengan kedua terowongan aktif, kueri bisa keluar lewat satu sisi sementara resolver milik sisi lain. Putuskan salah satu aplikasi dan yang bertahan menyimpan server nama yang tak terjangkau: halaman macet selama satu menit lalu terurai lagi, sementara VPN tetap menampilkan terhubung.
Yang ketiga adalah flapping rute. Koneksi ulang menyusun ulang rute default, dan kill switch yang terikat antarmuka tidak mengikutinya. Lalu lintas yang tadi berada di dalam terowongan kini cocok dengan aturan buang, yang di sisi pengguna terbaca sebagai VPN yang tiba-tiba berhenti bekerja.
Verifikasi kebijakan mana yang benar-benar berlaku
Lakukan ini dengan lalu lintas tak berbahaya, bukan dengan sesuatu yang akan Anda sesali.
Di Linux, tanyakan ke kernel siapa yang menang dan ke apa firewall mengikat. ip -4 route show default menyebut terowongan yang memiliki keluaran. ip rule show menunjukkan apakah perutean berbasis kebijakan sedang dipakai. sudo nft list ruleset | grep -n oifname menunjukkan apakah pembuangan terikat pada nama antarmuka, tanda, atau seluruh rantai keluaran.
Di Windows kisah yang sama hidup di metrik rute dan daftar filter: Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Sort-Object RouteMetric dan Get-NetFirewallRule -Enabled True | Where-Object DisplayName -match "VPN". Di macOS, netstat -rn -f inet | head -5 dan scutil --dns | head -20.
Lalu lakukan langkah yang orang lewati: hentikan terowongan dengan sengaja dan pastikan lalu lintas yang Anda harapkan gagal benar-benar gagal. Ikon terhubung adalah status antarmuka, bukan penegakan.
Kapan dua klien adalah desain yang salah
Jika satu-satunya persyaratan di balik aplikasi kedua adalah perlindungan lebih, hapus saja. Dua kebijakan blokir yang saling berinteraksi kurang dapat diprediksi daripada satu, dan setiap koneksi ulang adalah kesempatan mendarat di keadaan yang tidak diuji vendor mana pun.
Jika Anda benar-benar butuh perantaian, misalnya gateway perusahaan yang dicapai lewat lompatan komersial, pilih desain dengan satu titik penegakan. Itu biasanya berarti router atau satu klien yang mendukung rantai, bukan dua aplikasi desktop yang bersaing untuk rute default yang sama. Pada perangkat terkelola, pertahankan klien yang disahkan dan anggap semua yang lain di luar cakupan, apa pun yang ditampilkannya di baki.
Daftar periksa sebelum mempertahankan keduanya
Telusuri daftar ini berurutan; butir pertama yang gagal adalah yang harus diperbaiki.
- Pastikan tepat satu klien memiliki rute default dan resolver.
- Jika Anda ingin klien kedua aktif, izinkan titik akhir servernya secara eksplisit dan periksa ulang setelah setiap pembaruan klien.
- Catat hasil yang diharapkan saat salah satu terowongan jatuh, lalu uji kasus itu secara khusus.
- Periksa jalur kegagalan setelah reboot, saat urutan mulai berbeda.
- Pada profil terkelola, berhenti dan tanyakan kepada pemilik sebelum menambahkan apa pun.
Jika langkah ketiga gagal, jawaban jujurnya adalah hanya satu klien yang memberi Anda kebijakan. Putuskan mana yang Anda percaya dan lepaskan yang lain.