archivo de hosts ignorado, ¿cómo solucionar el problema?

El archivo de hosts en los ordenadores Windows se utiliza para vincular ciertas cadenas de nombres a direcciones IP específicas para anular otros métodos de resolución de nombres.

A menudo, uno decide cambiar el archivo de hosts, y descubre que los cambios se niegan a surtir efecto, o que incluso las entradas antiguas del archivo de hosts son ignoradas a partir de entonces. Un número de "gotcha" errores pueden causar esto, y puede ser frustrante para averiguar cuál.

Ante el problema de que Windows ignore un archivo de hosts, ¿cuál es el protocolo de solución de problemas que se puede seguir?


Esta pregunta tiene duplicados en SO, como https://serverfault.com/questions/50934/hosts-file-being-ignored

Sin embargo, estos tienden a tratar un caso específico, y una vez que se descubre el error que cometió el OP, la discusión ha terminado. Si por casualidad no has cometido el mismo error, esta discusión no es muy útil. Así que pensé que sería más útil tener un protocolo general para resolver todos los problemas relacionados con los hosts que cubriera todos los casos.

Solución

Basándome en mi propia experiencia y en lo que he encontrado al buscar en Google, aquí hay algunas cosas que se pueden probar:

1. ¿Has comprobado que funciona correctamente?

Los cambios en los hosts deberían surtir efecto inmediatamente, pero Windows almacena en caché los datos de resolución de nombres, por lo que durante algún tiempo pueden utilizarse los registros antiguos. Abre una línea de comandos (Windows+R, cmd, Enter) y escribe:

ipconfig /flushdns

Para eliminar los datos antiguos. Para comprobar si funciona, utilice (suponiendo que tiene una entrada ipv4 en sus hosts para www.example.com, o una entrada ipv6 en sus hosts para ipv6.ejemplo.com)

ping www.example.com -n 1
ping -6 ipv6.example.com -n 1

Y mira si utiliza la IP correcta. Si es así, tu archivo de hosts está bien y el problema está en otra parte. Además, puedes restablecer la caché de NetBios con (abre la consola como administrador o fallará):

nbtstat -R

Puedes comprobar los datos actuales de la caché DNS con:

ipconfig /displaydns | more

