Izuzeta aplikacija ipak na mreži? Pravila za aplikacije i rute se razlikuju
Izuzeće Android aplikacije iz VPN-a ne blokira je. Popisi dopuštenih, UID pravila politike i gurnute rute određuju različite dijelove puta.
Izuzeće paketa je uputa za usmjeravanje, a ne blokada, pa su stranice koje se učitaju nakon spajanja VPN-a očekivane, a ne dokaz kvara. Izuzeće uklanja aplikaciju iz tunela umjesto da je blokira, a obična mreža nosi njezin promet. Ovdje se susreću dvije odvojene politike: jedna bira procese, druga bira odredišta. Čitanje u tom redu objašnjava zašto povezana ikona i aplikacija koja radi nisu proturječje.
Zašto izuzeće drži mrežu otvorenom
VpnService.Builder prihvaća ili popis dopuštenih ili popis zabranjenih, nikada oba. Paketi na popisu dopuštenih jedini idu kroz tunel. Popis zabranjenih to obrće: svaki paket osim navedenih koristi tunel, a navedeni zadržavaju fizički put. Paket koji nije naveden na popisu dopuštenih također je izvan tunela, pa je izuzeće normalno stanje za većinu aplikacija u tom načinu rada.
To čini lokalni unos zabrane odlukom o usmjeravanju, a ne pravilom vatrozida. Ako je cilj spriječiti aplikaciju da dosegne host, tunel je mora pokriti, a poslužitelj ili lokalna politika moraju odbiti promet. Uklanjanje aplikacije iz tunela mijenja samo to koje sučelje nosi njezine pakete.
Slučaj Play Store uobičajen je namjerni primjer. Izuzeće paketa trgovine pušta preuzimanja kroz osnovnu vezu kada VPN izlaz ometa prijenos, i pokazuje da izuzeće znači zaobilaženje, a ne blokadu.
Jedan profil, jedan popis
Graditelj baca iznimku ako se koriste oba poziva, pa je profil pred vama ili popis dopuštenih ili popis zabranjenih. Ta jedna činjenica određuje kako čitati svako kasnije opažanje. Provjerite kod ili upravljanu konfiguraciju prije tablice usmjeravanja, jer popis odlučuje što znači ostatak izlaza. Hibridni profil nije stanje koje možete gledati.
Razlika također predviđa što će novoinstalirana aplikacija raditi. Na popisu dopuštenih ostaje vani dok je netko ne doda, a na popisu zabranjenih pridružuje se tunelu prema zadanim postavkama.
Upravljane konfiguracije izlažu isti izbor pod različitim imenima ključeva, a neke konzole opisuju ga kao način rada VPN-a po aplikaciji, a ne kao popis. Ponašanje se ipak svodi na ta dva poziva, pa pratite postavku natrag do popisa paketa umjesto da vjerujete oznaci. Ako se oznaka i popis razilaze, popis pobjeđuje.
Slijedite UID pravilo do tablice tunela
Android svakoj aplikaciji daje vlastiti Linux korisnički ID, a VPN servis instalira pravila politike koja odgovaraju rasponima UID-a. Odgovarajući promet šalje se u tablicu usmjeravanja čija zadana ruta pokazuje na tun uređaj. Broj tablice dodjeljuje se po VPN instanci, pa se mijenja nakon ponovnog spajanja ili nakon stvaranja drugog VPN profila.
Izlaz pravila je karta. Svaki red imenuje tablicu pretraživanja, a ta tablica drži zadanu rutu koja odlučuje ulaze li odgovarajući paketi u tunel.
adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>
Prvo pokrenite treću naredbu da dobijete UID, zatim nađite pravilo čiji raspon ga sadrži. To pravilo pokazuje na broj tablice, a ip route show table <n> s tim brojem pokazuje postoji li zadana ruta kroz tun uređaj. Ako tablica nema zadanu rutu, aplikacija je odabrana ali nema put, što je druga vrsta kvara.
Ove naredbe traže build koji se može otklanjati pogreške ili uređaj na kojem adb shell može čitati stanje mreže. Na proizvodnom telefonu upravitelj paketa ipak odgovara, ali pregled usmjeravanja može biti odbijen, pa zabilježite što možete i ostatak tretirajte kao nepotvrđen.
Ruta traži prefiks, a ne aplikaciju
Builder.addRoute traži prefikse odredišta za tunel. Profil koji dodaje samo 10.0.0.0/8 šalje taj prefiks kroz tunel i ostavlja svako drugo odredište na fizičkom putu. To je obično razdvojeno tuneliranje i neovisno je o tome koje su aplikacije pravila odabrala.
Konfiguracija koju gura poslužitelj preslikava isti model. Pojedinačna guranja ruta dodaju prefikse, dok redirect-gateway direktiva zamjenjuje zadanu rutu i hvata sve za aplikacije koje tunel pokriva. Uklanjanje te direktive može smanjiti radni tunel na jednu podmrežu bez ikakve promjene na uređaju.
Gurnuta ruta s neuobičajenim gatewayom ili metričkim kvalifikatorom također se možda neće instalirati. Preferirajte običan oblik prefiksa i pustite poslužitelju da se bavi prosljeđivanjem i NAT-om.
Pročitajte presjek prije nego promijenite postavku
Tunel nosi presjek pokrivenih procesa i traženih odredišta. Pokrivena aplikacija koja traži adresu izvan objavljenih prefiksa izlazi fizičkom mrežom. Zabranjeni paket ostaje vani čak i kada traži adresu unutar tih prefiksa. Nijedan slučaj nije greška; oba su dvije politike koje rade svoj posao.
VPN po aplikaciji može i povezanu aplikaciju ostaviti bez veze. Kada je on-demand isključen i tunel ne radi, aplikacija ostaje vezana za VPN po aplikaciji i nema rezervni put, što izgleda kao pokvarena aplikacija, a ne kao stanje politike. Uključivanje on-demand-a ili uklanjanje veze kroz upravljanje to mijenja.
| 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 |
Dijagnosticirajte jednu os odjednom. Prvo potvrdite dopuštanje ili zabranu, drugo pročitajte instalirana UID pravila i tablice, a na kraju testirajte drugu aplikaciju prema istom odredištu. Druga aplikacija razdvaja odabir procesa od odabira odredišta u jednom zahtjevu.
Zapišite rezultat kao aplikacija, odredište i broj tablice. Taj trojac je ono što sljedeća promjena mora sačuvati.