Anda memilih pelayan yang kelihatan lebih dekat, tekan sambung, dan pelayar berhenti memuat sebelum terowong baharu sedia. Ikon bertukar ke keadaan menyambung dan kekal di situ sementara setiap tab tamat masa. Jeda itu biasanya kill switch yang berfungsi seperti direka: trafik disekat selagi klien tiada terowong untuk menghantarnya. Sama ada jeda itu wajar bergantung pada apa yang klien lakukan dalam beberapa saat itu, dan sama ada sekatan ditarik apabila ia berkata begitu.

Apa yang klien lakukan antara dua pelayan

Pertukaran titik akhir ialah beberapa langkah, bukan satu suis. Klien meruntuhkan terowong semasa, mengemas kini peraturan penyekatannya, menyelesaikan dan mencapai titik akhir baharu di luar terowong, kemudian memasang laluan baharu dan mengangkat sekatan. Jurang yang anda rasa terletak antara langkah pertama dan terakhir.

Urutan lebih penting daripada kelajuan di sini. Jika peraturan penyekatan masuk sebelum pengecualian untuk titik akhir baharu, klien tidak dapat melengkapkan jabat tangan dan kekal pada menyambung sehingga tamat masa. Jika pengecualian itu salinan alamat pelayan lama, jabat tangan baharu kelihatan seperti mana-mana paket keluar lain dan digugurkan. Kedua-dua kes kelihatan sama dari pelayar, sebab itulah pertukaran yang pulih selepas enam saat dan yang tidak pernah pulih boleh berkongsi punca yang sama.

Titik akhir baharu memerlukan lubang dalam sekatan

Untuk membina terowong, klien mesti menghantar paket ke alamat dan port pelayan baharu melalui antara muka fizikal, contohnya UDP 51820 untuk profil WireGuard biasa atau 1194 dan 443 untuk OpenVPN, apa pun yang profil anda sendiri tetapkan. Trafik itu bukan di dalam terowong yang bakal dicipta, jadi sekatan untuk seluruh peranti menelannya melainkan ada peraturan kebenaran yang sepadan.

Profil berasaskan nama hos menambah syarat kedua: carian itu sendiri. Jika klien menyelesaikan titik akhir sebelum sekatan naik, ia boleh menggunakan alamat yang di cache, tetapi apabila profil menukar alamat atau entri cache menjadi lapuk, jabat tangan menuju ke alamat yang tidak diliputi peraturan kebenaran. IPv6 menjadikannya kelihatan, kerana titik akhir dwi-timbunan boleh menerbitkan kedua-dua rekod A dan AAAA, dan peraturan kebenaran yang hanya meliputi alamat v4 membiarkan klien mencuba semula terhadap alamat v6 yang disekat.

Nama pilihan dan nilai lalai berbeza mengikut klien dan versi, jadi baca senarai berdokumen untuk klien anda dan jangan meneka daripada tangkapan skrin. Rujukan tetapan OpenVPN Connect di openvpn.net/connect-docs/app-settings-windows ialah satu contoh bagaimana klien menerangkan pilihan sekatan dan terowong berpecahnya.

Fail-closed ialah mesin keadaan, bukan suis

Kebanyakan klien menyatakan sekatan itu sebagai dasar tembok api dalam tiga keadaan: terowong naik, trafik melalui terowong dan tiada sekatan; terowong turun, sekatan aktif; dan peralihan, sekatan aktif serta pengecualian sementara untuk titik akhir. Di keadaan ketigalah pepijat tinggal, kerana ia mesti berubah dua kali dalam beberapa saat, dan gagal keluar daripadanya kelihatan sama seperti sekatan kekal.

