Como autor de NetGuard, tengo experiencia de primera mano en este campo.
Una desventaja de un firewall basado en una VPN local es que no se pueden manejar todos los tipos de tráfico, porque el kernel de Linux (Android) no permite reenviar todos los tipos de tráfico a través de una conexión basada en socket. Un ejemplo es IPsec, que algunos fabricantes utilizan para llamadas IP. Una solución parcial (no para IPsec) para esto sería usar un servidor VPN remoto para reenviar el tráfico, pero esto no es aceptable en términos de privacidad para muchas personas y vendría con una complejidad adicional y probablemente también con un uso adicional de la batería. En la práctica, el manejo del tráfico TCP y UDP parece ser suficiente para el 99,9% de los usuarios de NetGuard. Dado que Android 5 es posible excluir las aplicaciones de ser enrutadas a la VPN (la aplicación de implementación de VPN decide si esto es obligatorio u opcional), que se puede utilizar para abordar los problemas derivados de no poder reenviar todo el tráfico. Otra opción es excluir direcciones (rangos), que NetGuard utiliza para "arreglar" las llamadas IP para algunos fabricantes.
Otra desventaja es que el tráfico de reenvío aumentará el uso de la batería en los dispositivos móviles, ya que implica cierto procesamiento, ya que los paquetes deben ser inspeccionados y reenviados. Usar iptables, que está integrado en el kernel de Linux, es más eficiente y, por lo tanto, más amigable con la batería.
En general, parece que Android enruta todo el tráfico a la VPN, incluso el tráfico de las aplicaciones y componentes del sistema, pero un fabricante podría decidir excluir ciertos tipos de tráfico, reduciendo la seguridad que puede lograr un firewall basado en VPN.
NetGuard no analiza los datos en sí, a excepción de las solicitudes de DNS para proporcionar el bloqueo de anuncios, pero si lo hiciera, podría plantear un problema de privacidad. Sin embargo, desde el punto de vista técnico, esta es una ventaja de un firewall basado en VPN (si todavía quiere llamarlo así), ya que permitiría una inspección completa del estado de los flujos de datos más allá de lo que es posible con iptables. Esto probablemente sería a costa del uso de la batería, debido al procesamiento involucrado. Tenga en cuenta que requeriría un ataque MiT local para inspeccionar las transmisiones SSL.
Otra desventaja es que Android no permite el encadenamiento de VPN, por lo que el uso de una VPN local para implementar un firewall evitará el uso de un servicio VPN real, a menos que el firewall brinde dicho servicio en sí mismo o, alternativamente, un mecanismo de reenvío o proxy a otra VPN solicitud.
Por último, un firewall basado en VPN depende de la aplicación que proporciona el servicio VPN de firewall que se está ejecutando. Esto parece ser trivial, pero no lo es, porque algunas versiones / variantes de Android del fabricante están eliminando demasiado agresivamente los procesos en condiciones de poca memoria (en mi humilde opinión, es un error si Android mata las aplicaciones que proporcionan un servicio VPN).
Finalmente, el rooteo de dispositivos Android se está volviendo cada vez más difícil, dejando un firewall basado en VPN como la única opción para muchas personas. No espero que Google agregue un firewall basado en el sistema en el corto plazo, ya que podría afectar significativamente sus ingresos por publicidad. iOS tiene un firewall basado en el sistema.
Avíseme si hay alguna pregunta e intentaré responderla.