Dua klien VPN boleh berjalan bersebelahan, tetapi kill switch kedua-duanya tidak bergabung menjadi satu dasar. Setiap klien memasang peraturan untuk terowongannya sendiri, dan tiada satu pun tahu yang lain wujud. Saya pernah mengalaminya dengan klien kerja yang disambung dahulu: aplikasi kedua tidak dapat menyelesaikan jabat tangan, tersangkut pada „Connecting“ selama sepuluh minit, dan terowongan pertama membawa segala-galanya secara senyap. Sama ada aplikasi kedua dilindungi bergantung pada tiga syarat, bukan pada sama ada kedua-dua ikon menyatakan Bersambung.

Apa yang sebenarnya menjadi skop kill switch

Tiada satu pun bendera kill switch dalam sistem pengendalian. Klien yang mengiklankan satu memasang satu set peraturan: buang semua yang tidak keluar melalui terowongan saya, dan sering fail closed apabila terowongan hilang. Di Linux biasanya rantai nftables atau iptables, di Windows satu set penapis Windows Filtering Platform, di Android dan iOS penghalaan perkhidmatan terowongan itu sendiri serta tetapan sistem yang menyekat sambungan tanpa VPN. Panduan VPN Android menerangkan model perkhidmatan itu jika anda mahu sudut pandangan platform.

Skop ialah bahagian yang penting. Peraturan seperti „benarkan hanya paket pada antara muka keluar wg0“ tidak peduli sama ada terowongan kedua wujud. Jika klien lain menaikkan wg1, peraturan klien pertama menganggap paket itu sebagai trafik biasa: biasanya dibuang, kadangkala dibenarkan. Apa pun, klien pertama yang menentukan, dan ia langsung tidak tahu ada aplikasi kedua yang menunggu.

Tiga syarat yang menentukan siapa dilindungi

Anda tidak perlu menyenaraikan setiap gabungan. Tiga soalan menyelesaikannya dalam beberapa minit.

  1. Adakah platform membenarkan terowongan kedua sama sekali? Kebanyakan telefon Android dan iPhone hanya menerima satu perkhidmatan VPN aktif bagi setiap profil pengguna, jadi aplikasi kedua tidak pernah mempunyai terowongan dan tidak pernah menguatkuasakan apa-apa. Anda mendapat satu dasar, daripada aplikasi yang memenangi tempat itu.
  2. Proses mana yang memiliki laluan lalai? Windows, macOS dan Linux membawa dua terowongan dengan mudah. Laluan lalai dimiliki oleh klien yang mengkonfigurasinya terakhir atau dengan metrik lebih baik, dan klien yang satu lagi bersambung tetapi melahu. Di Linux, mod laluan lalai wg-quick menggunakan penghalaan berasaskan dasar dengan jadual peribadi dan peraturan fwmark, jadi terowongan wg-quick kedua menambah peraturan bersaing dan bukannya menggantikan yang pertama.
  3. Bolehkah klien kedua mencapai pelayan sendiri? Jika kill switch pertama bersifat tolak-lalai, titik akhir luar aplikasi kedua hanyalah destinasi lain yang dibuang. Ia mencuba semula secara senyap dan tidak pernah melaporkan ralat.

Versi ringkas, untuk benang sokongan:

SetupWhat you actually get
Second client cannot hold a tunnelOne active policy; the other app only reports that it is waiting
Both tunnels up, second took the default routeThe 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 interfaceSecond client never connects; first tunnel unaffected
Both up, DNS written by whichever client ran lastName resolution breaks for one side when either tunnel drops

Dua daripada baris itu kelihatan sama dari ikon dalam dul sistem, dan itulah sebabnya ikon ialah bukti paling lemah yang ada di sini.

Apa yang gagal dahulu, dan rupanya

