Android-та қолданба бойынша VPN: қолданбаны алып тастау оны бұғаттау емес
Экрандағы қолданба бойынша тізім бір туннель иесіне тиесілі, ал қолданбаны алып тастау оны сол туннельді айналып өткізеді, желіден шығармайды. Сол жерден бастаңыз.
Екі адам бір сұрақ қойып, бір-біріне сәйкеспейтін жауап алады, өйткені олар әртүрлі жерде тұр. Біреуінің алдында жүйенің VPN параметрлері экраны ашық және ол қолданбалар тізімін өңдеп отыр. Екіншісі редакторда VpnService.Builder.addDisallowedApplication() жазып отыр. Екеуі де мұны қолданба бойынша VPN сүзгісі деп атайды. Оның тек біреуі ғана өзі сипаттап отырған басқаруға ие, және екеуі де ештеңені бұғаттап отырған жоқ.
Пайдаланушы көретін экраннан бастаңыз
Параметрлерді ашып, VPN жазбасын тауып, шын мәнінде белсенді қосылымды қараңыз. Егер клиент қолданба бойынша тізім ұсынса, ол тізім клиенттің өз туннеліне тиесілі. Платформа басқа VPN-ның қолданба таңдауын оқи алатын немесе өзгерте алатын ортақ API жарияламайды, сондықтан екінші қолданба бұл тізімді пайдаланушы үшін түзете алмайды.
Бұл жолдың бірінші айыры. Егер орнатылған VPN-да мұндай параметр болмаса, кодпен айналып өтетін ештеңе жоқ: мүмкіндік туннельге ие өнімде жоқ. Егер болса, дұрыс түзету сол экранда, оны аша алатын адам жасайды.
Пакетті туннельге дейін бақылаңыз
Өз қолданбаңыз туннель құрған кезде ол TUN интерфейсін жасайды және қай қолданбалардың трафигі оған кіретінін мәлімдейді. Мүшелік шақырулары интерфейс орнатылмай тұрып жасалады, ал одан кейін ережелер жиынтығы сол сессия үшін бекітіледі:
val builder = VpnService.Builder()
builder.addAddress("10.8.0.2", 32)
builder.addRoute("0.0.0.0", 0)
builder.addDisallowedApplication("com.example.bypass")
val tun = builder.establish() // membership decided hereБұл шақырулар тек сіздің қолданбаңыз жаңа ғана жасаған туннельге қатысты, басқа ештеңеге емес. Олар құрылғы ауқымындағы саясат емес, басқа клиенттер үшін сақталмайды және басқа біреудің VPN-ына жете алмайды. Пакетті шешу мүмкін болмағандықтан құрушының шақыруы ерекшелік лақтырса, интерфейс ешқашан орнатылмайды, бұл таза сәтсіздік, үнсіз емес.
Неге алып тастау бұғаттау сияқты көрінді
Алып тасталған қолданба сіздің туннеліңізді айналып, астыңғы желіге жіберіледі. Бұл оны бұғаттаудың керісі: трафик әлі де құрылғыдан шығады, тек сіз басқаратын интерфейстен тыс. Брандмауэр стиліндегі қолданба керісінше жасайды. Ол қолданба трафигін өз туннеліне қабылдап, содан кейін пакеттерді тастайды немесе оларды жіберуден бас тартады, сондықтан интерфейс бірдей, ал саясат бағыты кері айналған.
Бұл айналдырудың артындағы жұмыс конфигурация жалаушасы емес. Сіз туннель сипаттаушысынан IP пакеттерін оқисыз, ағын бойынша шешім қабылдайсыз, содан кейін оларды қорғалған сокет арқылы жібересіз немесе тастайсыз. Сіз өңдемегеннің бәрі жай ғана тоқтайды, сондықтан жартылай дайын туннель жұмыс істейтін сүзгі емес, бүлінген желі болып көрінеді. Мақсатыңыз бұғаттау болса, пакеттерді өңдеуді, алдыңғы жоспардағы қызметті және жіктей алмайтын трафик үшін жазбаша саясатты жоспарлаңыз.
Өзіңіз құрғанда не бұзылады
Android әдетте бір уақытта тек бір белсенді VPN-ға рұқсат береді, сондықтан сүзгіш туннеліңіз бен құпиялылық туннелі бір орынға таласады, егер өнімдер тізбектеуді қолдамаса. Әрқашан қосулы VPN байланыстарды бұғаттаумен сәтсіздік тәсілін осында маңызды болатын түрде өзгертеді: туннельге кіре алмайтын трафик тікелей жіберілудің орнына тасталады, мұны ағып кетудің алдын алу дизайны қалайды және жөндеу сессиясы сирек күтеді.
Пакеттердің көрінуі екінші тұзақ. Қолданбаның пакет атауын шешу NameNotFoundException қатесімен сәтсіз болуы мүмкін, ал жаңа Android нұсқаларында көретін пакеттер жиынтығы сіз мәлімдеген сұрауларға байланысты. Әр атау шешіледі деп болжаудың орнына ерекшелікті өңдеңіз және қолданбалар орнатылғанда немесе жойылғанда тізімді қайта оқыңыз, оны мәңгі кэште сақтаудың орнына.
Басқарылатын құрылғылар үшінші иесін қосады. Кәсіпорындық мобильділік саясаты қолданба бойынша VPN немесе әрқашан қосулы профиль орната алады, ал қарапайым қолданба оны қайта анықтай алмайды. Өз кодыңызды жөндеуден бұрын құрылғының басқарылатынын тексеріңіз, өйткені бұл жағдайда өзгертпек болған тізімді телефон ұстаған ешкім өңдей алмауы мүмкін.
Өзіңіз басқаратын қолданбамен сынаңыз
Сүзгілегіңіз келетін қолданбамен сынамаңыз. Желілік мінез-құлқын бақылай алатын екінші қолданбаны пайдаланыңыз және оның трафигі сіздің туннеліңіз арқылы шығатынын, ал мақсаттың трафигі шықпайтынын тексеріңіз. Екеуі де іште қалса, саясат жұмыс істейді және мақсат алып тасталған; ешқайсысы шықпаса, туннельдің өзі дұрыс емес, ал қолданбалар тізімі мәселе емес.
Содан кейін үш нәрсенің қайсысын шынымен құрып жатқаныңызды шешіңіз. Қолданба бойынша туннель — құрушы API, тізім профиліңіздің бөлігі. Құрылғы брандмауэры — пакеттерді өңдеу және қорғай алатын өмірлік цикл. Басқа біреудің VPN-ын өзгерту мүлде қолдау көрсетілмейтін жол, және ондағы адал жауап — бұл параметр сол өнімге тиесілі.