En tant qu'auteur de NetGuard, j'ai une expérience de première main dans ce domaine.
Un inconvénient d'un pare-feu basé sur un VPN local est que tous les types de trafic ne peuvent pas être traités, car le noyau Linux (Android) ne permet pas de transférer tous les types de trafic via une connexion basée sur un socket. Un exemple est IPsec, qui est utilisé pour les appels IP par certains fabricants. Une solution partielle (pas pour IPsec) à cela serait d'utiliser un serveur VPN distant pour transférer le trafic, mais cela n'est pas acceptable pour beaucoup de gens en termes de confidentialité et entraînerait une complexité supplémentaire et probablement également une utilisation supplémentaire de la batterie. Dans la pratique, la gestion du trafic TCP et UDP semble suffisante pour 99,9% des utilisateurs de NetGuard. Depuis Android 5, il est possible d'exclure les applications du routage vers le VPN (l'application de mise en œuvre du VPN décide si cela est obligatoire ou facultatif), qui peut être utilisé pour résoudre les problèmes résultant de l'impossibilité de transférer tout le trafic. Une autre option consiste à exclure l'adresse (plages), que NetGuard utilise pour «corriger» les appels IP pour certains fabricants.
Un autre inconvénient est que le trafic de transfert augmentera l'utilisation de la batterie sur les appareils mobiles, car il implique un certain traitement, car les paquets doivent être inspectés et transmis. L'utilisation d'iptables, qui est intégrée au noyau Linux, est plus efficace car donc plus conviviale pour la batterie.
En général, il est apparu qu'Android achemine tout le trafic vers le VPN, même le trafic des applications système et des composants, mais un fabricant pourrait décider d'exclure certains types de trafic, réduisant ainsi la sécurité pouvant être obtenue par un pare-feu basé sur VPN.
NetGuard n'analyse pas les données elles-mêmes, à l'exception des demandes DNS pour fournir un blocage des publicités, mais si tel était le cas, cela pourrait poser un problème de confidentialité. Néanmoins, techniquement, c'est un avantage d'un pare-feu basé sur VPN (si vous voulez toujours l'appeler de cette façon), car cela permettrait une inspection complète des états des flux de données au-delà de ce qui est possible avec iptables. Ce serait probablement au détriment de l'utilisation de la batterie, en raison du traitement impliqué. Notez qu'il faudrait une attaque MiT locale pour inspecter les flux SSL.
Encore un autre inconvénient est qu'Android n'autorise pas le chaînage de VPN, donc l'utilisation d'un VPN local pour implémenter un pare-feu empêchera l'utilisation d'un vrai service VPN, à moins que le pare-feu ne fournisse lui-même un tel service ou alternativement un mécanisme de transfert ou de proxy à un autre VPN application.
Enfin, un pare-feu basé sur VPN dépend de l'application fournissant le service VPN de pare-feu à exécuter. Cela semble anodin, mais ce n'est pas le cas, car certaines versions / variantes d'Android du fabricant tuent trop agressivement les processus dans des conditions de mémoire faible (à mon humble avis, c'est un bug si Android tue les applications fournissant un service VPN).
Enfin, l'enracinement des appareils Android devient de plus en plus difficile, laissant un pare-feu basé sur VPN comme le seul choix pour de nombreuses personnes. Je ne m'attends pas à ce que Google ajoute un pare-feu basé sur le système de sitôt, car cela pourrait affecter considérablement leurs revenus publicitaires. iOS a un pare-feu basé sur le système.
Faites-moi savoir s'il y a des questions et j'essaierai d'y répondre.