O ícone de VPN diz conectado: o que ele realmente diz
Um ícone conectado pode significar apenas o túnel de um app ou uma sonda bem-sucedida. Defina o escopo, trate leituras antigas como desconhecidas e mantenha o bloqueio separado.
Um ícone de VPN verde é uma afirmação sobre algo, e a pergunta útil é sobre o quê. Em um celular pode refletir o túnel de um cliente, o transporte da rede atual ou uma única solicitação bem-sucedida a uma página interna. Essas observações vêm de fontes diferentes, atualizam-se em ritmos diferentes e podem discordar na mesma tela. Por isso um ícone pode parecer saudável enquanto o navegador à sua frente falha.
Defina o escopo antes de ler a cor, ou a cor responderá a uma pergunta que ninguém fez.
O ícone responde a uma pergunta mais estreita do que você pensa
Comece com um escopo declarado, como o navegador pessoal que usa o túnel pessoal aprovado. O túnel do perfil de trabalho não responde a essa pergunta para um app pessoal, e uma configuração de VPN por app pode excluir justamente o navegador que você está testando. Um cliente de filtragem local pode mostrar conectado enquanto não envia nada a um gateway remoto, porque o túnel dele termina no dispositivo.
No Android, os callbacks de rede por trás de um indicador relatam transportes e capacidades de uma rede. Um transporte VPN diz qual rede carrega o tráfego, não quais apps ou famílias de endereços o usam.
Construa a tabela de estados a partir da evidência
Três ou quatro estados bastam se cada um nomear a evidência por trás dele. As colunas abaixo partem do que pode ser observado e não da cor que você quer mostrar, o que impede que uma leitura antiga se torne uma afirmação de sucesso.
| Signal actually observed | What it establishes | What remains open |
|---|---|---|
| Target client reports an established tunnel | That client believes its tunnel is up, within its own scope | Other apps, other profiles, other address families |
| Active network exposes a VPN transport | Some tunnel carries the current network | Which app it belongs to and where it exits |
| Probe to a private host returned fresh data | One request reached one destination at one time | Everything the probe does not touch |
| Callbacks stopped or data is older than the refresh window | Nothing current is known | Any statement about the tunnel state |
A última linha é a que se descarta na prática. Um indicador que mantém o seu valor final quando a fonte morre relata a história como se fosse o presente, e os usuários leem isso como um estado vivo. Rotule esse caso como antigo ou desconhecido e escolha uma redação que não implique um túnel. Depois deixe o rótulo mudar assim que a fonte parar.
Verifique o que o dispositivo realmente relata
Uma luz física ou um widget deve ser guiado por uma observação suportada, não por um palpite sobre o último estado bom conhecido. Estes comandos do Android mostram o transporte e a configuração de conexão permanente da plataforma sem instalar nada.
adb shell dumpsys connectivity | grep -i -A4 vpn adb shell settings get secure always_on_vpn_app adb shell settings get secure always_on_vpn_lockdown adb shell dumpsys netstats | head -40
As chaves de conexão permanente dizem se a plataforma está configurada para manter um túnel e bloquear o tráfego sem ele; não dizem que o túnel esteja saudável agora. Combine essa leitura de configuração com uma sonda nova antes de algo ser mostrado como conectado.
Se a observação não puder continuar, a tela deve poder dizer isso. Uma lâmpada ligada a uma automação que já não roda é pior que nenhuma lâmpada, porque afirma um estado que ninguém mede.
Mantenha o aviso separado da aplicação
Uma automação que percebe uma desconexão dispara depois do evento, então não pode ser a fronteira que impede um pacote de escapar durante a lacuna. Se o retorno direto precisar ser proibido, configure a política de bloqueio da plataforma e verifique-a desligando o túnel de propósito. O indicador relata; a política aplica.
Uma tarefa de aviso que desativa interfaces para forçar a conformidade também pode deixar o dispositivo fora da reconexão de que precisa, produzindo um ciclo em que o túnel nunca volta e o aviso nunca desaparece.
Decida o que a tela deve mostrar quando o observador não tem certeza e depois teste esse caso parando o observador. Se a resposta ainda for conectado, o indicador está medindo o passado.