Зошто блокирана Android апликација и понатаму покажува мрежна употреба
Бројачот на употреба мери бајти на една граница, не успешно барање. Проверете го временскиот прозорец, доделувањето на UID и која апликација ја поседува VPN услугата.
Блокирате апликација во вашиот Android VPN firewall, апликацијата престанува да работи, а нејзиниот ред за употреба продолжува да расте. Привлечниот заклучок е дека блокирањето протече или дека бројачот е расипан. Ниту едно не следи. Записот за употреба вели дека бајти биле доделени на тој идентитет во некоја точка на набљудување; тој не кажува ништо за тоа дали далечна услуга прифатила барање. Откако ќе знаете која граница е измерена и на кој идентитет тоа му се припишало, двете набљудувања престануваат да си противречат.
Бројачот мери бајти, не испорака
Android го доделува сообраќајот на UID и го брои во двете насоки, и тоа го прави на граница на интерфејс, а не во моментот кога барањето на апликацијата успева.
Одбиен обид за поврзување сепак движи пакети: SYN, ресетирањето или повторувањата што следат, плус DNS барањето што претходело на двете. Тие бајти постојат дури и кога ништо не е испорачано, а на некои патеки се бројат пред кој и да е филтер да одлучи што да прави со нив.
Затоа редот на блокирана апликација може да расте додека секое барање не успева. Бројачот одговара на прашањето „колку бајти му се доделени на овој идентитет“, а не „дали овој идентитет стигнал до интернет“. Графиконот не може да разликува прифатен тек од учтиво одбиено ракување, а ни збирот што ги собира двете насоки заедно.
Доделувањето го следи UID, не иконата
Редот е по UID, а еден UID можат да го делат повеќе од еден пакет, додека видлива апликација може да ја предаде работата на одделна компонента што работи под сопствен идентитет. Јазиче на прелистувач нацртано од заеднички WebView процес, услуга за синхронизација во позадина или придружен пакет инсталиран до главната апликација — сите тие создаваат сообраќај што екранот за употреба може да го прикаже под име што не сте го очекувале или под апликацијата што навистина сте ја блокирале. Блокираниот пакет и помошникот што ги носи неговите барања се два различни субјекта, а правилото покриваше само еден од нив.
Кога бројките изгледаат погрешно, споредете го UID, а не ознаката. API-то за употреба се прашува по UID, а adb shell dumpsys package <package> | grep userId= го печати бројот со кој треба да се спореди, така што два записи со ист UID се истиот идентитет од гледна точка на бројачот.
Временскиот прозорец може да претходи на вашето правило
Податоците за употреба се собираат во кофи и се прашуваат периодично, не се пренесуваат во живо. Дневниот збир може да ги вклучи минутите пред да го вклучите блокирањето, синхронизација во позадина од претходниот час или сообраќај што веќе бил на пат. Споредувањето на кумулативен збир со едно одбиено барање и нарекувањето на разликата истекување е грешка при мерењето, а не наод на firewall.
Користете пократок прозорец и чист почеток. Забележете ја временската ознака кога го менувате правилото, почекајте еден интервал на собирање, потоа гледајте само податоци по него. Ако збирот продолжува да расте во прозорец што започнува по правилото, имате што да истражите; ако престане да расте, претходниот раст бил прикажана историја.
VPN услугата можеби не е онаа што сте ја поставиле
VPN firewall гледа само сообраќај што го носи сопствената услуга. Ако се стартува друга VPN апликација и ја преземе активната врска, вашиот филтер повеќе не е на патеката, додека неговиот интерфејс постои во поставките. Списоците за заобиколување по апликација го прават истото намерно, а профилот што исклучува апликација не е истекување кога апликацијата потоа работи.
IPv4, IPv6 и DNS исто така може да се разидуваат. Филтер што ракува со IPv4 може да остави IPv6 или приватен DNS резолвер надвор од себе, така што дел од сообраќајот на апликацијата следи патека што вашите правила никогаш не ја опишале. Проверете која апликација моментално го поседува VPN-от и што вели списокот за исклучување пред да препишете нешто:
adb shell settings get secure always_on_vpn_app
adb shell dumpsys connectivity
adb shell dumpsys netstats detail
Тестирајте едно ново барање и запишете четири факти
Изберете безопасно барање, извршете го еднаш и запишете четири факти: правилото во сила, UID-от на апликацијата, состојбата на мрежата и времето. Потоа проверете дали вашиот филтер го забележал текот и дали одредиштето или портата го виделе истото поврзување. Еден тек идентификуван на двете страни е доказ; збирниот вкупен износ не е.
Одбранлив заклучок именува што било одбиено и кое набљудување го потврдило. „Бројачот порасна“ не е наод, а „сите бројачи на употреба се лажни“ исто така не е. Слоганот за OSI слој не го решава ова: чесниот одговор е дека бројачот и блокирањето можат и двете да бидат точни додека опишуваат различни работи. Android референцата NetworkStatsManager документира како тие кофи се прашуваат и доделуваат.