2. Lo básico

  • ¿Su archivo de hosts se llama correctamente? Debe ser hosts y no host, etc.
  • ¿Es correcta la extensión? No debería tener extensión (hosts no hosts.txt) - tenga cuidado si ha configurado Windows para ocultar las extensiones conocidas, compruebe las propiedades para estar seguro: El tipo de archivo hosts correcto aparecerá simplemente como "Archivo".
  • ¿Ha seguido la sintaxis correcta? ¿Accidentalmente prefijó las líneas con una almohadilla (#) que indica comentarios?
  • ¿Ha tenido en cuenta todas las variantes (www.example.com y ejemplo.com - lo más seguro es añadir ambas)?

    3. Espacios en blanco

    El formato de cada línea es dirección IP, luego un tabulador horizontal (código de escape t, ASCII HT, hex 0x09) o un solo espacio (hex 0x20), luego el nombre del host, es decir www.example.com, luego finalmente un retorno de carro seguido de un avance de línea, (códigos de escape r\n, ASCII CRLF, hex 0x0d 0x0a). Entradas de ejemplo, utilizando imágenes de control Unicode para indicar los caracteres de control. (¡No copie y pegue esto en su archivo de hosts!)

192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊

Los bytes individuales pueden ser vistos en Notepad++ con el plugin del editor hexadecimal. Notepad++ también mostrará los caracteres especiales (View -> Show Symbol) para que puedas inspeccionar fácilmente el número y tipo de caracteres de los espacios en blanco. Si has copiado y pegado las entradas de hosts desde algún sitio, puedes acabar con múltiples espacios. En teoría, los hosts soportan múltiples espacios que separan las dos columnas, pero es otra cosa que hay que probar si nada más funciona. Para estar seguro, asegúrate de que todas las líneas de tu archivo de hosts utilizan tabulaciones o espacios, no ambos. Por último, termine el archivo con una línea en blanco.

4. Clave del Registro

Hay una clave de registro que especifica la ubicación del archivo de hosts. Supuestamente, Windows no admite poner el archivo de hosts en otras ubicaciones, pero es posible que quiera comprobarlo. La clave es

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath

La entrada debería ser:

%SystemRoot%\System32\drivers\etc

5. Permisos

A veces hay problemas con los permisos del archivo, los atributos del archivo y cosas similares. Para recrear el archivo con los permisos por defecto:

  1. Crea un nuevo archivo de texto en tu escritorio.
  2. Copie y pegue el contenido de su archivo de hosts actual en este archivo en el Bloc de notas.
  3. Guarda el nuevo archivo de texto y renómbralo como hosts.
  4. Copie (no mueva) el archivo a su directorio %SystemRoot%\System32\drivers\etc, y sobrescriba el archivo antiguo. El último punto es importante: Copiar funciona, mover no. La cuenta local Users debe ser capaz de leer el archivo hosts. Para asegurarse (en Windows 7):
  5. Navegue a %SystemRoot%\System32\drivers\etc en el Explorador de Windows.
  6. Si no puede ver el archivo hosts, [asegúrese de que puede ver los archivos ocultos y del sistema] (https://superuser.com/questions/101999/how-do-you-show-hidden-system-folders-in-windows-7).
  7. Haga clic con el botón derecho del ratón en el archivo hosts y seleccione Propiedades en el menú contextual.
  8. En la ventana de propiedades de hosts, haz clic en la pestaña Seguridad.
    1. Examine la lista de nombres en la casilla Nombres de grupo o de usuario:. 6. Si está presente %COMPUTERNAME%\Users, haga clic en él para ver los permisos.
  9. Si Users no está presente, o está presente pero no tiene permiso de Read, haga clic en Edit....
  10. Si Users no está presente, haga clic en Add..., escriba Users, haga clic en Check Names, y haga clic en OK o pulse Enter.
    1. Seleccione "Usuarios" y asegúrese de que en la columna "Permitir" esté marcada la opción "Leer y ejecutar". Haga clic en Aceptar. Si aparece un cuadro de alerta de Seguridad de Windows, elija para continuar.
  11. Haga clic en Aceptar para cerrar la ventana de Propiedades de los hosts.
  12. Vaya a la sección 1 de esta respuesta y siga las instrucciones para comprobar si ahora funciona.

    6. Codificación

    El archivo hosts debe estar codificado en ANSI o UTF-8 sin BOM. Usted puede hacer esto con Archivo -> Guardar como.

    7. Proxies

    Si tiene un proxy configurado, puede saltarse el archivo de hosts. La solución es no usar el proxy, o configurarlo para que no lo haga. Para comprobarlo, vaya a su Internet Explorer -> Opciones de Internet -> Conexiones -> Configuración de la LAN. Si todo está en blanco y "Detectar automáticamente la configuración" está marcada, usted no está utilizando un proxy. Si depende de un proxy para acceder a la web y, por tanto, no quiere desactivarlo, puede añadir excepciones yendo a Internet Explorer -> Opciones de Internet -> Conexiones -> Configuración de LAN -> Servidor Proxy / Avanzado. A continuación, añada sus excepciones en el cuadro de texto Excepciones. Por ejemplo, localhost;127.0.0.1;*.dev.

    8. Dirección DNS

    (Esto también puede resolver los problemas de proxy). Vaya a las propiedades de sus conexiones de red, luego a la configuración TCP/IP, y cambie el primer servidor DNS a 127.0.0.1 (localhost). El segundo debe ser probablemente su IP real de DNS's. Esto no es necesario para que el archivo de hosts funcione, pero puede ayudar en tu caso si algo está configurado de forma extraña.

    9. Direcciones .local

    Si está usando una entrada de dominio .local en la forma de mihost.local y es ignorada, por favor pruebe lo siguiente

x.x.x.x myhost.local www.myhost.local

incluso si el www.myhost.local no existe. Windows de alguna manera no agrega su grupo de trabajo o localdomain.

Comentarios (19)

Asegúrate de haber puesto primero la dirección ip y luego el "dominio" así:

127.0.0.1   bo.dev
127.0.0.1   www.bo.dev
Comentarios (4)

En mis casos probé con el archivo creado por Windows 7: C:\NWindows\NSystem32\Ndrivers\Netc\Nhosts.ics.

hosts.ics:

# This file has been automatically generated for use by Microsoft Internet
# Connection Sharing. It contains the mappings of IP addresses to host names
# for the home network. Please do not make changes to the HOSTS.ICS file.
# Any changes may result in a loss of connectivity between machines on the
# local network.

Como resultado, Windows ignora la configuración en C:\Windows\System32\drivers\etc\hosts y la utiliza desde hosts.ics.

Comentarios (3)