Engellenen bir Android uygulaması neden hâlâ ağ kullanımı gösterir
Bir kullanım sayacı tek bir sınırda bayt ölçer, başarılı bir isteği değil. Zaman penceresini, UID atamasını ve VPN hizmetini hangi uygulamanın sahiplendiğini kontrol edin.
Android VPN güvenlik duvarınızda bir uygulamayı engellersiniz, uygulama çalışmayı bırakır ve kullanım satırı yükselmeye devam eder. Cazip sonuç, engellemenin sızdığı ya da sayacın bozuk olduğudur. İkisi de çıkmaz. Bir kullanım kaydı, baytların bir gözlem noktasında o kimliğe atfedildiğini söyler; uzak bir hizmetin isteği kabul edip etmediği hakkında hiçbir şey söylemez. Hangi sınırın ölçüldüğünü ve hangi kimliğe borçlandırıldığını bildiğinizde, iki gözlem birbirine karşı çıkmayı bırakır.
Sayaç baytı ölçer, teslimi değil
Android trafiği bir UID'ye atfeder ve her iki yönde sayar; bunu bir uygulamanın isteğinin başarılı olduğu anda değil, arayüz sınırında yapar.
Reddedilen bir bağlantı denemesi yine de paket hareket ettirir: SYN, sıfırlama veya ardından gelen yeniden iletimler, ayrıca ikisinden önce gelen DNS sorgusu. Hiçbir şey teslim edilmese de bu baytlar vardır ve bazı yollarda herhangi bir filtre ne yapacağına karar vermeden önce sayılırlar.
Bu yüzden engellenen bir uygulamanın satırı, her istek başarısız olurken büyüyebilir. Sayaç «bu kimliğe kaç bayt atfedildi» sorusunu yanıtlar, «bu kimlik internete ulaştı mı» sorusunu değil. Bir grafik kabul edilen akışı kibarca reddedilmiş bir el sıkışmadan ayıramaz; iki yönü toplayan bir toplam da ayıramaz.
Atama ikonu değil UID'yi izler
Satır UID başınadır ve bir UID birden fazla paket tarafından paylaşılabilir; görünen bir uygulama ise işi kendi kimliği altında çalışan ayrı bir bileşene devredebilir. Paylaşılan bir WebView sürecinin çizdiği tarayıcı sekmesi, bir arka plan eşitleme hizmeti ya da ana uygulamanın yanına kurulmuş yardımcı paket, kullanım ekranının beklemediğiniz bir ad altında veya engellediğiniz uygulamanın altında gösterebileceği trafik üretir. Engellenen paket ile isteklerini taşıyan yardımcı iki ayrı öznedir ve kural yalnızca birini kapsıyordu.
Sayılar yanlış göründüğünde etiketi değil UID'yi karşılaştırın. Kullanım API'si UID ile sorgulanır ve adb shell dumpsys package <package> | grep userId= karşılaştırılacak sayıyı yazdırır, bu yüzden aynı UID'ye sahip iki giriş sayacın bakış açısından aynı kimliktir.
Zaman penceresi kuralınızdan önce olabilir
Kullanım verileri kovalarda toplanır ve düzenli aralıklarla sorgulanır, canlı akış olarak gelmez. Günlük toplam, engellemeyi açmadan önceki dakikaları, önceki saatten bir arka plan eşitlemesini ya da zaten yolda olan trafiği içerebilir. Birikimli bir toplamı tek bir reddedilmiş istekle karşılaştırıp farkı sızıntı diye adlandırmak bir ölçüm hatasıdır, güvenlik duvarı bulgusu değil.
Daha kısa bir pencere ve temiz bir başlangıç kullanın. Kuralı değiştirdiğiniz zaman damgasını not edin, bir toplama aralığı bekleyin, sonra yalnızca ondan sonraki verilere bakın. Toplam kuraldan sonra başlayan bir pencerede artmaya devam ediyorsa araştıracak bir şeyiniz var; artmayı bırakıyorsa önceki büyüme gösterilen geçmişti.
VPN hizmeti yapılandırdığınız hizmet olmayabilir
Bir VPN güvenlik duvarı yalnızca kendi hizmetinin taşıdığı trafiği görür. Başka bir VPN uygulaması başlayıp etkin bağlantıyı alırsa, arayüzü ayarlarda hâlâ dururken filtreniz artık yolda değildir. Uygulama başına atlama listeleri bunu bilerek yapar ve bir uygulamayı dışlayan profil, uygulama sonradan çalışıyorsa sızıntı değildir.
IPv4, IPv6 ve DNS de birbirinden ayrışabilir. IPv4 ile ilgilenen bir filtre, IPv6'yı veya özel bir DNS çözümleyicisini dışarıda bırakabilir, böylece uygulamanın trafiğinin bir kısmı kurallarınızın hiç tanımlamadığı bir yolu izler. Herhangi bir şeyi yeniden yazmadan önce VPN'i şu anda hangi uygulamanın sahiplendiğini ve dışlama listesinin ne dediğini kontrol edin:
adb shell settings get secure always_on_vpn_app
adb shell dumpsys connectivity
adb shell dumpsys netstats detail
Tek bir taze isteği test edin ve dört olguyu kaydedin
Zararsız bir istek seçin, bir kez yapın ve dört olgu yazın: yürürlükteki kural, uygulamanın UID'si, ağ durumu ve saat. Ardından filtrenizin akışı kaydedip kaydetmediğini ve hedefin ya da ağ geçidinin aynı bağlantıyı görüp görmediğini kontrol edin. İki tarafta da tanımlanan tek bir akış kanıttır; toplu bir tutar değildir.
Savunulabilir bir sonuç, neyin reddedildiğini ve hangi gözlemin bunu doğruladığını adlandırır. «Sayaç yükseldi» bir bulgu değildir ve «tüm kullanım sayaçları sahte» de değildir. OSI katmanı hakkında bir slogan bunu çözmez: dürüst yanıt, sayaç ile engellemenin farklı şeyler anlatırken ikisinin de doğru olabileceğidir. Android'in NetworkStatsManager referansı bu kovaların nasıl sorgulandığını ve atfedildiğini belgeler.