Ինչու արգելափակված Android հավելվածը դեռ ցույց է տալիս ցանցային օգտագործում
Օգտագործման հաշվիչը բայթերը չափում է մեկ սահմանում, ոչ թե հաջող հարցում։ Ստուգեք ժամանակային պատուհանը, UID-ով վերագրումը և թե որ հավելվածն է տիրում VPN ծառայությանը։
Դուք արգելափակում եք հավելվածը ձեր Android VPN firewall-ում, հավելվածը դադարում է աշխատել, և նրա օգտագործման տողը շարունակում է բարձրանալ։ Գայթակղիչ եզրակացությունն այն է, որ արգելափակումը արտահոսել է, կամ որ հաշվիչը կոտրված է։ Նրանցից ոչ մեկը չի բխում։ Օգտագործման գրառումն ասում է, որ բայթերը վերագրվել են այդ ինքնությանը ինչ-որ դիտարկման կետում. այն ոչինչ չի ասում այն մասին, թե արդյոք հեռավոր ծառայությունը ընդունել է հարցումը։ Երբ իմանաք, թե որ սահմանն է չափվել և ո՛ր ինքնությանը է դա գանձվել, երկու դիտարկումները դադարում են հակասել միմյանց։
Հաշվիչը չափում է բայթեր, ոչ առաքում
Android-ը երթևեկությունը վերագրում է UID-ին և հաշվում է այն երկու ուղղություններով, և դա անում է ինտերֆեյսի սահմանում, ոչ թե այն պահին, երբ հավելվածի հարցումը հաջողվում է։
Մերժված միացման փորձը դեռ տեղաշարժում է փաթեթներ՝ SYN-ը, reset-ը կամ դրանց հաջորդող կրկնափոխանցումները, գումարած 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 տեղեկատուն փաստագրում է, թե ինչպես են այդ դույլերը հարցվում և վերագրվում։