¿Cómo configurar un mapeo de host a IP en Android no rooteado?

10

Tengo un sitio web ejecutándose en mi computadora y quiero probarlo desde mi tableta Nexus 7. Es decir, a través de la LAN WiFi local. Si escribo la dirección IP, se conecta, pero muestra el sitio web incorrecto, porque estoy usando un alojamiento virtual con nombre.

Entonces, lo que quiero hacer es poder escribir mysite.localen Chrome / Firefox en el Nexus, hacer que lo conviertan a 10.1.2.3(o la dirección IP local que sea), luego llamar al 10.1.2.3servidor mysite.localpara que lo solicite como Host.

Mi pregunta: ¿Tiene una tableta Android 4.x un /etc/hostsarchivo, o equivalente, que pueda editar? (Sin tener que rootear la tableta, ni nada de eso).

En mis computadoras Linux hago esto agregando una entrada en /etc/hosts:

10.1.2.3  mysite.local

(O Windows\System32\drivers\etc\hostsen una máquina con Windows hace lo mismo).

Por cierto, este es un semi-duplicado de Establecer manualmente un nombre de host para la dirección IP (es decir, / etc / hosts equiv.?) , Pero esa pregunta era para Android 2.2, donde aparentemente no era posible. (Una de las ideas alternativas sugirió que había configurar DNS en el enrutador local, pero por lo que puedo decir, mi enrutador no hace DNS localmente, por lo que no tiene esa opción. Podría configurar mi propio servidor DNS para hacer esto, pero eso se siente como una gran solución de trabajo).

Darren Cook
fuente
Esa es más bien una pregunta para Server Fault o Super User . Y debe configurar esos nombres de host con su servidor local (que es presentado por su servidor DHCP como nodo DNS).
Izzy
1
@ Izzy Gracias Izzy, pero sé cómo configurar / etc / hosts en los servidores. Lo que no sé hacer es encontrar / editar el equivalente en una tableta Android 4.x (o incluso si hay un equivalente sin rootearlo). (Mi servidor DHCP, es decir, el enrutador wifi, parece no ofrecer opciones para agregar nombres personalizados: tengo la opción de especificar un servidor DNS personalizado, pero ese es un grupo de lodo al que realmente no quería poner mis manos. )
Darren Cook
Me entendiste mal, Darren: no sugerí editar /etc/hosts, sino configurar tu "servidor de nombres" (por ejemplo, DNSMasq, o lo que sea que uses). Su enrutador podría darle un lugar para eso. /etc/hostsde lo contrario, debe editarse en cada máquina, y el archivo correspondiente en Android solo puede editarse con "poderes de raíz" (no sé su ubicación exacta fuera de mi cabeza, pero está en algún lugar dentro de /data/systemAFAIR). Ver: Cómo editar archivos etc / hosts
Izzy

Respuestas:

6

No puede simplemente editar el archivo hosts en Android, ya que reside en un sistema de archivos de solo lectura: /system/etc/hostsconsulte:

Las alternativas son:

  • use un servidor DNS como DNSMasq en su red local para ocuparse de eso "centralmente"
  • use "poderes de raíz" para forzar-editar el archivo del sistema como se describe arriba
  • instale un "servidor DNS local" en su dispositivo Android para usarlo, por ejemplo, Servidor DNS
Izzy
fuente
Hola Izzy, intenté usar el servidor DNS para manejar esto, ya que no tengo acceso de root a mi teléfono; Agregué una regla simple que redirige el nombre de host a la IP en cuestión ... pero no funciona ... ¿qué estoy haciendo mal?
George Katsanos
Se supone que el Servidor DNS sirve a otros dispositivos en su red (como dice la descripción, también necesita usar el reenvío de puertos para eso). Eso siempre requiere que esos dispositivos (incluido su dispositivo Android) estén configurados para usarlo. No utilicé ninguno de esos servidores DNS en mis dispositivos Android, por lo que no verifiqué exactamente qué se debe hacer aquí; pero lo más probable es que necesite ajustar las entradas de DNS en la configuración de su red (mantenga presionada la entrada de la red WiFi, elija "Avanzado" y ajuste la primera entrada de DNS; deje la segunda como está para una "copia de seguridad").
Izzy
@GeorgeKatsanos Puede que le interese esto: stackoverflow.com/a/14211550/1768141
Vinayak
2

Como mencionó lzzy, puede usar el servidor DNSMasq para lograr esto. Pero Chrome usa su propio proceso de resolución de DNS y este método puede no funcionar.

Para iniciar el servidor, use el siguiente comando:

sudo /usr/local/sbin/dnsmasq -d \
                             --no-hosts \
                             --no-resolv \
                             --conf-file=/dev/null \
                             --server=8.8.8.8 --server=8.8.4.4 \
                             --address=/example.com/192.168.0.101
  • sudo requerido para enlazar en el puerto 53
  • -d iniciar servidor en primer plano
  • --no-hosts no use el archivo de hosts locales
  • --conf-file=/dev/null no use ningún archivo de configuración
  • --server=8.8.8.8 --server=8.8.4.4 direcciones de servidores ascendentes (DNS de Google en este ejemplo)
  • --address=/example.com/192.168.0.101hosts para anular. Necesita agregar sus hosts en esta línea. También puede agregar varios hosts allí.

Luego cambie el servidor DNS en el dispositivo. Esto se puede hacer fácilmente usando la aplicación DNS Changer .

Después de estos pasos, las solicitudes a estos hosts deben enviarse a sus direcciones.

ZeroDivisi0n
fuente
0

La forma más sencilla de definir un mapeo de host a IP es el hostsarchivo, ya que la mayoría de los que resuelven DNS respetan ese archivo . Pero como se menciona en otras respuestas, no es posible editar /etc/hostssin rootear el dispositivo Android. El acceso al servidor web con dirección IP tampoco funcionará para usted debido al alojamiento virtual. Aquí hay algunas opciones que puede utilizar en un dispositivo no rooteado:

  • Use una aplicación VPN que intercepte el tráfico DNS y busque un hostsarchivo personalizado antes de realizar consultas al servidor DNS ascendente configurado.
  • Ejecuta un servidor DNS; se pueden configurar para devolver una dirección IP predefinida para un nombre específico. Por ejemplo, si está utilizando dnsmasq, agregue address=/mysite.local/10.1.2.3a "dnsmasq.conf" . O en dnscrypt-proxyagregar mysite.local 10.1.2.3a "cloaking-rules.txt" .
  • Configure el teléfono para usar un proxy o VPN y luego agregue la entrada 10.1.2.3 mysite.localal hostsarchivo en el servidor proxy o ejecute un servidor DNS local en el servidor VPN.
  • Si el gestor de arranque es desbloqueable, edite el hostsarchivo desde la recuperación personalizada.

Para obtener más detalles, consulte: ¿Cómo resolver siempre un nombre de dominio a una IP fija sin enraizamiento?


RELACIONADO:

Irfan Latif
fuente