Kako čitati stanje VPN-a i proxyja kod upravljane radne aplikacije
Ikona VPN-a na upravljanom telefonu dokazuje vrlo malo. Pročitajte aktivnu mrežu, njena svojstva i efektivni proxy, pa pročitajte svaku nulu onako kakva jeste.
Radna aplikacija ne uspijeva na upravljanom telefonu, neko provjeri prekidač za VPN, vidi da je uključen i proglasi put zdravim. Tu se zaustavlja većina ovih dijagnostika, i to je prerano: aktivan VPN transport ne govori da su zahtjevi ove aplikacije išli kroz njega, a proxy koji se stvarno primjenjuje može biti po aplikaciji ili odabran PAC datotekom umjesto da se prikaže u Postavkama. Počnite od konkretne aplikacije i profila koje ispitujete, pa pročitajte vlastiti pogled platforme na put.
Počnite od aplikacije i njenog profila
Aplikacija s radnom značkom obično radi u zasebnom profilu s vlastitom mrežnom politikom. Lični preglednik na istom telefonu nije dokaz za nju, a nije ni rezultat s koleginog uređaja s drugačijim upravljanjem. Zabilježite kojem profilu aplikacija pripada prije nego što bilo šta pročitate.
U Postavkama izlistajte konfigurisane VPN unose i zabilježite kome pripada svaki. U Samsungovim verzijama natpisi menija se pomjeraju između izdanja, pa opišite unos, a ne put do njega. Sivi ili upravljani unos pripada onome ko administrira uređaj; isključivanje kao eksperiment mijenja ono što pokušavate izmjeriti i može biti protiv politike.
Pročitajte stanje koje platforma prijavljuje
Unutar postojeće aktivnosti u vašim alatima za podršku, na API 23 ili novijem, stanje mreže se može pročitati bez slanja ijednog bajta. Poziv traži uobičajenu manifest dozvolu ACCESS_NETWORK_STATE za čitanje mogućnosti.
val cm = getSystemService(android.net.ConnectivityManager::class.java) ?: return
val network = cm.activeNetwork
val caps = network?.let { cm.getNetworkCapabilities(it) }
val hasVpn = caps?.hasTransport(android.net.NetworkCapabilities.TRANSPORT_VPN)
val proxy = cm.defaultProxySvaka vrijednost odgovara na usko pitanje. Aktivna mreža je zadana mreža procesa koji poziva u tom trenutku. Provjera mogućnosti kaže da li je ta zadana mreža potpomognuta VPN-om. Poziv proxyja prijavljuje efektivni zadati HTTP proxy, a vraćeni objekat može opisivati ili statični proxy ili PAC skriptu.
Ako vam treba pogled po mreži umjesto zadatog, pročitajte svojstva veze iste mreže i uporedite s cm.getLinkProperties(network)?.httpProxy. Proxy koji instalira upravljanje uređajem pojavljuje se u pozivu zadanog proxyja i ne pojavljuje se u svojstvima veze, što je brz način da razlikujete proxy koji nameće politika od onog koji je dala mreža.
Držite izlaz u svom kanalu za podršku, a ne u javnom izvještaju. Imena proxy hostova, PAC adrese i interne ekstenzije otkrivaju kako vaša organizacija usmjerava saobraćaj, i nijedno od toga nije potrebno da se opiše kvar.
Tumačite svako polje usko
Nulta mreža ili nulti objekat mogućnosti znači da stanje mreže pozivaoca nije bilo dostupno ili se promijenilo tokom čitanja. To ne znači da VPN-a nema. Tretirajte to kao nepoznato i pročitajte ponovo nakon što aplikacija izađe u prvi plan, a ne kao negativan rezultat.
VPN transport je najslabiji od pozitivnih. Svaka aplikacija koja drži VpnService proizvodi ga, uključujući lokalnu aplikaciju za filtriranje koja nikad ne šalje vaš saobraćaj nigdje. Zato vrijednost true kaže da postoji zadana mreža potpomognuta VPN-om, a ne da je korišten izlaz vaše organizacije i sigurno ne da je bilo inspekcije.
Nulti zadati proxy znači da ovaj API ne prijavljuje nijedan zadati HTTP proxy za efektivnu konfiguraciju. Isključuje vrlo malo: aplikacija može nositi vlastito SOCKS podešavanje, implementirati vlastiti HTTP klijent ili biti vođena proxyjem na gatewayu za koji uređaj nikad ne sazna.
PAC je slučaj koji pobjeđuje odgovor s jednom vrijednošću. Skripta može usmjeriti jednu destinaciju kroz proxy i poslati drugu direktno, pa dva zahtjeva iste aplikacije u sekundi mogu ići različitim putevima. A aplikacija koja veže svoje sokete za odabranu mrežu ili poziva bindProcessToNetwork nije dužna slijediti zadatu vrijednost uopšte.
Šta vam ovaj snimak ne može reći
Ovo nije historija. Ovdje ništa ne bilježi kojim je putem išao zahtjev koji ne uspijeva, a uspješno čitanje nakon kvara nije dokaz o kvaru. Nije ni inventar: dobijate zadatu mrežu procesa koji poziva, a ne spisak privatnih veza svake aplikacije.
Također ne govori ništa o onome što se dešava iznad soketa. TLS rukovanje koje ne uspije na upravljanom uređaju može biti problem skladišta povjerenja, nesklad pinninga ili ime koje proxy odbija, i ništa od toga se ne pojavljuje u čitanju povezanosti.
Zato su dvije polovine važne zajedno: snimak sužava gdje gledati, a aplikacijina vlastita dijagnostika kaže šta je stvarno neuspjelo.
Prijavite to u obliku koji administrator može koristiti
Navedite zahvaćenu aplikaciju, profil, vremensku oznaku i tačnu fazu koja je neuspjela: razrješavanje imena, TCP veza, TLS rukovanje ili HTTP status. Dodajte vrijednosti snimka onako kako su pročitane, s nulama zapisanim kao nule, a ne kao riječ ništa. Zabilježite da li druge aplikacije u istom profilu ne uspijevaju na isti način, što razdvaja problem aplikacije od problema puta u cijelom profilu.
Zatim stanite i pustite vlasnika puta da odgovori. Ne tretirajte korporativni sertifikat, proxy adresu ili VPN unos kao dozvolu da uklonite upravljanje ili zaobiđete odobrenu rutu; to pretvara slučaj podrške u incident politike.
Ugovor o zadanom proxyju je kratak i vrijedi ga jednom pročitati, jer tačno određuje koji proxy poziv prijavljuje, i svako pretjerano čitanje ovog snimka počinje pretpostavkom da prijavljuje više.