Mekanisme berbeza mengikut platform, dan kegagalan juga. Penapis Windows Filtering Platform membawa pemberat, jadi penapis sekatan yang mengatasi kebenaran anda terus menggugurkan paket walaupun kebenaran itu wujud, dan penapis yang ditinggalkan oleh proses klien yang dibunuh boleh mengekalkan mesin di luar talian selepas aplikasi hilang. Klien macOS biasanya menulis peraturan pf ke dalam anchor, di mana susunan peraturan dan keputusan pantas menentukan peraturan mana yang terpakai. Klien Linux biasanya mengurus rantai nftables atau iptables dengan dasar drop dan kebenaran jelas untuk titik akhir, antara muka terowong dan loopback. Mod sentiasa aktif Android dengan pilihan menyekat sambungan tanpa VPN ialah yang paling ketat dalam kumpulan ini, kerana sistem pengendalian menggunakan sekatan pada seluruh peranti dan bukan setiap aplikasi.

WireGuard memerlukan nota sendiri, kerana AllowedIPs ialah pemilih laluan, bukan penyekat. Ia menentukan destinasi mana yang masuk ke terowong; ia tidak melakukan apa-apa untuk menghalang paket yang belum ada terowong daripada keluar melalui Wi-Fi. Dalam persediaan hanya WireGuard dan tanpa peraturan tembok api, kill switch sebenarnya ialah ketiadaan laluan, dan selepas jabat tangan digugurkan, paket sebenar boleh keluar melalui antara muka fizikal.

Ukur jurang itu dan bukannya menonton ikon

Pantau paket, bukan lampu status. Dalam Linux, mulakan ping perlahan ke alamat awam dalam satu terminal dan tangkap port pengangkutan terowong pada antara muka fizikal dalam terminal lain:

ping -i 0.2 -c 100 1.1.1.1 | tail -5

sudo tcpdump -ni eth0 'udp port 51820'

Tukar pelayan dalam klien semasa kedua-duanya berjalan. Tiga perkara penting: berapa lama ping berhenti, sama ada tangkapan menunjukkan jabat tangan mencapai titik akhir baharu, dan sama ada trafik kembali sebelum atau selepas keadaan klien bertukar kepada bersambung. Jika jurang ping berakhir dahulu, sama ada sekatan ditarik terlalu awal atau terowong sudah naik sebelum penunjuk mengakuinya. Jika jurang berakhir lebih lewat, penunjuk itu terlalu optimistik.

Dalam Windows, netsh wfp show state menulis petikan yang boleh anda cari penapis sekatan yang masih ada semasa klien mendakwa terputus. Dalam macOS, sudo pfctl -sr menyenaraikan peraturan yang dimuat dan susunannya. Pasangkan mana-mana petikan dengan log klien itu sendiri; garis masa daripada ping anda memberitahu sama ada sekatan berakhir lewat atau tidak pernah berakhir.

Gelap biasa berbanding sekatan tersangkut

Sedikit gangguan memang tujuan ciri ini, jadi buat triaj sebelum menukar mana-mana tetapan:

What you seeUsually meansNext check
Two or three seconds of timeouts, then normal browsingExpected fail-closed gapNothing to fix
State says connected, traffic stays deadBlock filter or route left behindFirewall snapshot, client log
One app dead while others workTCP session bound to the old exit addressRestart the app
LAN devices unreachable after the switchLAN exception not reappliedAllow-LAN or split-tunnel setting
New server hangs, the old one reconnectsPermit covers only the old addressResolved address of the new host, including AAAA

Jika anda berada di baris kedua atau kelima, jangan matikan kill switch untuk menguji, kerana itu menukar pepijat laluan menjadi kebocoran. Mulakan semula perkhidmatan klien, atau but semula mesin di tempat penapis bertahan selepas proses dibunuh, kemudian lihat sama ada sekatan hilang. Jika hilang, kesalahannya pada pembersihan semasa pertukaran dan bukan pada sekatan itu sendiri.

Sebelum pertukaran seterusnya, sahkan empat perkara: kebenaran titik akhir meliputi setiap keluarga alamat yang diselesaikan profil anda, log klien menunjukkan peralihan selesai, ujian ping anda mengukur jurang dan bukan ikon, dan menutup klien memulihkan sambungan biasa. Kill switch yang bertahan semasa pertukaran dan melepaskan selepasnya menjalankan tugasnya. Yang melepaskan awal, atau tidak pernah, wajar nyahpepijat.

Artikel berkaitan