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.local
en Chrome/Firefox en el Nexus, hacer que lo conviertan a 10.1.2.3
(o cualquiera que sea la dirección IP local), luego llamar al 10.1.2.3
servidor que da mysite.local
como Host para solicitar.
Mi pregunta: ¿Una tableta con Android 4.x tiene /etc/hosts
archivos, o equivalentes, que puedo editar? (Sin tener que rootear la tablet, ni nada por el estilo.)
En mis computadoras Linux, hago esto agregando una entrada en /etc/hosts
:
10.1.2.3 mysite.local
(O Windows\System32\drivers\etc\hosts
en 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 sugería que había que configurar DNS en el enrutador local, pero por lo que sé, 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).
No puede simplemente editar el archivo hosts en Android, ya que reside en un sistema de archivos de solo lectura: /system/etc/hosts
, vea:
Las alternativas son:
Como mencionó lzzy, puede usar el servidor DNSMasq para lograr esto. Pero Chrome usa su propio proceso de resolución de DNS y es posible que este método no funcione.
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 (Google DNS en este ejemplo)--address=/example.com/192.168.0.101
anfitriones para anular. Debe 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.
La forma más sencilla de definir una asignación de host a IP es hosts
un archivo, ya que la mayoría de los solucionadores de DNS respetan ese archivo . Pero como se menciona en otras respuestas, no es posible editar /etc/hosts
sin rootear el dispositivo Android. Acceder al servidor web con la dirección IP tampoco funcionará debido al alojamiento virtual. Aquí hay algunas opciones con las que puede ir en un dispositivo no rooteado:
hosts
archivo personalizado antes de realizar consultas al servidor DNS ascendente configurado.dnsmasq
, agregue address=/mysite.local/10.1.2.3
a “dnsmasq.conf” . O en dnscrypt-proxy
agregar mysite.local 10.1.2.3
a "cloaking-rules.txt" .10.1.2.3 mysite.local
al hosts
archivo en el servidor proxy o ejecute un servidor DNS local en el servidor VPN.hosts
el archivo desde la recuperación personalizada.Para obtener más detalles, consulte: ¿Cómo resolver siempre un nombre de dominio en una IP fija sin rootear?
RELACIONADO:
No puede cambiar el archivo en un sistema de archivos de solo lectura, pero puede usar bind
la opción para sustituir el archivo ubicado en rw fs. Esto debería funcionar solo hasta el próximo reinicio.
Ejemplo:
mount /sdcard/hosts /etc/hosts -o bind
bind file /sdcard/hosts to /etc/hosts
systemless
, la pregunta es específicamente sobre dispositivos no rooteados . No se puede ejecutar mount
sin privilegios de root. Su respuesta es más adecuada aquí: android.stackexchange.com/q/60150/218526
izzy
cocinero darren
izzy
/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/hosts
de lo contrario, debe editarse en cada máquina, y el archivo correspondiente en Android solo se puede editar con "poderes de raíz" (no sé su ubicación exacta fuera de mi cabeza, pero está en algún lugar dentro de/data/system
AFAIR). Ver: Cómo editar el archivo etc/hosts