Una aplicació exclosa segueix en línia? Les regles per aplicació i de ruta difereixen
Excloure una aplicació d'Android d'una VPN no la bloqueja. Les llistes d'autorització, les regles d'UID i les rutes enviades decideixen cadascuna una part diferent del camí.
Excloure un paquet és una instrucció d'encaminament, no un bloqueig, així que les pàgines que es carreguen després de connectar la VPN són esperades i no una prova de fallada. L'exclusió treu l'aplicació del túnel en comptes de bloquejar-la, i la xarxa ordinària transporta el seu trànsit. Dues polítiques separades es troben aquí: una tria processos, l'altra tria destinacions. Llegir-les en aquest ordre explica per què una icona connectada i una aplicació que funciona no són una contradicció.
Per què una exclusió manté la xarxa oberta
VpnService.Builder accepta o bé una llista d'autorització o bé una llista de denegació, mai totes dues. Els paquets d'una llista d'autorització són els únics encaminats pel túnel. Una llista de denegació ho inverteix: cada paquet excepte els llistats usa el túnel, i els llistats conserven el camí físic. Un paquet no llistat sota una llista d'autorització també queda fora del túnel, així que l'exclusió és l'estat normal per a la majoria d'aplicacions en aquest mode.
Això converteix una entrada local de denegació en una decisió d'encaminament, no en una regla de tallafocs. Si el requisit és aturar que una aplicació arribi a un amfitrió, el túnel l'ha de cobrir i el servidor o una política local ha de refusar el trànsit. Treure una aplicació del túnel només canvia quina interfície transporta els seus paquets.
El cas de Play Store és l'exemple deliberat habitual. Excloure el paquet de la botiga permet que les baixades usin la connexió subjacent quan la sortida de la VPN interfereix en les transferències, i mostra que exclusió vol dir desviament, no bloqueig.
Un perfil, una llista
El constructor llança una excepció si s'usen totes dues crides, així que el perfil que teniu al davant és o bé de llista d'autorització o bé de denegació. Aquest sol fet determina com llegir cada observació posterior. Comproveu el codi o la configuració gestionada abans de la taula d'encaminament, perquè la llista decideix què significa la resta de la sortida. Un perfil híbrid no és un estat que pugueu estar mirant.
La distinció també prediu què farà una aplicació recent instal·lada. Sota una llista d'autorització es queda fora fins que algú l'afegeix, mentre que sota una llista de denegació s'uneix al túnel per defecte.
Les configuracions gestionades exposen la mateixa tria sota noms de clau diferents, i algunes consoles ho descriuen com a mode VPN per aplicació en lloc de com una llista. El comportament encara es redueix a aquestes dues crides, així que resseguiu el paràmetre fins a la llista de paquets en lloc de confiar en l'etiqueta. Si l'etiqueta i la llista no coincideixen, guanya la llista.
Seguiu la regla d'UID fins a la taula del túnel
Android dóna a cada aplicació el seu propi identificador d'usuari de Linux, i el servei de VPN instal·la regles de política que coincideixen amb rangs d'UID. El trànsit coincident s'envia a una taula d'encaminament la ruta per defecte de la qual apunta al dispositiu tun. El número de taula s'assigna per instància de VPN, així que canvia després de reconectar o després de crear un segon perfil de VPN.
La sortida de les regles és el mapa. Cada línia anomena una taula de consulta, i aquesta taula conté la ruta per defecte que decideix si els paquets coincidents entren al túnel.
adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>
Executeu primer la tercera ordre per obtenir l'UID i després trobeu la regla el rang de la qual el conté. Aquesta regla apunta a un número de taula, i ip route show table <n> amb aquest número mostra si existeix una ruta per defecte a través del dispositiu tun. Si la taula no té cap ruta per defecte, l'aplicació està seleccionada però no té camí, cosa que és una fallada diferent.
Aquestes ordres necessiten una compilació depurable o un dispositiu on adb shell pugui llegir l'estat de la xarxa. En un telèfon de producció el gestor de paquets encara respon, però la inspecció d'encaminament pot ser refusada, així que captureu el que pugueu i tracteu la resta com a no verificat.
Una ruta reclama un prefix, no una aplicació
Builder.addRoute reclama prefixos de destinació per al túnel. Un perfil que només afegeix 10.0.0.0/8 envia aquest prefix pel túnel i deixa cada altra destinació al camí físic. Això és tunelització dividida ordinària, i és independent de quines aplicacions han seleccionat les regles.
La configuració enviada pel servidor reflecteix el mateix model. Els enviaments de ruta individuals afegeixen prefixos, mentre que una directiva redirect-gateway substitueix la ruta per defecte i captura tot per a les aplicacions que cobreix el túnel. Treure aquesta directiva pot reduir un túnel funcional a una sola subxarxa sense cap canvi al dispositiu.
Una ruta enviada amb una passarel·la o un qualificador mètric inusual també pot no instal·lar-se. Preferiu la forma simple de prefix i deixeu que el servidor s'encarregui de l'reenviament i del NAT.
Llegiu la intersecció abans de canviar un paràmetre
El túnel transporta la intersecció dels processos coberts i les destinacions reclamades. Una aplicació coberta que demana una adreça fora dels prefixos publicats surt per la xarxa física. Un paquet denegat es queda fora fins i tot quan demana una adreça dins d'aquests prefixos. Cap dels dos casos és un error; tots dos són les dues polítiques fent la seva feina.
Una VPN per aplicació també pot deixar una aplicació associada sense connectivitat. Quan on-demand està desactivat i el túnel està caigut, l'aplicació continua lligada a la VPN per aplicació i no té cap alternativa, cosa que sembla una aplicació espatllada més que un estat de política. Activar on-demand, o treure l'associació mitjançant la gestió, ho canvia.
| 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 |
Diagnostiqueu un eix alhora. Confirmeu primer autorització o denegació, llegiu després les regles d'UID i les taules instal·lades, i proveu finalment una segona aplicació contra la mateixa destinació. La segona aplicació separa la selecció de procés de la selecció de destinació en una sola petició.
Anoteu el resultat com a aplicació, destinació i número de taula. Aquesta tupla és el que el proper canvi ha de preservar.