Пакетті шығару блоктау емес, маршруттау нұсқауы, сондықтан VPN қосылғаннан кейін жүктелетін беттер күтілетін жағдай, ақау дәлелі емес. Шығару қолданбаны блоктаудың орнына туннельден алып тастайды, ал кәдімгі желі оның трафигін тасымалдайды. Мұнда екі бөлек саясат тоғысады: біреуі процестерді таңдайды, екіншісі межелерді таңдайды. Оларды осы ретпен оқу қосылған белгіше мен жұмыс істеп тұрған қолданбаның неге қайшылық еместігін түсіндіреді.

Неге шығару желіні ашық ұстайды

VpnService.Builder не рұқсат тізімін, не тыйым тізімін қабылдайды, екеуін бірге ешқашан қабылдамайды. Туннельден тек рұқсат тізіміндегі пакеттер өтеді. Тыйым тізімі мұны кері айналдырады: тізімдегілерден басқа әрбір пакет туннельді пайдаланады, ал тізімдегілер физикалық жолды сақтайды. Рұқсат тізімінде жоқ пакет те туннельден тыс қалады, сондықтан бұл режимде шығару көптеген қолданба үшін қалыпты жағдай.

Бұл жергілікті тыйым жазбасын firewall ережесі емес, маршруттау шешіміне айналдырады. Егер талап қолданбаның хостқа жетуін тоқтату болса, туннель оны қамтуы керек, ал сервер немесе жергілікті саясат трафикті қабылдамауы керек. Қолданбаны туннельден алу тек оның пакеттерін қай интерфейс тасымалдайтынын өзгертеді.

Play Store жағдайы — әдеттегі әдейі мысал. Дүкен пакетін шығару, VPN шығысы тасымалдауға кедергі келтіргенде жүктеулерге негізгі қосылымды пайдалануға мүмкіндік береді және шығарудың блоктау емес, айналып өту екенін көрсетеді.

Бір профиль, бір тізім

Екі шақыру да қолданылса, құрастырушы ерекшелік лақтырады, сондықтан алдыңыздағы профиль не рұқсат, не тыйым тізімі. Осы бір факт әрбір кейінгі бақылауды қалай оқу керектігін анықтайды. Маршруттау кестесінен бұрын кодты немесе басқарылатын конфигурацияны тексеріңіз, себебі тізім шығыстың қалған бөлігінің мағынасын шешеді. Гибридті профиль — қарап отыруға болатын күй емес.

Айырмашылық жаңадан орнатылған қолданбаның не істейтінін де болжайды. Рұқсат тізімінде ол біреу қоспайынша сыртта қалады, ал тыйым тізімінде әдепкі бойынша туннельге қосылады.

Басқарылатын конфигурациялар сол таңдауды басқа кілт атауларымен көрсетеді, ал кейбір консольдар оны тізім емес, әр қолданбаға арналған VPN режимі деп сипаттайды. Мінез-құлық бәрібір сол екі шақыруға саяды, сондықтан белгіге сенудің орнына параметрді пакеттер тізіміне дейін қадағалаңыз. Егер белгі мен тізім сәйкеспесе, тізім жеңеді.

UID ережесін туннель кестесіне дейін бақылаңыз

Android әр қолданбаға өзінің Linux пайдаланушы ID-ін береді, ал VPN қызметі UID ауқымдарына сәйкес келетін саясат ережелерін орнатады. Сәйкес трафик әдепкі маршруты tun құрылғысына бағытталған маршруттау кестесіне жіберіледі. Кесте нөмірі әр VPN данасы үшін бөлінеді, сондықтан қайта қосылғаннан немесе екінші VPN профилі жасалғаннан кейін өзгереді.

Ережелердің шығысы — карта. Әр жол іздеу кестесін атайды, ал сол кесте сәйкес пакеттердің туннельге кіретінін шешетін әдепкі маршрутты ұстайды.

adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>

UID алу үшін алдымен үшінші пәрменді іске қосыңыз, содан кейін ауқымы оны қамтитын ережені табыңыз. Сол ереже кесте нөміріне нұсқайды, және ip route show table <n> осы нөмірмен tun құрылғысы арқылы әдепкі маршруттың бар-жоғы көрсетіледі. Егер кестеде әдепкі маршрут болмаса, қолданба таңдалған, бірақ жолы жоқ, бұл басқа ақау.

Бұл пәрмендерге жөндеуге болатын құрастырма немесе adb shell желі күйін оқи алатын құрылғы қажет. Өндірістік телефонда пакет менеджері әлі жауап береді, бірақ маршруттауды тексеру қабылданбауы мүмкін, сондықтан қолыңыздан келгенін жазып алыңыз, қалғанын расталмаған деп қараңыз.

Маршрут қолданбаны емес, префиксті талап етеді

Builder.addRoute туннель үшін меже префикстерін талап етеді. Тек 10.0.0.0/8 қосатын профиль сол префиксті туннель арқылы жібереді және қалған әрбір межені физикалық жолда қалдырады. Бұл кәдімгі бөлінген туннельдеу және ережелер қандай қолданбаларды таңдағанына тәуелді емес.

Серверден жіберілген конфигурация сол модельді көрсетеді. Жеке маршрут жіберулері префикстерді қосады, ал redirect-gateway директивасы әдепкі маршрутты алмастырады және туннель қамтитын қолданбалар үшін бәрін ұстап қалады. Бұл директиваны алып тастау жұмыс істеп тұрған туннельді құрылғыда ешбір өзгеріссіз бір қосалқы желіге дейін қысқартуы мүмкін.

Ерекше шлюз немесе метрикалық квалификаторы бар жіберілген маршрут та орнатылмауы мүмкін. Префикстің қарапайым түрін таңдаңыз және қайта бағыттау мен NAT-ты серверге қалдырыңыз.

Параметрді өзгертудің алдында қиылысты оқыңыз

Туннель қамтылған процестер мен талап етілген межелердің қиылысын тасымалдайды. Жарияланған префикстерден тыс мекенжай сұраған қамтылған қолданба физикалық желі арқылы шығады. Тыйым салынған пакет сол префикстердің ішіндегі мекенжайды сұраса да сыртта қалады. Екеуі де ақау емес; екеуі де өз жұмысын істеп жатқан екі саясат.

Әр қолданбаға арналған VPN байланысқан қолданбаны қосылымсыз да қалдыруы мүмкін. on-demand өшірулі болып, туннель төменде тұрса, қолданба әр қолданбаға арналған VPN-ге байланған күйде қалады және қосалқы жолы жоқ, бұл саясат күйіне емес, сынған қолданбаға ұқсайды. on-demand-ды қосу немесе байланысты басқару арқылы жою мұны өзгертеді.

LayerWhat it selectsWhere to lookTypical mismatch
Package listProcessesBuilder calls or managed configurationApp excluded but expected to be blocked
UID policy ruleWhich table a UID usesip rule showTunnel icon on, app still on Wi-Fi
Routing tableDestinations for matched trafficip route show table <n>Covered app reaches only one subnet
Server pushPrefixes offered to the clientServer route configurationTunnel shrinks after a server edit

Бір уақытта бір осьті диагностикалаңыз. Алдымен рұқсат немесе тыйымды растаңыз, екіншіден орнатылған UID ережелері мен кестелерді оқыңыз, соңында сол межеге қарсы екінші қолданбаны сынаңыз. Екінші қолданба бір сұраныста процесс таңдауын меже таңдауынан ажыратады.

Нәтижені қолданба, меже және кесте нөмірі ретінде жазыңыз. Келесі өзгеріс дәл осы үштікті сақтауы керек.

Қатысты мақалалар