En el enrutador
Como roxan ya escribió, esto no se puede hacer en el dispositivo Android en sí (bueno, al menos no fácilmente), pero debería realizarse en su enrutador. Algunos enrutadores permiten especificar, por dispositivo, si se debe permitir el acceso a internet, utilizando un solo "interruptor" (sí/no).
Si eso no es posible, deberías editar las reglas de firewall. Esto requeriría asignar una IP fija a tu dispositivo, para que en tu enrutador pudieras especificar, por ejemplo (pseudo-código):
route from to pass
route from to * reject/drop
(de nuevo, eso es pseudo-código; no estoy tan familiarizado con iptables
como para dar la sintaxis exacta de memoria). Lo que haría eso en ese momento: Todos los paquetes de tu dispositivo Android pasarían por el enrutador si van dirigidos a la red interna, pero serían rechazados (visible para el dispositivo Android, para que pueda reaccionar de inmediato) o descartados (las conexiones expirarían) cuando están dirigidos al exterior.
Básicamente, dado que Android también utiliza iptables
, uno podría pensar que lo mismo debería ser posible directamente en el dispositivo. 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 de hecho el comando route
(aunque necesité ejecutarlo a través de busybox, por ejemplo busybox route
para mostrar las rutas configuradas). Así que supongamos que tu red local utiliza 192.168.0.*
, y tu enrutador es 192.168.0.1
, podrías hacer lo siguiente:
# puerta de enlace predeterminada (debería estar definida), pero no queremos esto
#route add default gw 192.168.0.1 wlan0
route del default gw wlan0
# volver a añadir ruta para acceder a la red local
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 paquetes dirigidos, por ejemplo, a 8.8.8.8
, y devolvería un "sin ruta al host". El ejemplo ya muestra un problema involucrado: 8.8.8.8
es uno de los servidores de nombres preconfigurados. Así que asegúrate de configurar tu dispositivo para usar un servidor de nombres en tu red local, si deseas resolución de nombres (bueno, el servidor de nombres de Google no será de mucha utilidad para tu red interna tampoco).
Nótese también que la interfaz utilizada podría no llamarse wlan0
. Descúbrelo invocando route
sin ningún argumento: esto listará todas las rutas establecidas de la siguiente manera:
link-local * 255.255.0.0 U 1000 0 0 eth0
Así que, en este caso, tuve que usar eth0
para la interfaz.
192.168.0.0 * 255.255.255.0 U 205 0 0 wlan0
Esto describiría nuestro ejemplo, utilizando wlan0
como interfaz, y 192.168.0.*
como red. Dado que esta ruta ya estaba presente en la tabla de enrutamiento de mi dispositivo, podría ser suficiente simplemente eliminar la puerta de enlace predeterminada.
No realicé una prueba para verificar que todo funcione plenamente de acuerdo a tu intención (aunque debería, es posible que haya incluido algún error tipográfico aquí o allá). Así que me alegraría saber de ti cómo funcionó todo :)
2 votos
Deshabilitar el enrutamiento de su tableta en su gateway.