Daha yakın görünen bir sunucu seçer, bağlan'a basarsınız ve tarayıcı yeni tünel ayağa kalkmadan yüklemeyi durdurur. Simge bağlanıyor durumuna geçer ve her sekme zaman aşımına uğrayana kadar orada kalır. Bu duraklama genellikle kill switch'in tasarlandığı gibi çalışmasıdır: istemcinin trafiği göndereceği bir tüneli yokken trafik bloklanır. Duraklamanın kabul edilebilir olup olmadığı, istemcinin o saniyelerde ne yaptığına ve blokun kaldırıldığını söylediğinde gerçekten kaldırılıp kaldırılmadığına bağlıdır.

İstemci iki sunucu arasında ne yapar

Uç nokta değişimi tek bir anahtar değil, birkaç adımdır. İstemci mevcut tüneli yıkar, bloklama kurallarını günceller, yeni uç noktayı çözer ve tünelin dışından ona ulaşır, ardından yeni rotaları kurar ve bloku kaldırır. Hissettiğiniz boşluk ilk adımla son adım arasındadır.

Burada sıra hızdan daha önemlidir. Bloklama kuralları yeni uç nokta için istisnadan önce yürürlüğe girerse istemci el sıkışmayı tamamlayamaz ve zaman aşımına kadar bağlanıyor durumunda kalır. İstisna eski sunucunun adresinin bir kopyasıysa yeni el sıkışma herhangi bir giden paket gibi görünür ve düşürülür. İki durum da tarayıcıdan aynı görünür, bu yüzden altı saniye sonra toparlanan bir değişimle hiç toparlanmayan bir değişim aynı nedeni paylaşabilir.

Yeni uç noktanın blokta bir deliğe ihtiyacı var

Tüneli kurmak için istemci fiziksel arayüzden yeni sunucunun adresine ve bağlantı noktasına paket göndermelidir, örneğin tipik bir WireGuard profili için UDP 51820 veya OpenVPN için 1194 ve 443, kendi profiliniz ne belirtiyorsa. Bu trafik henüz oluşmakta olan tünelin içinde değildir, bu yüzden cihaz geneli bir blok, eşleşen bir izin kuralı yoksa onu yutar.

Ana makine adına dayalı profiller ikinci bir koşul ekler: aramanın kendisi. İstemci uç noktayı blok yükselmeden önce çözerse önbellekteki bir adresi kullanabilir, ancak profil adresleri döndürdüğünde veya önbellek kaydı eskidiğinde el sıkışma izin kuralının kapsamadığı bir adrese gider. IPv6 bunu görünür kılar, çünkü çift yığınlı bir uç nokta hem A hem AAAA kaydı yayımlayabilir ve yalnızca v4 adresini kapsayan bir izin kuralı istemciyi bloklanmış bir v6 adresine karşı yeniden denemeye bırakır.

Seçenek adları ve varsayılan değerler istemciye ve sürüme göre değişir, bu yüzden ekran görüntülerinden tahmin etmek yerine kendinizinki için belgelenmiş listeyi okuyun. OpenVPN Connect ayar başvurusu openvpn.net/connect-docs/app-settings-windows adresinde bir istemcinin blok ve bölünmüş tünel seçeneklerini nasıl tanımladığına bir örnektir.

Fail-closed bir durum makinesidir, anahtar değil

Çoğu istemci bloku bir güvenlik duvarı politikası olarak üç durumda ifade eder: tünel yukarı, trafik tünelden geçiyor ve blok yok; tünel aşağı, blok etkin; ve geçiş, blok etkin artı uç nokta için geçici istisnalar. Hatalar tam da üçüncü durumda yaşar, çünkü birkaç saniye içinde iki kez değişmesi gerekir ve ondan çıkamamak tam olarak kalıcı bir blok gibi görünür.

