Valdomame telefone darbo programėlė sugenda, kas nors patikrina VPN jungiklį, pamato, kad jis įjungtas, ir paskelbia kelią sveiką. Čia sustoja dauguma šių diagnostikų, ir tai per anksti: aktyvus VPN transportas nesako, kad šios programėlės užklausos jį naudojo, o tarpinis serveris, kuris iš tikrųjų galioja, gali būti pagal programėlę arba pasirinktas PAC failo, o ne rodomas Nustatymuose. Pradėkite nuo konkrečios programėlės ir profilio, kuriuos derinate, tada perskaitykite platformos požiūrį į kelią.

Pradėkite nuo programėlės ir jos profilio

Programėlė su darbo ženkleliu paprastai veikia atskirame profilyje su savo tinklo politika. Asmeninė naršyklė tame pačiame telefone nėra tam įrodymas, o kolegos įrenginio su kita valdymo tvarka rezultatas taip pat ne. Prieš ką nors skaitydami pasižymėkite, kuriam profiliui priklauso programėlė.

Nustatymuose išvardykite sukonfigūruotus VPN įrašus ir pasižymėkite, kam kuris priklauso. Samsung versijose meniu etiketės tarp leidimų juda, todėl aprašykite įrašą, o ne kelią į jį. Pilkas ar valdomas įrašas priklauso tam, kas administruoja įrenginį; jo išjungimas kaip eksperimentas pakeičia tai, ką bandote išmatuoti, ir gali prieštarauti politikai.

Perskaitykite būseną, kurią praneša platforma

Esamos veiklos, esančios jūsų palaikymo priemonėse, viduje, nuo API 23 ar naujesnės, tinklo būseną galima perskaityti nesiunčiant nė baito. Kvietimui reikia įprasto ACCESS_NETWORK_STATE manifestinio leidimo gebėjimams skaityti.

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.defaultProxy

Kiekviena reikšmė atsako į siaurą klausimą. Aktyvus tinklas yra numatytasis kviečiančiojo proceso tinklas tuo momentu. Gebėjimų patikra pasako, ar tas numatytasis tinklas pagrįstas VPN. Tarpinio serverio kvietimas praneša veiksmingą numatytąjį HTTP tarpinį serverį, o grąžintas objektas gali apibūdinti statinį tarpinį serverį arba PAC scenarijų.

Jei jums reikia kiekvieno tinklo rodinio, o ne numatytojo, perskaitykite to paties tinklo jungties ypatybes ir palyginkite su cm.getLinkProperties(network)?.httpProxy. Įrenginio valdymo įdiegtas tarpinis serveris rodomas numatytojo tarpinio serverio kvietime, o ne jungties ypatybėse, ir tai greitas būdas atskirti politikos duotą tarpinį serverį nuo tinklo duoto.

Išvestį laikykite savo palaikymo kanale, o ne viešoje ataskaitoje. Tarpinio serverio pagrindinio kompiuterio vardai, PAC adresai ir vidiniai priesagos atskleidžia, kaip jūsų organizacija maršrutizuoja srautą, ir nė vieno iš jų nereikia gedimui apibūdinti.

Aiškinkite kiekvieną lauką siaurai

Nulinis tinklas arba nulinis gebėjimų objektas reiškia, kad kviečiančiojo tinklo būsena nebuvo prieinama arba pasikeitė skaitymo metu. Tai nereiškia, kad VPN nėra. Traktuokite tai kaip nežinomą ir skaitykite dar kartą po to, kai programėlė atsidūrė priekiniame plane, o ne kaip neigiamą rezultatą.

VPN transportas yra silpniausias iš teigiamų. Bet kuri programėlė, turinti VpnService, sukuria vieną, įskaitant vietinę filtravimo programėlę, kuri niekada niekur nesiunčia jūsų srauto. Taigi reikšmė true sako, kad egzistuoja VPN pagrįstas numatytasis tinklas, o ne kad buvo panaudotas jūsų organizacijos išėjimas ir tikrai ne kad buvo atlikta patikra.

Nulinis numatytasis tarpinis serveris reiškia, kad ši API nepraneša jokio numatytojo HTTP tarpinio serverio veiksmingai konfigūracijai. Ji atmeta labai mažai: programėlė gali turėti savo SOCKS nuostatą, įgyvendinti savo HTTP klientą arba būti valdoma tarpinio serverio prie šliuzo, apie kurį įrenginys niekada nesužino.

PAC yra atvejis, kuris nugali vienos reikšmės atsakymą. Scenarijus gali vieną paskirties vietą nukreipti per tarpinį serverį, o kitą siųsti tiesiogiai, todėl du tos pačios programėlės prašymai per sekundę gali eiti skirtingais keliais. O programėlė, kuri savo lizdus susieja su pasirinktu tinklu arba kviečia bindProcessToNetwork, visai neprivalo laikytis numatytojo.

Ko ši momentinė nuotrauka negali pasakyti

Tai ne istorija. Niekas čia neužrašo, kokiu keliu ėjo nepavykusi užklausa, o sėkmingas skaitymas po gedimo nėra įrodymas apie gedimą. Tai ir ne inventorius: gaunate kviečiančiojo proceso numatytąjį tinklą, o ne kiekvienos programėlės privačių jungčių sąrašą.

Jis taip pat nieko nesako apie tai, kas vyksta virš lizdo. Valdomame įrenginyje nepavykstantis TLS rankos paspaudimas gali būti pasitikėjimo saugyklos problema, prisegimo neatitikimas arba vardas, kurį tarpinis serveris atmeta, ir nė vienas iš jų neatsiranda jungiamumo skaityme.

Štai kodėl abi pusės svarbios kartu: momentinė nuotrauka susiaurina, kur žiūrėti, o pačios programėlės diagnostika pasako, kas iš tikrųjų nepavyko.

Praneškite taip, kad administratorius galėtų naudoti

Nurodykite paveiktą programėlę, profilį, laiko žymą ir tikslią nepavykusią stadiją: vardų skyrimą, TCP jungtį, TLS rankos paspaudimą arba HTTP būseną. Pridėkite momentinės nuotraukos reikšmes tokias, kokios buvo perskaitytos, nulius rašydami kaip nulius, o ne kaip žodį nieko. Pasižymėkite, ar kitos to paties profilio programėlės nepavyksta taip pat, ir tai atskiria programėlės problemą nuo viso profilio kelio problemos.

Tada sustokite ir leiskite kelio savininkui atsakyti. Nelaikykite įmonės sertifikato, tarpinio serverio adreso ar VPN įrašo leidimu pašalinti valdymą ar apeiti patvirtintą maršrutą; tai paverčia palaikymo atvejį politikos incidentu.

Numatytojo tarpinio serverio sutartis trumpa ir verta vieno skaitymo, nes ji tiksliai apibrėžia, kokį tarpinį serverį praneša kvietimas, ir kiekvienas per didelis šios nuotraukos skaitymas prasideda prielaida, kad ji praneša daugiau.

Susiję straipsniai