Klien yang tersangkut pada „Connecting“ sementara yang lain sihat hampir selalu bermaksud kelaparan titik akhir: kill switch yang berjalan membuang jabat tangan klien kedua ke pelayan sendiri. Sahkan dengan murah dengan menjeda peraturan sekatan klien pertama untuk satu percubaan. Jika klien kedua bersambung serta-merta, soalannya terjawab.

DNS ialah kegagalan kedua. Klien menetapkan konfigurasi penyelesai untuk antara muka sendiri, dan sesetengahnya menimpa senarai global secara terus. Dengan kedua-dua terowongan naik, pertanyaan boleh keluar melalui satu sisi sementara penyelesai milik sisi yang lain. Putuskan mana-mana aplikasi dan yang bertahan menyimpan pelayan nama yang tidak dapat dicapai: halaman tersekat selama satu minit dan kemudian diselesaikan semula, sementara VPN masih menunjukkan bersambung.

Yang ketiga ialah kepakan laluan. Sambungan semula menyusun semula laluan lalai, dan kill switch yang terikat pada antara muka tidak mengikutinya. Trafik yang sebentar tadi berada dalam terowongan kini sepadan dengan peraturan buang, yang pada sisi pengguna terbaca sebagai VPN yang tiba-tiba berhenti berfungsi.

Sahkan dasar mana yang benar-benar berkuat kuasa

Lakukan ini dengan trafik tidak berbahaya, bukan dengan sesuatu yang akan anda sesali.

Di Linux, tanya kernel siapa menang dan kepada apa firewall terikat. ip -4 route show default menamakan terowongan yang memiliki keluaran. ip rule show menunjukkan sama ada penghalaan berasaskan dasar sedang digunakan. sudo nft list ruleset | grep -n oifname menunjukkan sama ada pembuangan terikat pada nama antara muka, tanda, atau seluruh rantai keluaran.

Di Windows kisah yang sama hidup dalam metrik laluan dan senarai penapis: 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.

Kemudian lakukan langkah yang orang lain langkau: hentikan terowongan dengan sengaja dan sahkan bahawa trafik yang anda jangkakan gagal benar-benar gagal. Ikon bersambung ialah status antara muka, bukan penguatkuasaan.

Bila dua klien ialah reka bentuk yang salah

Jika satu-satunya keperluan di sebalik aplikasi kedua ialah lebih banyak perlindungan, buangkannya. Dua dasar sekatan yang berinteraksi kurang boleh diramal daripada satu, dan setiap sambungan semula ialah peluang untuk mendarat dalam keadaan yang tiada vendor mengujinya.

Jika anda benar-benar memerlukan rantaian, contohnya get laluan korporat yang dicapai melalui lonjakan komersial, pilih reka bentuk dengan satu titik penguatkuasaan. Itu biasanya bermakna penghala atau satu klien yang menyokong rantaian, bukan dua aplikasi desktop yang bersaing untuk laluan lalai yang sama. Pada peranti terurus, kekalkan klien yang dibenarkan dan anggap segala yang lain di luar skop, apa pun yang dipaparkannya dalam dul.

Senarai semak sebelum anda menyimpan kedua-duanya

Telusuri senarai ini mengikut urutan; perkara pertama yang gagal ialah yang perlu dibaiki.

  • Sahkan bahawa tepat satu klien memiliki laluan lalai dan penyelesai.
  • Jika anda mahu klien kedua naik, benarkan titik akhir pelayannya secara eksplisit dan semak semula selepas setiap kemas kini klien.
  • Catat hasil yang dijangka apabila mana-mana terowongan jatuh, dan uji kes itu secara khusus.
  • Semak laluan kegagalan selepas but semula, apabila urutan permulaan berbeza.
  • Pada profil terurus, berhenti dan tanya pemilik sebelum menambah apa-apa.

Jika langkah ketiga gagal, jawapan jujurnya ialah hanya satu klien yang memberi anda dasar. Tentukan mana yang anda percaya dan lepaskan yang lain.

Artikel berkaitan