Como autor do NetGuard, tenho experiência em primeira mão neste campo.
Uma desvantagem de um firewall baseado em uma VPN local é que nem todos os tipos de tráfego podem ser manipulados, porque o kernel Linux (Android) não permite o encaminhamento de todos os tipos de tráfego por uma conexão baseada em soquete. Um exemplo é o IPsec, que está sendo usado para chamadas IP por alguns fabricantes. Uma solução parcial (não para IPsec) para isso seria usar um servidor VPN remoto para encaminhar tráfego, mas isso não é aceitável em termos de privacidade para muitas pessoas e viria com complexidade adicional e provavelmente também com o uso extra de bateria. Na prática, lidar com o tráfego TCP e UDP parece ser suficiente para 99,9% dos usuários do NetGuard. Desde o Android 5, é possível impedir que os aplicativos sejam roteados para a VPN (o aplicativo de implementação da VPN decide se isso é obrigatório ou opcional), que pode ser usado para solucionar problemas decorrentes da impossibilidade de encaminhar todo o tráfego. Outra opção é excluir endereços (intervalos), que o NetGuard usa para 'corrigir' a chamada IP de alguns fabricantes.
Outra desvantagem é que o tráfego de encaminhamento aumentará o uso da bateria em dispositivos móveis, pois envolve algum processamento, porque os pacotes precisam ser inspecionados e encaminhados. O uso do iptables, integrado no kernel do Linux, é mais eficiente e, portanto, mais amigável à bateria.
Em geral, parece que o Android direciona todo o tráfego para a VPN, mesmo tráfego de aplicativos e componentes do sistema, mas um fabricante pode decidir excluir determinados tipos de tráfego, reduzindo a segurança que pode ser alcançada por um firewall baseado em VPN.
O NetGuard não analisa os dados em si, exceto as solicitações de DNS para fornecer bloqueio de anúncios, mas, se isso acontecer, poderia suscitar uma preocupação com a privacidade. No entanto, tecnicamente, isso é uma vantagem de um firewall baseado em VPN (se você ainda quiser chamá-lo dessa maneira), porque permitiria a inspeção completa do estado dos fluxos de dados além do que é possível com o iptables. Provavelmente, isso custaria o uso da bateria, devido ao processamento envolvido. Observe que seria necessário um ataque MiT local para inspecionar fluxos SSL.
Outra desvantagem é que o Android não permite o encadeamento de VPNs; portanto, o uso de uma VPN local para implementar um firewall impedirá o uso de um serviço VPN real, a menos que o firewall forneça esse serviço ou alternativamente um mecanismo de encaminhamento ou proxy para outra VPN. inscrição.
Por fim, um firewall baseado em VPN depende do aplicativo que fornece o serviço VPN de firewall em execução. Isso parece trivial, mas não é, porque algumas versões / variantes de fabricantes do Android estão matando processos de forma muito agressiva em condições de pouca memória (IMHO é um bug se o Android matar aplicativos que fornecem um serviço VPN).
Finalmente, o enraizamento de dispositivos Android está se tornando cada vez mais difícil, deixando um firewall baseado em VPN como a única opção para muitas pessoas. Não espero que o Google adicione um firewall com base no sistema em breve, pois isso pode afetar significativamente a receita com anúncios. O iOS possui um firewall baseado no sistema.
Informe-me se houver alguma dúvida e tentarei respondê-las.