Kada Android aplikacija prestane raditi u trenutku kada se tunel podigne, mogu biti odgovorne tri različite stvari, a one daju slične simptome. Aplikacija može pročitati stanje mreže samog telefona i odbiti lokalno. Server može klasificirati adresu s koje dolazite i odbiti je. Ili odbijanje uopće nema veze s VPN-om. Redoslijed ispod prvo prikuplja dokaze, a tek onda nešto mijenja, jer je promjena izlaza najskuplji korak i najmanje vjerojatno pomaže ako je provjera lokalna.

Korak 1: saznajte kada aplikacija odbija

Vrijeme je prvi razlikovni znak. Očistite međuspremnik zapisa, reproducirajte kvar i pogledajte što je aplikacija učinila prije nego što se požalila:

adb logcat -c
# reproduce the failure in the app
adb logcat -d | grep -iE 'vpn|network|connect|http' | tail -60

Ako aplikacija odbija prije ikakvog pokušaja odlaznog zahtjeva, radi se o lokalnoj odluci. Ako se poveže, nešto pošalje i tek onda pokaže grešku, odbijanje je došlo s druge strane. Ako aplikacija pada jednako i s isključenim tunelom, VPN nikada nije bio varijabla.

Tretirajte to vrijeme kao dokaz, a ne kao dokazano. Aplikacija može reproducirati odgovor iz predmemorije, a pozadinski zahtjevi su možda uspjeli ili pali prije nego što ste pogledali. Zabilježite vremenske oznake zadnjeg uspješnog zahtjeva i greške, ne samo trenutak kada se poruka pojavila.

Korak 2: pročitajte kako telefon sam vidi mrežu

Android izlaže VPN stanje kao mogućnost mreže, pa aplikaciji nije potreban popis komercijalnih pružatelja da bi primijetila aktivan tunel. Pita uslugu povezivosti koja je trenutna mreža, a odgovor uključuje bit VPN transporta:

val cm = context.getSystemService(ConnectivityManager::class.java)
val caps = cm.getNetworkCapabilities(cm.activeNetwork)
val onVpn = caps?.hasTransport(NetworkCapabilities.TRANSPORT_VPN) == true

Ta provjera je lokalna i jeftina, i objašnjava cijelu klasu prijava "ova aplikacija ne radi preko VPN-a" bez ikakve udaljene klasifikacije. Ono što aplikacija može vidjeti i dalje ovisi o njezinu vlastitom mrežnom kontekstu, pa nemojte pretpostaviti da svaka aplikacija pregledava svaki profil na uređaju.

S radne stanice isto stanje vidite na testnom uređaju pomoću adb shell dumpsys connectivity i traženjem unosa VPN mreže. Usporedite pokretanje s podignutim tunelom i ono sa spuštenim te sačuvajte oba izlaza.

Korak 3: pročitajte što poslužitelj stvarno vidi

Drugi promatrač je usluga. Ona vidi izvornu adresu koja dolazi i može djelovati prema adresi, mreži hostinga iza nje, regiji, operateru ili signalima vezanim uz račun i uređaj. Ništa od toga nije jedinstven identitet, a dijeljenje adresa čini popratne blokade normalnima: jedna ograničena adresa može izbaciti nepovezane korisnike iza istog prevođenja.

Dohvatite adresu istim putem kojim je koristi aplikacija, ne iz preglednika na prijenosnom računalu. Na telefonu običan zahtjev prema usluzi odjeka adrese pokazuje što prima udaljena strana, a usporedba sa zahtjevom preko mobilne mreže kaže je li se adresa uopće promijenila.

Ako aplikacija radi preko mobilne mreže, a pada preko tunela s istim računom, odbijanje je na udaljenoj strani ili u politici same aplikacije. Ako pada u oba slučaja, VPN nije razlika i trebate prestati testirati krajnje točke.

Korak 4: uskladite dokaze s jednom od tri presude

Tri kombinacije pokrivaju gotovo svaku prijavu. Odbijanje bez odlaznog pokušaja dok je tunel aktivan upućuje na lokalnu provjeru transporta. Zahtjev koji ode i vrati se s greškom, istek vremena na određenom hostu ili poruka o regiji upućuju na udaljenu stranu. Kvar koji se ponavlja na mobilnoj mreži bez tunela upućuje na račun, verziju aplikacije ili politiku same usluge, i nikakva promjena VPN-a ga neće pomaknuti.

Zapišite presudu zajedno s dokazima koji su je dali. Vrijednost je ovog koraka u tome što zaustavlja petlju u kojoj netko četiri puta mijenja izlazne čvorove da popravi provjeru koja radi na samom telefonu.

To također čuva tvrdnje poštenima. Vlastiti poslužitelj mijenja krajnju točku i njezin internetski izlaz; ne čini da Android zaboravi da je VPN mreža aktivna i ne jamči prihvaćanje kod usluge koja klasificira adrese. Lokalni filtar može se aktivirati na VPN mreži koju sami posjedujete jednako lako kao na komercijalnoj.

Korak 5: odaberite podržani put i provjerite ga

Pođite od dokumentirane politike proizvoda i njegova vlasnika podrške. Pošaljite verziju klijenta, točnu poruku i usko razdoblje kvara; ne šaljite pune snimke prometa ni vjerodajnice samo da dokažete da greška postoji.

Ako usluga dopušta izravan pristup i politika uređaja to dopušta, izuzetak za pojedinu aplikaciju je podržani mehanizam, i on namjerno uklanja tu aplikaciju iz tunela umjesto da skriva tunel. Promet aplikacije tada izlazi vlastitim putem, što je politička odluka koju netko mora preuzeti. U konfiguraciji blokiranja bez VPN-a izuzeta aplikacija može jednostavno izgubiti povezivost, pa testirajte tu kombinaciju prije nego što obećate da radi.

Nakon svake promjene ponovite test vremena iz prvog koraka, potvrdite da aplikacija radi i da sve ostale aplikacije i dalje koriste tunel. Zatim vratite prethodnu konfiguraciju i provjerite vraća li se kvar, jer popravak koji ne možete reproducirati je slučajnost koju ćete ponovno sresti.

Povezani članci