Android қолданбасы VPN арқылы жұмыс істеуден бас тартады: қай қабат шешеді
Қолданба VPN-нан жергілікті тасымал тексерісі, сервер жағындағы мекенжай ережесі немесе өз саясаты бойынша бас тартуы мүмкін. Шығу жолдарын өзгерту алдында осы үшеуін ажыратыңыз.
Android қолданбасы туннель көтерілген сәтте жұмысын тоқтатса, үш түрлі нәрсе кінәлі болуы мүмкін және олар ұқсас көрінетін ақауларды туғызады. Қолданба телефонның өз желі күйін оқып, жергілікті түрде бас тартуы мүмкін. Сервер сіз келген мекенжайды жіктеп, оны қабылдамауы мүмкін. Немесе бас тартудың VPN-ге ешқандай қатысы болмауы мүмкін. Төмендегі тәртіп бірдеңе өзгертуден бұрын дәлелдерді жинайды, өйткені шығуды ауыстыру ең қымбат қадам және тексеріс жергілікті болса, көмектесу ықтималдығы ең төмен қадам.
1-қадам: қолданба қашан бас тартатынын анықтаңыз
Уақыт – бірінші айыру белгісі. Журнал буферін тазалап, ақауды қайталаңыз және қолданба шағымданбай тұрын не істегенін қараңыз:
adb logcat -c
# reproduce the failure in the app
adb logcat -d | grep -iE 'vpn|network|connect|http' | tail -60
Егер қолданба кез келген сыртқы сұранысқа әрекет жасалмай тұрып бас тартса, сіз жергілікті шешімді көріп отырсыз. Егер ол қосылып, бірдеңе жіберіп, содан кейін қате көрсетсе, бас тарту екінші жақтан келген. Егер туннель өшірулі кезде де қолданба дәл солай сәтсіз болса, VPN ешқашан айнымалы болмаған.
Бұл уақытты дәлел ретінде қарастырыңыз, растау ретінде емес. Қолданба кэштелген жауапты қайта ойнатуы мүмкін, ал фондық сұраныстар сіз қарағанға дейін сәтті немесе сәтсіз аяқталуы мүмкін. Соңғы сәтті сұраныс пен қатенің уақыт белгілерін жазып алыңыз, тек хабарлама шыққан сәтті емес.
2-қадам: телефонның желіге өз көзқарасын оқыңыз
Android VPN күйін желі мүмкіндігі ретінде ұсынады, сондықтан қолданбаға туннельдің белсенді екенін байқау үшін коммерциялық провайдерлер тізімі қажет емес. Ол байланыс қызметінен ағымдағы желі қандай екенін сұрайды, ал жауапта VPN тасымал биті болады:
val cm = context.getSystemService(ConnectivityManager::class.java)
val caps = cm.getNetworkCapabilities(cm.activeNetwork)
val onVpn = caps?.hasTransport(NetworkCapabilities.TRANSPORT_VPN) == true
Бұл тексеріс жергілікті және арзан, ол «бұл қолданба VPN арқылы жұмыс істемейді» деген есептердің бүкіл класын қашықтан жіктеусіз түсіндіреді. Қолданба көре алатын нәрсе әлі де өз желілік контекстіне тәуелді, сондықтан әрбір қолданба құрылғыдағы әрбір профильді тексереді деп ойламаңыз.
Жұмыс станциясынан сіз сынақ құрылғысында adb shell dumpsys connectivity арқылы және VPN желі жазбасын іздеу арқылы дәл осы күйді көре аласыз. Туннель көтерілген жүгірісті туннель түсірілген жүгіріспен салыстырыңыз және екі шығысты да сақтаңыз.
3-қадам: сервер шын мәнінде нені көретінін оқыңыз
Екінші бақылаушы – қызмет. Ол келіп түскен бастапқы мекенжайды көреді және мекенжайға, оның артындағы хостинг желісіне, аймаққа, операторға немесе тіркелгі мен құрылғыға байланысты сигналдарға қарай әрекет ете алады. Олардың ешқайсысы бірегей сәйкестік емес, ал ортақ мекенжайлау жанама блоктауларды қалыпты жағдайға айналдырады: бір шектелген мекенжай сол аударманың артындағы байланысы жоқ пайдаланушыларды да істен шығаруы мүмкін.
Мекенжайды қолданба қолданатын сол жолмен алыңыз, ноутбуктегі браузерден емес. Телефонда мекенжай жаңғырығы қызметіне қарапайым сұраныс алыс жақтың нені алатынын көрсетеді, ал оны ұялы желі арқылы жіберілген сұраныспен салыстыру мекенжайдың тіпті өзгергенін білдіреді.
Егер қолданба ұялы желіде жұмыс істеп, сол тіркелгімен туннельде сәтсіз болса, бас тарту алыс жақта немесе қолданбаның өз саясатында. Егер екеуінде де сәтсіз болса, VPN айырушы фактор емес және соңғы нүктелерді сынауды тоқтату керек.
4-қадам: дәлелдерді үш үкімнің бірімен сәйкестендіріңіз
Үш комбинация барлық дерлік есептерді қамтиды. Туннель белсенді кезде сыртқы әрекетсіз бас тарту жергілікті тасымал тексерісін көрсетеді. Сыртқа шығып, қатемен, белгілі бір хостта уақыттың бітуімен немесе аймақ хабарламасымен қайтатын сұраныс алыс жақты көрсетеді. Туннельсіз ұялы желіде қайталанатын ақау тіркелгіге, қолданба нұсқасына немесе қызметтің өз саясатына көрсетеді, және ешқандай VPN өзгерісі оны қозғамайды.
Үкімді оны тудырған дәлелмен бірге жазыңыз. Бұл қадамның құндылығы – ол телефонның өзінде жүретін тексерісті түзету үшін біреудің шығу түйіндерін төрт рет ауыстыратын циклді тоқтатады.
Ол сондай-ақ тұжырымдарды адал ұстайды. Өз хостингіңіз соңғы нүктені және оның интернет шығуын өзгертеді; ол Android-ке VPN желісінің белсенді екенін ұмыттырмайды және мекенжайларды жіктейтін қызметтің қабылдауына кепілдік бермейді. Жергілікті сүзгі өз VPN желіңізде де коммерциялық желідегідей оңай іске қосылуы мүмкін.
5-қадам: қолдау көрсетілген жолмен жүріп, оны тексеріңіз
Өнімнің құжатталған саясатынан және оның қолдау жетекшісінен бастаңыз. Клиент нұсқасын, нақты хабарламаны және ақаудың тар уақыт терезесін жіберіңіз; қатенің бар екенін дәлелдеу үшін ғана толық трафик жазбаларын немесе тіркелгі деректерін жібермеңіз.
Егер қызмет тікелей қатысуға рұқсат етсе және құрылғы саясаты рұқсат етсе, онда әрбір қолданба бойынша шығару – қолдау көрсетілген механизм, және ол туннельді жасырудың орнына сол қолданбаны әдейі туннельден шығарады. Сонда қолданба трафигі өз жолымен шығады, бұл біреу мойнына алуға тиіс саяси шешім. VPNсіз блоктайтын конфигурацияда шығарылған қолданба жай ғана байланысты жоғалтуы мүмкін, сондықтан жұмыс істейді деп уәде бермес бұрын сол комбинацияны сынаңыз.
Кез келген өзгерістен кейін бірінші қадамның уақыт сынағын қайталаңыз, қолданбаның жұмыс істеп тұрғанын растаңыз және барлық басқа қолданбалардың әлі де туннельді қолданатынын растаңыз. Содан кейін алдыңғы конфигурацияны қалпына келтіріп, ақаудың қайталанатынын тексеріңіз, өйткені қайталай алмайтын түзету – қайта кездесетін кездейсоқтық.