Como autor de NetGuard tengo experiencia de primera mano en este campo.
Una desventaja de un cortafuegos 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 sockets. Un ejemplo es el IPsec, que está siendo usado para llamadas IP por algunos fabricantes. Una solución parcial (no para IPsec) a esto sería usar un servidor VPN remoto para reenviar el tráfico, pero esto es una solución de privacidad que no es aceptable para mucha gente y que vendría con una complejidad adicional y probablemente también con un uso extra 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. Desde Android 5 es posible excluir las aplicaciones de ser enrutadas a la VPN (la aplicación que implementa la VPN decide si esto es obligatorio u opcional), lo cual puede ser usado para resolver los problemas derivados de no poder reenviar todo el tráfico. Otra opción es excluir la dirección (rangos), que NetGuard utiliza para "arreglar" las llamadas IP de algunos fabricantes.
Otra desventaja es que el tráfico de reenvío aumentará el uso de la batería en los dispositivos móviles, porque implica cierto procesamiento, ya que es necesario inspeccionar los paquetes y reenviarlos. El uso de iptables, que está integrado en el núcleo de Linux, es más eficiente y por lo tanto más amigable con la batería.
En general se ha visto que Android enruta todo el tráfico hacia 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 se puede lograr con un cortafuegos basado en la VPN.
NetGuard no analiza los datos por sí mismo, excepto para las solicitudes de DNS para proporcionar bloqueo de anuncios, pero si lo hiciera podría plantear una preocupación de privacidad. Sin embargo, visto técnicamente esto es una ventaja de un firewall basado en VPN (si todavía quieres llamarlo así), porque permitiría una inspección completa 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 que implica. Tengan en cuenta que se requeriría un ataque MiT local para inspeccionar los flujos SSL.
Otra desventaja es que Android no permite el encadenamiento de VPN's, por lo que el uso de una VPN local para implementar un cortafuegos impedirá el uso de un servicio VPN real, a menos que el cortafuegos proporcione dicho servicio por sí mismo o, alternativamente, un mecanismo de reenvío o proxy a otra aplicación VPN.
Por último, un cortafuegos basado en VPN depende de la aplicación que proporciona el servicio de cortafuegos VPN que se está ejecutando. Esto parece ser trivial, pero no lo es, porque algunas versiones/variantes de Android de fabricantes están matando demasiado agresivamente los procesos en condiciones de baja memoria (IMHO es un error si Android mata las aplicaciones que proporcionan un servicio VPN).
Finalmente, el rooting de los dispositivos Android es cada vez más difícil, dejando un firewall basado en VPN como la única opción para muchas personas. No espero que Google añada un cortafuegos basado en el sistema a corto plazo, porque podría afectar significativamente a sus ingresos por publicidad. iOS tiene un cortafuegos basado en el sistema.
Avíseme si hay alguna pregunta y trataré de responderla.