¿Cómo es que la redirección de archivos de hosts falla?


12

Estoy tratando de redirigir google.com a mi máquina local para divertirme y aprender con este archivo / etc / hosts en mi Mac.

127.0.0.1 www.google.com

Sin embargo, www.google.com todavía se asigna a la página de inicio de Google cuando lo visito en Chrome en mi Mac. ¿Por qué?

Básicamente, esto es todo lo que hice:

  1. Escriba sudo vim /etc/hostsen la terminal.
  2. Ingresado 127.0.0.1 www.google.comen el archivo de hosts.
  3. Guardado y salir de vim.

Respuestas:


10

El hostsarchivo no funciona de esta manera. Solo puede usarlo para asignar nombres de host a direcciones IP, no a localhost.

Para su caso usaría 127.0.0.1 www.google.com, es decir, mapee www.google.com a 127.0.0.1.

Si desea asignar más nombres de host a una sola dirección IP, simplemente agregue esos nombres de host en la misma línea, por ejemplo 127.0.0.1 www.a.com www.b.com.


1
Gracias. Acabo de cambiar el archivo / etc / hosts en mi Mac a 127.0.0.1 www.google.com. Sin embargo, google.com todavía conduce a la página de inicio de Google. ¿Necesito actualizar algo? ¿Debo reiniciar mi computadora?
David Faux

No deberías necesitarlo. Intente agregar 127.0.0.1 google.com(sin www) después de esta línea y verifique si funciona.
Renan

127.0.0.1 google.comtampoco funciona No estoy seguro de lo que está pasando ... Sé que /etc/hostses un enlace suave /private/etc/hostsen una Mac, pero no creo que eso ayude en absoluto.
David Faux

1
Un tecnicismo: hostsasigna nombres de host a direcciones IP, no viceversa.
Dennis

1
@ Dennis, eso es lo que iba a decir, pero, de nuevo, realmente funciona en ambos sentidos cuando lo piensas, porque crea una asociación entre dos elementos.
Synetech

9

Un navegador web no es la mejor manera de verificar si su hostssintaxis es correcta. Intenta ejecutar

ping www.google.com

y verifique que suene 127.0.0.1.

La razón por la cual Chrome parece ignorar su hostsarchivo es el almacenamiento en caché:

Si Chrome ya ha consultado la IP últimamente (la definición de últimamente más probable depende del tiempo de vida (TTL) devuelto por el servidor DNS), omitirá el hostsarchivo, ya que ya conoce la IP correcta. Esto se hace para acelerar la navegación web.

Para hacer que Chrome respete la nueva entrada, haga lo siguiente:

  1. Edite /etc/hostscomo se describe @Renan.

  2. Ir a chrome://chrome/settings/clearBrowserData.

  3. Elija since the beginning of time.

  4. Marque Empty the cache, pero desmarque todo lo demás.

  5. Haz clic Clear browsing datay espera a que termine.

  6. Reinicia Chrome.

Chrome debería respetar tu hostsarchivo ahora.


2
Aprendí esto hace mucho tiempo con IE6. Si hice un cambio en el archivo HOSTS mientras IE todavía estaba abierto, tendría que cerrarlo específicamente y ejecutarlo nuevamente para que pueda recoger los cambios. Esto va para la mayoría de los programas. Sin embargo, algunos programas (como las versiones de Chrome del último año o dos) volverán a leer el archivo HOSTS periódicamente, por lo que si realiza un cambio, solo espere un minuto o dos y luego actualice (no es necesario borrar el caché). (Esta política de relectura es útil a veces como esta, pero generalmente es bastante mala en realidad, ya que es un desperdicio, y particularmente mala si el archivo HOSTS es grande.)
Synetech

@Synetech: Chrome recoge los cambios al hostsinstante, siempre que la entrada no sea un nombre de host que ya esté en caché. Yo supongo que comprueba hostssi el TTL tiene pasado. Con grandes sitios web, eso puede llevar un tiempo.
Dennis

No sé los detalles sobre cómo las diferentes versiones van a releer el archivo HOSTS, pero puedes usar Filemon / ProcMon para verlo en acción; chrome.exeocasionalmente leerá todo el archivo.
Synetech

2
Hay una manera menos brutal de lavado de caché DNS de cromo superuser.com/questions/203674/...
hakunin

@hakunin: ordenado. En Chromium 25.0.1364.160 Ubuntu 12.04, esto ya no es necesario. Me registré net-internals/#dnsy el caché del host se borra automáticamente cuando /etc/hostsse modifica.
Dennis

1

Mi respuesta es una combinación de lo anterior porque me estoy conectando a mi oficina a través de Fortinet SSL VPN para Ubuntu 16.04.

Lo primero que tuve que hacer es abrir la consola de mi terminal y ejecutar el siguiente comando:

sudo nano /etc/resolvconf/resolv.conf.d/base

Agregué el siguiente ejemplo:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Luego guardé el archivo presionando CTRL-Oy cerré nano presionando CTRL-X.

Luego hice lo siguiente y funcionó perfectamente:

Para hacer que Chrome respete la nueva entrada, haga lo siguiente:

Edite /etc/hostscomo se describe @Renan.

  1. Ir a chrome://chrome/settings/clearBrowserData.
  2. Elija desde el principio de los tiempos.
  3. Marque Vaciar el caché, pero desmarque todo lo demás.
  4. Haga clic en Borrar datos de navegación y espere a que termine.
  5. Reinicia Chrome.

Chrome debería respetar tu archivo de hosts ahora.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.