İki kişi aynı soruyu sorar ve birbiriyle bağdaşmayan yanıtlar alır, çünkü farklı yerlerde dururlar. Birinin önünde sistemin VPN ayarları ekranı açıktır ve bir uygulama listesini düzenler. Diğeri bir düzenleyicide VpnService.Builder.addDisallowedApplication() yazar. İkisi de buna uygulama bazlı VPN filtresi der. Bu kontrol yalnızca birine aittir ve ikisi de hiçbir şeyi engellemez.

Kullanıcının gördüğü ekrandan başlayın

Ayarları açın, VPN girdisini bulun ve gerçekten etkin olan bağlantıya bakın. İstemci uygulama bazlı bir liste sunuyorsa bu liste istemcinin kendi tünelinindir. Platform, ilgisiz bir uygulamanın başka bir VPN'in uygulama seçimini okuyabileceği veya değiştirebileceği genel bir API yayımlamaz, bu yüzden ikinci bir uygulama o listeyi kullanıcı adına düzeltemez.

Bu, anlatının ilk çatalı. Kurulu VPN'de böyle bir ayar yoksa kodla etrafından dolaşılacak bir şey yoktur: özellik tünelin sahibi olan üründe yoktur. Varsa doğru düzeltme o ekrandadır ve onu açabilen kişi yapar.

Paketi tünelin içine kadar izleyin

Kendi uygulamanız bir tünel kurduğunda bir TUN arayüzü oluşturur ve hangi uygulamaların trafiğinin içeri girdiğini bildirir. Üyelik çağrıları arayüz kurulmadan önce olur ve sonrasında kural kümesi o oturum için sabittir:

val builder = VpnService.Builder()
builder.addAddress("10.8.0.2", 32)
builder.addRoute("0.0.0.0", 0)
builder.addDisallowedApplication("com.example.bypass")
val tun = builder.establish()   // membership decided here

Bu çağrılar yalnızca uygulamanızın az önce oluşturduğu tünel için geçerlidir, başka hiçbir şey için değil. Cihaz genelinde bir politika değildir, diğer istemciler için sürmez ve başkasının VPN'ine ulaşamaz. Paket çözülemediği için kurucu çağrısı bir istisna fırlatırsa arayüz hiç kurulmaz; bu sessiz değil, temiz bir başarısızlıktır.

Dışlama neden bir engel gibi göründü

Dışlanan uygulama tünelinizin etrafından altındaki ağa yönlendirilir. Bu onu engellemenin tam tersidir: trafik cihazdan yine çıkar, yalnızca sizin denetlediğiniz arayüzün dışından. Güvenlik duvarı tarzı bir uygulama tersini yapar. Uygulamanın trafiğini kendi tüneli içine alır ve ardından paketleri atar ya da iletmeyi reddeder; arayüz aynıdır, politikanın yönü ters çevrilmiştir.

Bu ters çevirmenin arkasındaki iş bir yapılandırma bayrağı değildir. Tünel tanımlayıcısından IP paketleri okur, akış bazında karar verir ve sonra onları korumalı bir soketten iletir ya da atarsınız. İlgilenmediğiniz her şey öylece durur; yarım kalmış bir tünelin çalışan bir filtre gibi değil bozuk bir ağ gibi görünmesinin nedeni budur. Amaç engellemekse paket işleme, ön plan hizmeti ve sınıflandıramadığınız trafik için yazılı bir politika bütçeleyin.

Kendiniz kurduğunuzda ne bozulur

Android genellikle aynı anda yalnızca bir etkin VPN'e izin verir, bu yüzden ürünler zincirlemeyi desteklemiyorsa filtre tüneliniz ile bir gizlilik tüneli aynı yer için yarışır. Bağlantıları engelleyen her zaman açık VPN, hata biçimini burada önemli olan biçimde değiştirir: tünele giremeyen trafik doğrudan gönderilmek yerine atılır; sızıntı önleme tasarımının istediği ve bir hata ayıklama oturumunun pek beklemediği şey budur.

Paket görünürlüğü ikinci tuzaktır. Bir uygulamanın paket adının çözümlenmesi NameNotFoundException ile başarısız olabilir ve yeni Android sürümlerinde görebildiğiniz paket kümesi bildirdiğiniz sorgulara bağlıdır. Her adın çözümleneceğini varsaymak yerine istisnayı ele alın ve uygulamalar kurulduğunda ya da kaldırıldığında listeyi yeniden okuyun, sonsuza kadar önbellekte tutmak yerine.

Yönetilen cihazlar üçüncü bir sahip ekler Kurumsal hareketlilik politikası uygulama bazlı bir VPN ya da her zaman açık bir profil belirleyebilir ve sıradan bir uygulama bunu geçersiz kılamaz. Kendi kodunuzda hata ayıklamadan önce cihazın yönetilip yönetilmediğini kontrol edin, çünkü o durumda değiştirmeye çalıştığınız liste telefonu tutan hiç kimse tarafından düzenlenemeyebilir.

Denetlediğiniz bir uygulamayla test edin

Filtrelemeye çalıştığınız uygulamayla test etmeyin. Ağ davranışını gözlemleyebildiğiniz ikinci bir uygulama kullanın ve onun trafiği tünelinizden çıkarken hedefinki çıkmıyor mu bakın. İkisi de içeride kalıyorsa politika çalışıyor ve hedef dışlanmış; hiçbiri çıkmıyorsa tünelin kendisi yanlış ve uygulama listesi sorun değil.

Sonra üç şeyden hangisini gerçekten kurduğunuza karar verin. Uygulama bazlı tünel, listenin profilinizin parçası olduğu kurucu API'sidir. Cihaz güvenlik duvarı, paket işleme artı savunabileceğiniz bir yaşam döngüsüdür. Başkasının VPN'ini değiştirmek desteklenen bir yol değildir ve oradaki dürüst yanıt, ayarın o ürüne ait olduğudur.

İlgili makaleler