Quiero deshabilitar internet pero no la red

¿Cómo puedo deshabilitar Internet pero mantener el acceso a la red en la tableta Android? Quiero deshabilitar el acceso a Internet a todas las aplicaciones excepto a las seleccionadas, al mismo tiempo quiero que las aplicaciones tengan acceso directo a la red interna.

Usé un firewall en el pasado, pero el firewall deshabilita el acceso a todas las redes. Quiero poder usar mi tableta en mi casa, al mismo tiempo quiero deshabilitar el acceso a Internet en ella.

¿Es posible? ¿Cuál es la mejor manera de crear este tipo de limitación para las aplicaciones?

gracias

Deshabilite el enrutamiento de su tableta en su puerta de enlace.

Respuestas (3)

en el enrutador

Como ya escribió roxan , esto no se puede hacer en el propio dispositivo Android (bueno, al menos no fácilmente), sino que debe realizarse en su enrutador. Algunos enrutadores permiten especificar por dispositivo si se debe otorgar acceso a Internet, usando un solo "interruptor" (sí/no).

Si eso no es posible, deberá editar las reglas del cortafuegos. Esto requeriría asignar una IP fija a su dispositivo, por lo que en su enrutador podría especificar, por ejemplo, (pseudocódigo):

route from <android_ip> to <internal_network> pass
route from <android_ip> to * reject/drop

(De nuevo, eso es pseudocódigo; no estoy tan familiarizado con iptablesdar la sintaxis exacta de memoria). Qué haría eso entonces: todos los paquetes de su dispositivo Android pasarían el enrutador si estuvieran dirigidos a la red interna, pero serían rechazados (visibles para el dispositivo Android, por lo que podría reaccionar de inmediato) o descartados (las conexiones se agotarían en ese momento) cuando estén dirigidos. al exterior

iptablesBásicamente, como también lo usa Android , lo mismo debería ser posible directamente en el dispositivo, uno podría pensar. Pero no estoy seguro de si eso es realmente cierto: desde el punto de vista del dispositivo Android, todo está dirigido al exterior (a su puerta de enlace). Lo que da otra idea:


En el dispositivo Android

Acabo de verificar en mi dispositivo, y Android incluye el routecomando (aunque necesitaba ejecutarlo a través de busybox, por ejemplo, busybox routepara mostrar las rutas configuradas). Entonces, supongamos que su red local usa 192.168.0.*, y que su enrutador es 192.168.0.1, podría hacer lo siguiente:

# default gateway (should already be defined), but we don't want this
#route add default gw 192.168.0.1 wlan0
route del default gw wlan0
# re-add route for access to the local network
route add -net 192.168.0.0 netmask 255.255.255.0 192.168.0.1 wlan0

Ahora el dispositivo ya no debería saber qué hacer con los paquetes, por ejemplo, para 8.8.8.8, y devolvería "sin ruta al host". El ejemplo ya muestra un problema involucrado: 8.8.8.8es uno de los servidores de nombres preconfigurados. Así que asegúrese de configurar su dispositivo para usar un servidor de nombres en su red local, si desea resolución de nombres (bueno, el servidor de nombres de Google tampoco será de mucha utilidad para su red interna).

No también que su interfaz utilizada no se llame wlan0. Descúbralo invocando routesin ningún argumento: esto enumerará todas las rutas establecidas como esta:

link-local      *               255.255.0.0     U     1000   0        0 eth0

Entonces, en este caso, tuve que usar eth0para la interfaz.

192.168.0.0     *               255.255.255.0   U     205    0        0 wlan0

Esto describiría nuestro ejemplo, usando wlan0como interfaz y 192.168.0.*como red. Como en mi dispositivo esta ruta ya había estado presente en la tabla de enrutamiento, incluso podría ser suficiente simplemente descartar la puerta de enlace predeterminada.

No realicé una prueba para verificar que todo funciona completamente de acuerdo con su intención (aunque debería, podría haber incluido algún error tipográfico aquí o allá). Así que me encantaría saber de ti qué tan bien lo hizo :)

Izzy, gracias por la respuesta súper detallada. Bien explicado. Sin embargo, el problema es este: ¿agregar la ruta una vez para el próximo arranque?
No, tendrías que repetir eso después de un arranque. O necesitaría modificar la imagen de arranque en consecuencia, lo cual no es realmente factible. Mucho mejor sería usar Tasker y ejecutar un script después de cada arranque, si lo necesita "más permanente".

Droidwall una aplicación será la respuesta perfecta a eso. (ATENCIÓN: requerirá root).

No, eso no ayudará aquí. Vea la pregunta una vez más, por favor: Usé un firewall en el pasado, pero el firewall deshabilita el acceso a todas las redes.
Izzy gracias por el punto. Es cierto que los cortafuegos son un gran problema en Android, por lo que no me sirve en la tableta, por lo que puedo decir.
@Izzy Estoy usando Droidwall en mi N4 con un teléfono original pero rooteado y puedo bloquear lo que quiera, y todavía puedo usar la aplicación. Aún necesita algo avanzado como hacer que una aplicación se comporte como si Internet estuviera encendido, pero en realidad no lo está, entonces puede usar el "Marco expuesto" (espero que lo sepa). El Droidwall que mencioné usó reglas de tabla de IP para modificar la aplicación en consecuencia y lo estoy usando satisfactoriamente.
Que yo sepa, Droidwall bloquea completamente el acceso a la red para la aplicación, o no lo bloquea (sí, por aplicación y sí, por interfaz). ¿Está diciendo que es fácil de usar para el bloqueo selectivo (es decir, "la aplicación puede acceder a 192.168.0.*, pero nada más")? Porque eso es lo que quiere Yarun.

En su teléfono, busque la red a la que está conectado en las opciones de red conectadas y modifique la red en las opciones avanzadas. Cambie el valor a "Estático". Puede dejar el campo de la dirección IP sin modificar, pero en el campo de la puerta de enlace predeterminada, cámbielo a 0.0.0.0 y presione ahorrar. Recibirá un mensaje de que la conexión no tiene acceso a Internet, pero aún estará conectado a su enrutador y podrá acceder a los dispositivos dentro de su red de área local. La forma en que llega a esta opción varía según su teléfono y la versión de Android, si no está seguro, simplemente busque en Google "cómo configurar una dirección IP estática en un (su modelo de teléfono aquí)"