Працоўная праграма падае на кіраваным тэлефоне, нехта правярае пераключальнік VPN, бачыць, што ён уключаны, і абвяшчае шлях здаровым. Менавіта тут спыняецца большасць такіх дыягнозаў, і гэта занадта рана: актыўны транспарт VPN не кажа, што запыты гэтай праграмы ішлі праз яго, а проксі, які фактычна дзейнічае, можа быць паасобным для праграмы або выбраным з PAC-файла, а не паказаным у Наладах. Пачніце з канкрэтнай праграмы і профілю, якія вы дыягнастуеце, потым прачытайце ўласны погляд платформы на шлях.

Пачніце з праграмы і яе профілю

Праграма з працоўнай адзнакай звычайна працуе ў асобным профілі са сваёй сеткавай палітыкай. Асабісты браўзер на тым жа тэлефоне не з'яўляецца доказам для яе, як і вынік з прылады калегі з іншым кіраваннем. Заўважце, да якога профілю належыць праграма, перш чым чытаць хоць штосьці.

У Наладах пералічыце наладжаныя запісы VPN і заўважце, хто валодае кожным. У зборках Samsung назвы меню змяняюцца паміж выпускамі, таму апісвайце запіс, а не шлях да яго. Шэры або кіраваны запіс належыць таму, хто адмініструе прыладу; выключэнне яго як эксперымент змяняе тое, што вы спрабуеце вымераць, і можа супярэчыць палітыцы.

Чытайце стан, які паведамляе платформа

Унутры існуючай актыўнасці ў вашых інструментах падтрымкі, на API 23 або пазней, стан сеткі можна прачытаць, не адправіўшы ні байта. Выклік патрабуе звычайны дазвол маніфеста ACCESS_NETWORK_STATE для чытання магчымасцей.

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

Кожнае значэнне адказвае на вузкае пытанне. Актыўная сетка — гэта сетка па змаўчанні для працэсу, які выклікае, у гэты момант. Праверка магчымасцей паведамляе, ці падмацавана гэтая сетка па змаўчанні VPN. Выклік проксі паведамляе дзейсны проксі HTTP па змаўчанні, а вернуты аб'ект можа апісваць або статычны проксі, або PAC-сцэнар.

Калі вам патрэбны прагляд па кожнай сетцы, а не па змаўчанні, прачытайце ўласцівасці сувязі той жа сеткі і параўнайце з cm.getLinkProperties(network)?.httpProxy. Проксі, усталяваны кіраваннем прылады, з'яўляецца ў выкліку проксі па змаўчанні і не з'яўляецца ва ўласцівасцях сувязі, і гэта хуткі спосаб адрозніць проксі, які дае палітыка, ад таго, які выдала сетка.

Трымайце вывад у вашым канале падтрымкі, а не ў публічнай справаздачы. Імёны хастоў проксі, адрасы PAC і ўнутраныя суфіксы раскрываюць, як ваша арганізацыя накіроўвае трафік, і ні адзін з іх не патрэбны, каб апісаць збой.

Тлумачце кожнае поле вузка

Пустая сетка або пусты аб'ект магчымасцей азначае, што стан сеткі таго, хто выклікае, быў недаступны або змяніўся падчас чытання. Гэта не азначае, што VPN няма. Разглядайце гэта як невядомае і прачытайце зноў пасля таго, як праграма выйшла на пярэдні план, а не як адмоўны вынік.

Транспарт VPN — самы слабы з станоўчых прыкмет. Любая праграма, якая трымае VpnService, стварае яго, уключна з лакальнай праграмай фільтравання, якая ніколі нікуды не адпраўляе ваш трафік. Такім чынам, значэнне true кажа, што існуе сетка па змаўчанні з падтрымкай VPN, а не што выкарыстоўваўся выхад вашай арганізацыі і тым больш не што адбывалася інспекцыя.

Пусты проксі па змаўчанні азначае, што гэты API не паведамляе пра проксі HTTP па змаўчанні для дзейснай канфігурацыі. Ён выключае вельмі мала: праграма можа мець сваю наладу SOCKS, рэалізоўваць свайго кліента HTTP або кіравацца проксі на шлюзе, пра які прылада ніколі не даведаецца.

PAC — гэта выпадак, які перамагае адказ адным значэннем. Сцэнар можа накіраваць адну прызначэнне праз проксі, а іншую — напрост, таму два запыты адной праграмы на працягу секунды могуць ісці рознымі шляхамі. І праграма, якая прывязвае свае сокеты да выбранай сеткі або выклікае bindProcessToNetwork, зусім не абавязана прытрымлівацца значэння па змаўчанні.

Што гэты здымак не можа вам сказаць

Гэта не гісторыя. Тут нічога не запісвае, які шлях прайшоў запыт, што падае, і паспяховае чытанне пасля збою не з'яўляецца доказам пра збой. Гэта таксама не інвентар: вы атрымліваеце сетку па змаўчанні для працэсу, які выклікае, а не спіс прыватных злучэнняў кожнай праграмы.

Ён таксама нічога не кажа пра тое, што адбываецца над сокетам. Рукапоціск TLS, які падае на кіраванай прыладзе, можа быць праблемай сховішча даверу, неадпаведнасцю замацавання або імем, якое адмаўляе проксі, і нішто з гэтага не з'яўляецца ў чытанні злучэння.

Вось чаму дзве паловы важныя разам: здымак звужвае, дзе шукаць, а ўласная дыягностыка праграмы кажа, што фактычна падала.

Паведамляйце пра гэта ў форме, якой можа скарыстацца адміністратар

Дайце закранутую праграму, профіль, адзнаку часу і дакладную стадыю, якая падала: развязанне імёнаў, злучэнне TCP, рукапоціск TLS або статус HTTP. Дадайце значэнні здымка такімі, якімі яны былі прачытаны, з пустымі значэннямі, запісанымі як пустыя, а не як слова няма. Заўважце, ці падаюць іншыя праграмы ў тым жа профілі гэтак жа, бо гэта аддзяляе праблему праграмы ад праблемы шляху ва ўсім профілі.

Потым спыніцеся і дайце ўладальніку шляху адказаць. Не ўспрымайце карпаратыўны сертыфікат, адрас проксі або запіс VPN як дазвол выдаліць кіраванне або абыйсці зацверджаны маршрут; гэта ператварае справу падтрымкі ў інцыдэнт палітыкі.

Дамова пра проксі па змаўчанні кароткая і вартая аднаго чытання, бо яна дакладна вызначае, пра які проксі паведамляе выклік, і кожнае празмернае чытанне гэтага здымка пачынаецца з здагадкі, што ён паведамляе больш.

Падобныя артыкулы