22 votos

Configurar un host para el mapeo de IP en una tablet Android 4.4 sin root

Tengo una página web en mi ordenador y quiero probarla desde mi tablet nexus 7. Es decir, a través de la red local wifi. Si tecleo la dirección IP se conecta, pero muestra el sitio web equivocado, porque estoy usando un hosting virtual.

Entonces, lo que quiero hacer es ser capaz de escribir "mysite.local" en Chrome/Firefox en el Nexus, hacer que lo conviertan a 10.1.2.3 (o lo que sea la dirección IP local), y luego llamar al servidor 10.1.2.3 dando mysite.local como el Host a solicitar.

Mi pregunta: ¿Tiene una tablet Android 4.x un archivo /etc/hosts, o equivalente, que pueda editar? (Sin tener que hacer Root a la tablet, ni nada de eso.)

En mis ordenadores linux lo hago añadiendo una entrada en /etc/hosts:

10.1.2.3  mysite.local

(O Windows\System32\drivers\etc\hosts en una máquina de Windows hace lo mismo.)

Por cierto, esto es una semiduplicación de Establecer manualmente un nombre de host para la dirección IP (es decir, /etc/hosts equiv.?) pero esa pregunta era para el Android 2.2, donde aparentemente no era posible. (Una de las ideas alternativas sugeridas fue configurar el DNS en el router local, pero hasta donde puedo decir mi router no hace DNS localmente así 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).

0 votos

Eso es más bien una pregunta para Fallo del servidor o Súper Usuario . Y debe configurar esos nombres de host con su servidor local (que es presentado por su servidor DHCP como nodo DNS).

1 votos

@Izzy Gracias Izzy, pero sé cómo configurar /etc/hosts en servidores. Lo que no sé es cómo encontrar/editar el equivalente en una tablet Android 4.x (o incluso si hay un equivalente sin rootearla). (Mi servidor DHCP, es decir, el router wifi, parece no ofrecer opciones para añadir nombres personalizados: Sí tengo la opción de especificar un servidor DNS personalizado, pero esa es una piscina de barro en la que no quería meter las manos).

0 votos

Me has entendido mal, Darren: no he sugerido editar /etc/hosts Pero configurando tu "servidor de nombres" (por ejemplo, DNSMasq, o lo que sea que uses). Su router podría darle un lugar para eso. /etc/hosts necesita ser editado en cada y el archivo correspondiente en Android sólo se puede editar con "poderes de root" (no sé su ubicación exacta, pero está en algún lugar dentro de /data/system AFAIR). Ver: Cómo editar el archivo etc/hosts

11voto

Izzy Puntos 45544

No puedes simplemente editar el archivo de hosts en Android, ya que reside en un sistema de archivos de sólo lectura: /system/etc/hosts ver:

Las alternativas son:

  • usar un servidor DNS como DNSMasq en su red local para cuidar de eso "centralmente"
  • usar los "poderes de root" para forzar la edición del archivo de sistema como se describe arriba
  • instalar un "servidor DNS local" en tu dispositivo Android para usar eso, por ejemplo. Servidor DNS

0 votos

Hola Izzy, he intentado utilizar el servidor DNS para manejar esto ya que no tengo acceso Root a mi teléfono; he añadido una regla simple que redirige el nombre de host a la ip en cuestión.. pero no funciona.. ¿qué estoy haciendo mal?

0 votos

Servidor DNS se supone que debe servir a otros dispositivos en su red (como dice la descripción, adicionalmente necesita usar el reenvío de puertos para eso). Eso siempre requiere que esos dispositivos (incluyendo tu dispositivo Android) estén configurados para usarlo. No he utilizado ningún servidor DNS en mis dispositivos Android, así que no he comprobado lo que hay que hacer exactamente aquí; pero lo más probable es que tengas que ajustar las entradas DNS en la configuración de tu red (pulsa prolongadamente la entrada de la red WiFi, elige "Avanzado", y ajusta la primera entrada DNS - deja la segunda como está para una "copia de seguridad").

0 votos

@GeorgeKatsanos Puede que te interese esto: stackoverflow.com/a/14211550/1768141

2voto

user231844 Puntos 21

Como menciona lzzy, puedes utilizar DNSMasq servidor para conseguirlo. Pero Chrome utiliza su propio proceso de resolución de DNS y este método puede no funcionar.

Para iniciar el servidor utilice 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 se requiere para enlazar en el puerto 53
  • -d iniciar el servidor en primer plano
  • --no-hosts no utilice el archivo local de hosts
  • --conf-file=/dev/null no utilice ningún archivo de configuración
  • --server=8.8.8.8 --server=8.8.4.4 direcciones de los servidores de origen (Google DNS en este ejemplo)
  • --address=/example.com/192.168.0.101 anfitriones para anular. Debe añadir sus hosts en esta línea. También puede añadir varios hosts allí.

A continuación, cambie el servidor DNS en el dispositivo. Esto se puede hacer fácilmente utilizando el Cambiador de DNS app.

Después de estos pasos, las peticiones a estos hosts deberían ser enviadas a sus direcciones.

0voto

Jack Wade Puntos 231

La forma más sencilla de definir un mapeo de host a IP es hosts archivo como la mayoría de las veces Los resolutores de DNS respetan ese archivo . Pero como se menciona en otras respuestas, no es posible editar /etc/hosts sin rootear el dispositivo Android. El acceso al servidor web con la dirección IP tampoco le funcionará debido al alojamiento virtual. Aquí hay algunas opciones que usted puede ir con en el dispositivo sin root:

  • Utilice una aplicación VPN que intercepte el tráfico DNS y busque un hosts antes de realizar las consultas al servidor DNS configurado.
  • Ejecute un servidor DNS; pueden ser configurados para devolver una dirección IP predefinida para un nombre específico. Por ejemplo, si se utiliza dnsmasq , añada address=/mysite.local/10.1.2.3 a "dnsmasq.conf" . O en dnscrypt-proxy añadir mysite.local 10.1.2.3 a "cloaking-rules.txt" .
  • Configurar el teléfono para utilizar un proxy o VPN y luego añadir la entrada 10.1.2.3 mysite.local a hosts en el servidor proxy o ejecutar un servidor DNS local en el servidor VPN.
  • Si el bootloader es desbloqueable, edita hosts archivo desde la recuperación personalizada.

Para más detalles, véase: ¿Cómo resolver siempre un nombre de dominio a una IP fija sin rootear?


RELACIONADO:

0voto

vigilian Puntos 142

No se puede modificar el archivo en un sistema de archivos de sólo lectura, pero se puede utilizar bind para sustituir el archivo por uno ubicado en fs rw. Esto debería funcionar sólo hasta el próximo reinicio.

Ejemplo:

mount /sdcard/hosts /etc/hosts -o bind
bind file /sdcard/hosts  to /etc/hosts

1 votos

Si bien la respuesta es correcta y se ajusta a la de Magisk systemless enfoque, la pregunta se refiere específicamente a sin root dispositivos. No se puede ejecutar mount sin privilegios de root. Su respuesta es más adecuada aquí: Android.stackexchange.com/q/60150/218526

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