Marcou uma app no OpenVPN? A base da lista é que decide
O mesmo pacote marcado significa incluir ou excluir conforme a base da lista. Escolha primeiro só-incluir, reconecte e depois teste todo o fluxo.
A caixa de seleção parece a decisão inteira, e no Android não é. O mesmo pacote marcado significa “só esta app usa a VPN” numa base só-incluir e “esta app ignora a VPN” numa base que exclui as selecionadas. As pessoas instalam um cliente, encontram uma lista rotulada Apps permitidas, marcam o único pacote que lhes importa e saem com uma política que faz o contrário. Trocar de cliente raramente ajuda; escolher a base antes de mexer na lista ajuda.
A base é a política, não a caixa de seleção
No âmbito do VpnService do Android, um cliente configura o encaminhamento por app com addAllowedApplication ou addDisallowedApplication. O primeiro limita o túnel aos pacotes listados, o segundo encaminha tudo exceto esses. Os clientes envolvem os dois numa interface que pode parecer quase idêntica, e alguns rotulam a secção pela lista em vez de pelo modo, por isso o título da secção sozinho não diz qual base está ativa.
Leia o controlo de modo acima da lista, não o título. No cliente OpenVPN for Android original, a lista de apps permitidas tem uma base só-incluir e uma base que exclui as selecionadas, e uma compilação de marca pode formular as duas de outra maneira mantendo os mesmos dois comportamentos. Uma captura de ecrã de outro cliente, ou de uma versão anterior do mesmo, não é prova sobre o modo em que está.
| What the client shows | What a checked app gets |
|---|---|
| Allowed apps, include-only baseline | The app uses the tunnel; unchecked apps do not |
| Allowed apps, exclude-selected baseline | The app bypasses the tunnel; everything else uses it |
| No list configured | Client or profile default, commonly all apps |
Essa tabela é o mito inteiro. Marcar a app é uma afirmação sobre um pacote; a base decide se a afirmação é “incluir” ou “excluir”.
Escolha o modo, depois o pacote
Trabalhe nesta ordem, porque uma seleção feita numa base pode sobreviver a uma mudança de modo e inverter o efeito em silêncio:
- Identifique o pacote real e se é a cópia pessoal ou a do perfil de trabalho.
- Abra as definições de seleção de apps do perfil de VPN exato com que se liga.
- Defina a base cujo significado é “só as apps selecionadas usam a VPN”.
- Inclua o pacote pretendido e deixe apps não relacionadas fora do conjunto.
- Reconecte para que o cliente reconstrua a interface com a nova lista.
O perfil importa tanto como o pacote. Um cliente pode ter vários perfis, e a seleção por app pertence ao perfil com que se liga de facto; editar um perfil que nunca usa não muda nada. Num dispositivo gerido, o perfil de trabalho é um utilizador separado com a sua própria cópia da app e a sua própria política, por isso a instância pessoal estar dentro do túnel não diz nada sobre a instância de trabalho.
Reconecte antes de julgar o resultado
O VpnService lê as listas de apps quando a interface do túnel é estabelecida. Um túnel em execução não adota necessariamente uma edição da lista, e os clientes diferem quanto a reconstruir automaticamente ou esperar que se desligue e ligue outra vez.
Se a mudança parecer não fazer nada, teste a reconexão antes de duvidar da lista. Depois faça um pedido novo em vez de recarregar uma página que já estava aberta: uma app que mantém uma ligação estabelecida é um mau objeto de teste, e o resultado que vê pode pertencer à interface antiga.
O seu fluxo pode sair da app
Uma app pode passar a tarefa a um navegador para início de sessão, a um visualizador de documentos ou a um destino de partilha. Numa base só-incluir esses auxiliares ficam fora do túnel, por isso um fluxo pode falhar a meio mesmo que a primeira app estivesse bem configurada. Inclua o auxiliar apenas se o fluxo precisar mesmo dele, e acrescente-o de propósito em vez de o descobrir durante uma demonstração.
A seleção por app também não substitui a política de rotas da própria ligação. O perfil continua a ter de transportar os prefixos de destino e as famílias de endereços que a app usa, e o gateway continua a ter de permitir o serviço. Uma app corretamente listada com um destino inalcançável parece igual a uma lista mal configurada.
Teste os dois lados e depois escreva a política
Teste um pedido novo na app incluída e outro numa app que se espera ficar de fora. Compare o endereço de saída e o acesso a um recurso privado, e repita após uma reconexão. Se a sua organização usar a política do Android de bloquear ligações sem VPN, uma app excluída pode ficar totalmente bloqueada em vez de ir direta; isso é a política a funcionar, não uma falha a contornar.
Registe o modo, os nomes dos pacotes com o perfil, que apps devem contornar, que famílias de endereços o túnel transporta e o que deve acontecer quando o túnel está em baixo. Se o cliente não conseguir exprimir o fluxo com clareza, escolha um conjunto de apps aprovadas mais amplo ou uma política de perfil gerido em vez de editar regras de firewall ao nível root, o que não faz parte do mecanismo por app suportado pelo Android.