Acceso al servicio web a través de una red privada virtual

3

Estoy desarrollando una aplicación para Android. Mi aplicación está utilizando un servicio web para recuperar información en formato JSON que luego se muestra en la vista de la aplicación.

El requisito es que mi cliente no quiera que su información se transfiera a través de Internet. Por lo tanto, debo adaptar la aplicación para recuperar mis datos a través de una red privada virtual. La idea es que ningún dispositivo que no esté conectado a la VPN específica pueda acceder a la información obtenida.

¿Cómo puedo realizar esta tarea? Cualquier punto fuera será muy apreciado.

    
pregunta Gordon Android Javalist 26.08.2016 - 09:36
fuente

2 respuestas

1

Pienso de esta manera:

  • Coloque la aplicación de servidor en la dirección IP local en la red de clientes
  • Hágala red dedicada como 10.1.2.0/24 donde solo reside este servicio
  • En el servidor VPN, debe haber una regla sobre qué usuarios pueden acceder a esta red, por lo que algunos pueden acceder a todas las redes, algunos solo a este servicio
  • En la aplicación de Android, puede hacer una detección si se puede alcanzar 10 · 1.2.0 / 24, en particular, verificaría la ruta a través de /proc/net/route , que es una verificación rápida y sin bloqueo de la aplicación. También puede utilizar la biblioteca que puede analizar este archivo.
  • Es posible que VPN configure la puerta de enlace a todas las subredes en 10.0.0.0/8, de modo que es posible que tenga que hacer un análisis de subred y análisis para que pueda manejar más cambios de VPN
  • Una vez que su aplicación asuma que hay una conexión VPN, puede hacer la llamada a la API JSON, pero como esta es una VPN, es posible que deba aumentarse el tiempo de espera y, por lo tanto, es posible que no sea de bloqueo.
  • Dado que establecer conexiones a través de VPN es más lento, especialmente en redes 3G / LTE, es posible que desee mantener una conexión persistente, por lo que debe configurarse en el cliente HTTP que usa y en el servidor (como los tiempos de espera de mantenimiento de tomcat / httpd ). Puede probar conexiones persistentes y no persistentes para ver qué funciona mejor. Mantener vivo a veces es "conexión persistente", a veces es "TCP mantener vivo", así que mire en los documentos qué es lo que se puede usar.
  • Puede supervisar la desconexión de VPN de la misma forma que busca la conexión, de modo que, en caso de desconexión, puede realizar un cambio de estado no intrusivo en la GUI de la aplicación.
  • Es posible que la aplicación del servidor deba permitir solo ciertas subredes, por lo que es posible que necesite un firewall para que no todos puedan usarla

Este es un problema bastante difícil si necesita manejar tanto la conexión VPN como los sockets HTTP. Tendré cuidado con los reintentos y mantendré la supervisión de la ruta cada 1 s.

    
respondido por el Aria 26.08.2016 - 17:14
fuente
0

Un enfoque un poco más innovador es observar per-app-vpn mediante el uso de herramientas como un servidor MDM (MobileIron viene a la mente). Si el cliente ya tiene un servidor MDM que administra sus dispositivos Android, entonces podrán aplicar la configuración de VPN al dispositivo junto con la implementación de la aplicación. Esto permitiría al sistema operativo forzar una VPN en cualquier momento que la aplicación realice CUALQUIER conexión de red. No creo que se requiera ningún cambio de codificación de su parte, ya que el sistema operativo administraría las conexiones de la aplicación para garantizar que siempre utilizara la VPN.

    
respondido por el Andrew 25.03.2017 - 06:30
fuente

Lea otras preguntas en las etiquetas