Izslēgtā lietotne joprojām tiešsaistē? Lietotnes un maršruta noteikumi atšķiras
Android lietotnes izslēgšana no VPN to nebloķē. Atļauju saraksti, UID politikas noteikumi un nosūtītie maršruti nosaka katrs citu ceļa daļu.
Pakotnes izslēgšana ir maršrutēšanas norāde, nevis bloķēšana, tāpēc lapas, kas ielādējas pēc VPN savienojuma, ir gaidāmas, nevis kļūmes pierādījums. Izslēgšana izņem lietotni no tuneļa, nevis bloķē to, un parasto tīklu tās trafiks tiek nests. Šeit sastopas divas atšķirīgas politikas: viena izvēlas procesus, otra izvēlas galamērķus. To lasīšana šādā secībā izskaidro, kāpēc savienota ikona un strādājoša lietotne nav pretruna.
Kāpēc izslēgšana atstāj tīklu atvērtu
VpnService.Builder pieņem vai nu atļauju sarakstu, vai aizliegumu sarakstu, nekad abus. Tikai atļauju sarakstā esošās pakotnes iet caur tuneli. Aizliegumu saraksts to apgriež: katra pakotne, izņemot uzskaitītās, izmanto tuneli, un uzskaitītās saglabā fizisko ceļu. Atļauju sarakstā neuzskaitīta pakotne arī ir ārpus tuneļa, tāpēc šajā režīmā izslēgšana ir normāls stāvoklis lielākajai daļai lietotņu.
Tas padara vietējo aizlieguma ierakstu par maršrutēšanas lēmumu, nevis ugunsmūra noteikumu. Ja prasība ir neļaut lietotnei sasniegt resursdatoru, tunelim tā ir jāaptver, un serverim vai vietējai politikai trafiks ir jānoraida. Lietotnes izņemšana no tuneļa maina tikai to, kura saskarne nes tās pakotnes.
Play Store gadījums ir parastais apzinātais piemērs. Veikala pakotnes izslēgšana ļauj lejupielādēm izmantot pamata savienojumu, kad VPN izeja traucē pārsūtīšanai, un parāda, ka izslēgšana nozīmē apiešanu, nevis bloķēšanu.
Viens profils, viens saraksts
Veidotājs met izņēmumu, ja tiek izmantoti abi izsaukumi, tāpēc profils jūsu priekšā ir vai nu atļauju, vai aizliegumu saraksts. Šis viens fakts nosaka, kā lasīt katru vēlāko novērojumu. Pārbaudiet kodu vai pārvaldīto konfigurāciju pirms maršrutēšanas tabulas, jo saraksts nosaka, ko nozīmē pārējā izvade. Hibrīds profils nav stāvoklis, ko var novērot.
Atšķirība arī paredz, ko darīs tikko instalēta lietotne. Atļauju sarakstā tā paliek ārpusē, līdz kāds to pievieno, bet aizliegumu sarakstā tā pēc noklusējuma pievienojas tunelim.
Pārvaldītās konfigurācijas piedāvā to pašu izvēli ar citiem atslēgu nosaukumiem, un dažas konsoles to apraksta kā VPN režīmu katrai lietotnei, nevis kā sarakstu. Uzvedība tomēr reducējas uz šiem diviem izsaukumiem, tāpēc izsekojiet iestatījumu atpakaļ līdz pakotņu sarakstam, nevis uzticieties birkuram. Ja birka un saraksts nesakrīt, uzvar saraksts.
Sekojiet UID noteikumam līdz tuneļa tabulai
Android katrai lietotnei piešķir savu Linux lietotāja ID, un VPN pakalpojums instalē politikas noteikumus, kas atbilst UID diapazoniem. Atbilstošais trafiks tiek nosūtīts uz maršrutēšanas tabulu, kuras noklusējuma maršruts norāda uz tun ierīci. Tabulas numurs tiek piešķirts katram VPN eksemplāram, tāpēc tas mainās pēc atkārtotas savienošanas vai pēc otrā VPN profila izveides.
Noteikumu izvade ir karte. Katra rinda nosauc uzmeklēšanas tabulu, un šī tabula glabā noklusējuma maršrutu, kas nosaka, vai atbilstošās pakotnes nonāk tunelī.
adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>
Vispirms palaidiet trešo komandu, lai iegūtu UID, pēc tam atrodiet noteikumu, kura diapazons to ietver. Šis noteikums norāda uz tabulas numuru, un ip route show table <n> ar šo numuru parāda, vai pastāv noklusējuma maršruts caur tun ierīci. Ja tabulai nav noklusējuma maršruta, lietotne ir atlasīta, bet tai nav ceļa, un tā ir cita kļūme.
Šīm komandām ir vajadzīga atkļūdojama būvējums vai ierīce, kurā adb shell var nolasīt tīkla stāvokli. Ražošanas tālrunī pakešu pārvaldnieks joprojām atbild, bet maršrutēšanas pārbaude var tikt atteikta, tāpēc pierakstiet, ko varat, un pārējo uzskatiet par nepārbaudītu.
Maršruts pieprasa prefiksu, nevis lietotni
Builder.addRoute pieprasa galamērķa prefiksus tunelim. Profils, kas pievieno tikai 10.0.0.0/8 nosūta šo prefiksu caur tuneli un atstāj katru citu galamērķi fiziskajā ceļā. Tas ir parastā sadalītā tunelēšana, un tā nav atkarīga no tā, kuras lietotnes noteikumi izvēlējās.
Servera nosūtītā konfigurācija atspoguļo to pašu modeli. Atsevišķas maršrutu nosūtīšanas pievieno prefiksus, bet redirect-gateway direktīva aizstāj noklusējuma maršrutu un pārtver visu tām lietotnēm, ko tunelis aptver. Šīs direktīvas noņemšana var samazināt strādājošu tuneli līdz vienam apakštīklam bez jebkādām izmaiņām ierīcē.
Nosūtīts maršruts ar neparastu vārteju vai metrisko kvalifikatoru arī var neinstalēties. Dodiet priekšroku vienkāršajai prefiksa formai un ļaujiet serverim veikt pārsūtīšanu un NAT.
Izlasiet krustojumu pirms iestatījuma maiņas
Tunelis nes aptverto procesu un pieprasīto galamērķu krustojumu. Aptvertā lietotne, kas pieprasa adresi ārpus publicētajiem prefiksiem, iziet caur fizisko tīklu. Aizliegtā pakotne paliek ārpusē arī tad, kad tā pieprasa adresi šo prefiksu iekšpusē. Neviens gadījums nav kļūda; abi ir divas politikas, kas dara savu darbu.
VPN katrai lietotnei var arī atstāt saistīto lietotni bez savienojuma. Kad on-demand ir izslēgts un tunelis ir lejā, lietotne paliek piesaistīta VPN katrai lietotnei un tai nav rezerves ceļa, kas izskatās kā salauzta lietotne, nevis kā politikas stāvoklis. on-demand ieslēgšana vai saistījuma noņemšana pārvaldības ceļā to maina.
| Layer | What it selects | Where to look | Typical mismatch |
|---|---|---|---|
| Package list | Processes | Builder calls or managed configuration | App excluded but expected to be blocked |
| UID policy rule | Which table a UID uses | ip rule show | Tunnel icon on, app still on Wi-Fi |
| Routing table | Destinations for matched traffic | ip route show table <n> | Covered app reaches only one subnet |
| Server push | Prefixes offered to the client | Server route configuration | Tunnel shrinks after a server edit |
Diagnosticējiet vienu asi vienlaikus. Vispirms apstipriniet atļauju vai aizliegumu, otrajā vietā izlasiet instalētos UID noteikumus un tabulas, un beidzot pārbaudiet otru lietotni pret to pašu galamērķi. Otrā lietotne vienā pieprasījumā atdala procesa izvēli no galamērķa izvēles.
Pierakstiet rezultātu kā lietotni, galamērķi un tabulas numuru. Tieši šis trijnieks ir tas, kas nākamajai izmaiņai jāsaglabā.