2 votos

¿Cómo redirigir todas las peticiones web de los hosts conectados al hotspot a un servidor web local?

Tengo literalmente la misma pregunta que se encuentra en este post: ¿Cómo redirigir todo el tráfico del teléfono saliente a un servidor proxy?

Tengo un teléfono Android que actúa como servidor de hotspot (usando KWS). Soy capaz de conectar otro dispositivo y acceder a mi pequeña página web escribiendo 192.168.43.1:8080 en la búsqueda de URLs de mi navegador, así que no hay problema.

Sin embargo, me gustaría que todas las peticiones de los dispositivos conectados fueran redirigidas a mi página web.

La respuesta en la pregunta enlazada sugiere ejecutar dos servidores DNS utilizando la aplicación Server's Ultimate. Mi única duda es que no es gratuita, y la versión "gratuita" es una prueba de 7 días. He probado otra aplicación llamada "Set DNS", que parece prometedora, pero no reconoce mi punto de acceso como una red; sigue esperando que me conecte a algo.

PREGUNTAS:

  • ¿Puedo simplemente cambiar el /system/etc/hosts como se menciona en el post enlazado?
  • ¿Podría añadir una línea como: 192.168.43.1:8080 * ?
  • Si no es así, ¿debo comprar Server's Ultimate, o hay otra alternativa?

PS: Esto es para un anuncio. La página web debe ser estática e informativa (sin actividad maliciosa).

1voto

Jack Wade Puntos 231

NOTA: La solución sugerida aquí requiere acceso Root.

Me gustaría que todas las peticiones de los dispositivos conectados fueran redirigidas a mi página web

Cuando se crea un hotspot, Android ejecuta dnsmasq como servidor DHCP/DNS (hasta Android 9). Podemos utilizar este servidor DNS para resolver cada dominio a su dirección IP deseada. Crear archivo /system/etc/dnsmasq.conf y añadir la siguiente opción:

address=/#/192.168.43.1

Ver detalles en página de manual . Inicie el hotspot y pruebe. Del mismo modo, puede utilizar otros servidores DNS en su dispositivo Android, por ejemplo dnscrypt-proxy .

Debes asegurarte de que los hosts conectados no utilicen algún DNS público como 1.1.1.1 En su lugar, debe utilizar el DNS proporcionado por el DHCP, es decir, la dirección IP del dispositivo Android. O redirigir todo el tráfico DNS al servidor DNS local:

~# iptables -t nat -I PREROUTING -p UDP --dport 53 -j REDIRECT --to 53

NOTA:

Para http://example.com la solicitud se dirige a 192.168.43.1:80 y para https://example.com va a 192.168.43.1:443 . Sin embargo, si escribe http://example.com/test.html página de solicitudes de it 192.168.43.1:80/test.html que debe existir, de lo contrario se devolverá un error. Una forma sencilla es configurar la página web de su anuncio como página índice y página de error por defecto. Por ejemplo index-file.names y server.error-handler opciones en lighttpd .


  • ¿Puedo simplemente cambiar el /system/etc/hosts como se menciona en el post enlazado?
  • ¿Podría añadir una línea como: 192.168.43.1:8080 * ?

hosts es utilizado por los resolutores de DNS que suelen formar parte de la biblioteca principal de C del sistema operativo. Por lo que sé, los resolvedores incorporados en Android/Linux/Windows no admiten comodines, por lo que el * el truco no funcionará. En segundo lugar, los nombres de dominio se resuelven en direcciones IP ( 192.168.43.1 ) no los puertos ( :8080 ). Consulte los siguientes enlaces para obtener más información sobre el DNS.

Los navegadores web utilizan por defecto el puerto 80 para http peticiones. Si está ejecutando el servidor en algún otro puerto, tiene que mencionar el puerto en el navegador web. O redirigir todo el tráfico TCP recién generado desde el puerto 80 a 8080 :

~# iptables -t nat -I PREROUTING -m conntrack ! --ctstate RELATED,ESTABLISHED -p tcp --dport 80 -j REDIRECT --to 8080

RELACIONADO:

0voto

nagam Krishna Puntos 11

Hice una aplicación utiliza solución similar mencionada por irfan. Tiene una interfaz de usuario muy mínima y requiere permiso de Root. Compruebe aquí: https://forum.xda-developers.com/Android/general/guide-setup-fake-captive-portal-Android-t4011689

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X