Mekanizma platforma göre değişir, başarısızlık da öyle. Windows Filtering Platform filtrelerinin ağırlıkları vardır, bu yüzden izninizi aşan bir blok filtresi izin var olsa bile paketleri düşürmeye devam eder ve öldürülmüş bir istemci sürecinin bıraktığı filtreler uygulama gittikten sonra da makineyi çevrimdışı tutabilir. macOS istemcileri genellikle pf kurallarını bir çapaya yazar; orada kural sırası ve hızlı kararlar hangi kuralın geçerli olduğunu belirler. Linux istemcileri genellikle drop politikası ve uç nokta, tünel arayüzü ile loopback için açık izinler içeren bir nftables veya iptables zinciri yönetir. Android'in always-on VPN'i, VPN olmadan bağlantıları bloklama seçeneğiyle grubun en katısıdır, çünkü işletim sistemi bloku uygulama başına değil tüm cihaz için uygular.

WireGuard kendi notunu hak eder, çünkü AllowedIPs bir yönlendirme seçicisidir, engelleyici değil. Hangi hedeflerin tünele gireceğine karar verir; henüz tüneli olmayan bir paketin Wi-Fi üzerinden çıkmasını engellemek için hiçbir şey yapmaz. Yalnızca WireGuard ve güvenlik duvarı kuralı olmayan bir kurulumda kill switch aslında rotanın yokluğudur ve düşürülen bir el sıkışmanın ardından fiziksel arayüzden gerçek bir paket çıkabilir.

Simgeye bakmak yerine boşluğu ölçün

Durum ışığını değil paketleri izleyin. Linux'ta bir terminalde genel bir adrese yavaş bir ping başlatın, diğerinde fiziksel arayüzde tünelin taşıma bağlantı noktasını yakalayın:

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

sudo tcpdump -ni eth0 'udp port 51820'

İkisi de çalışırken istemcide sunucuyu değiştirin. Üç şey önemlidir: ping'lerin ne kadar durduğu, yakalamanın el sıkışmanın yeni uç noktaya ulaştığını gösterip göstermediği ve trafiğin istemcinin durumu bağlıya geçmeden önce mi sonra mı döndüğü. Ping boşluğu önce biterse ya blok çok erken kaldırılmıştır ya da tünel gösterge kabul etmeden önce ayaktadır. Boşluk daha geç biterse gösterge fazla iyimserdir.

Windows'ta netsh wfp show state bir anlık görüntü yazar; istemci bağlantıyı kestiğini söylerken hâlâ var olan blok filtrelerini orada arayabilirsiniz. macOS'ta sudo pfctl -sr yüklenen kuralları ve sıralarını listeler. Herhangi bir anlık görüntüyü istemcinin kendi günlüğüyle eşleştirin; ping'inizden gelen zaman çizelgesi blokun geç mi bittiğini yoksa hiç bitmediğini söyler.

Normal karartma ile takılı kalmış blok

Bir miktar kesinti bu özelliğin amacıdır, bu yüzden herhangi bir ayarı değiştirmeden önce triyaj yapın:

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

İkinci veya beşinci satıra düşerseniz, test etmek için kill switch'i kapatmayın, çünkü bu bir yönlendirme hatasını sızıntıya çevirir. İstemcinin hizmetini yeniden başlatın veya süreç öldürüldükten sonra filtrelerin kaldığı yerde makineyi yeniden başlatın, sonra blokun temizlenip temizlenmediğine bakın. Temizleniyorsa hata blokun kendisinde değil değişim sırasındaki temizliktedir.

Bir sonraki değişimden önce dört şeyi doğrulayın: uç nokta izni profilinizin çözdüğü her adres ailesini kapsıyor, istemci günlüğü geçişin tamamlandığını gösteriyor, ping testiniz simgeyi değil boşluğu ölçüyor ve istemciyi kapatmak normal bağlantıyı geri getiriyor. Değişim sırasında tutan ve sonrasında bırakan bir kill switch işini yapar. Erken, ya da hiç bırakmayan bir tanesi hata ayıklamaya değer.

İlgili makaleler