Le fichier hosts des ordinateurs Windows est utilisé pour lier certaines chaînes de noms à des adresses IP spécifiques afin de remplacer les autres méthodes de résolution de noms.
Souvent, on décide de modifier le fichier hosts, et on découvre que les changements refusent de prendre effet, ou que même les anciennes entrées du fichier hosts sont ignorées par la suite. Un certain nombre d'erreurs de type "gotcha" peuvent être à l'origine de ce phénomène, et il peut être frustrant de trouver laquelle.
Lorsque vous êtes confronté au problème de Windows ignorant un fichier hosts, quel est le protocole de dépannage complet à suivre ?
Cette question a des doubles sur SO, comme https://serverfault.com/questions/50934/hosts-file-being-ignored.
Cependant, ils ont tendance à traiter d'un cas spécifique, et une fois que l'erreur commise par le PO est découverte, la discussion est terminée. Si vous n’avez pas commis la même erreur, une telle discussion n’est pas très utile. J'ai donc pensé qu'il serait plus utile d'avoir un protocole général pour résoudre tous les problèmes liés aux hôtes, qui couvrirait tous les cas.
Sur la base de ma propre expérience et de ce que j'ai trouvé en cherchant sur Google, voici quelques trucs à essayer :
Les modifications apportées aux hôtes devraient prendre effet immédiatement, mais Windows met en cache les données de résolution de nom, donc pendant un certain temps, les anciens enregistrements peuvent être utilisés. Ouvrez une ligne de commande (Windows+R, cmd
, Enter) et tapez :
ipconfig /flushdns
Pour abandonner les anciennes données. Pour vérifier si cela fonctionne, utilisez (en supposant que vous avez une entrée ipv4 dans vos hôtes pour www.example.com, ou une entrée ipv6 dans vos hôtes pour ipv6.example.com) :
ping www.example.com -n 1
ping -6 ipv6.example.com -n 1
Et voyez s'il utilise la bonne IP. Si oui, votre fichier hosts est correct et le problème est ailleurs. Vous pouvez également réinitialiser le cache de NetBios avec (ouvrez la console en tant qu'administrateur ou cela échouera) :
nbtstat -R
Vous pouvez vérifier les données actuelles dans le cache DNS avec :
ipconfig /displaydns | more
hosts
et non host
, etc.hosts
et non pas hosts.txt
) - attention si vous avez configuré Windows pour qu'il cache les extensions connues, vérifiez les propriétés pour être sûr : Le type correct du fichier hosts s'affichera comme un simple "File" ;.#
) qui indique des commentaires ?www.example.com
et example.com
- le plus sûr est d'ajouter les deux) ?Le format de chaque ligne est le suivant : Adresse IP
, puis une tabulation horizontale (code d'échappement \t
, ASCII HT
, hex 0x09
) ou un espace simple (hex 0x20
), puis le nom de l'hôte, www.example.com
, et enfin un retour chariot suivi d'un saut de ligne, (codes d'échappement r\n
, ASCII CRLF
, hex 0x0d 0x0a
).
Exemples d'entrées, utilisant les images de contrôle Unicode pour indiquer les caractères de contrôle. (Ne copiez pas et collez-les dans votre fichier hosts !)
192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊
Les octets individuels peuvent être visualisés dans [Notepad++][2] avec le [plugin de l'éditeur hexadécimal][3]. Notepad++ affichera également les caractères spéciaux (View -> Show Symbol) afin que vous puissiez facilement vérifier le nombre et le type de caractères d'espacement. Si vous avez copié et collé des entrées hosts depuis quelque part, vous pouvez vous retrouver avec des espaces multiples. En théorie, hosts supporte les espaces multiples séparant les deux colonnes, mais c’est une autre chose à essayer si rien d’autre ne fonctionne. Par sécurité, assurez-vous que toutes les lignes de votre fichier hosts utilisent soit des tabulations, soit des espaces, mais pas les deux. Enfin, terminez le fichier par une ligne blanche.
Il existe une clé de registre qui spécifie l'emplacement du fichier hosts. Il semblerait que Windows ne permette pas de placer le fichier hosts à un autre endroit, mais vous pouvez vérifier. La clé est la suivante :
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
L'entrée doit être :
%SystemRoot%\System32\drivers\etc
Parfois, il y a des problèmes avec les permissions sur le fichier, les attributs du fichier et d'autres choses similaires. Pour recréer le fichier avec les permissions par défaut :
hosts
.%SystemRoot%\System32\drivers\etc
, et écrasez l'ancien fichier.
Le dernier point est important : la copie fonctionne, le déplacement ne fonctionne pas.
Le compte local Users
doit être capable de lire le fichier hosts. Pour s'en assurer (sous Windows 7) :%SystemRoot%\System32\drivers\etc
dans l'explorateur Windows.hosts
, [assurez-vous que vous pouvez voir les fichiers cachés et les fichiers système] (https://superuser.com/questions/101999/how-do-you-show-hidden-system-folders-in-windows-7).hosts
et sélectionnez Propriétés
dans le menu contextuel.Propriétés des hôtes
, cliquez sur l'onglet Sécurité
.Noms de groupe ou d'utilisateur:
. Si %COMPUTERNAME%\Users
est présent, cliquez dessus pour afficher les permissions.Users
n'est pas présent, ou est présent mais n'a pas la permission Lecture
, cliquez sur Modifier...
.Users
n'est pas présent, cliquez sur Add...
, tapez Users
, cliquez sur Check Names
, et cliquez sur OK ou appuyez sur Entrée.Propriétés des hôtes
.Le fichier hosts doit être encodé en ANSI ou UTF-8 sans BOM. Vous pouvez le faire avec File -> Save As.
Si vous avez configuré un proxy, il peut contourner le fichier hosts. La solution consiste à ne pas utiliser le proxy, ou à le configurer pour qu'il ne le fasse pas.
Pour vérifier, allez dans votre Internet Explorer -> Options Internet -> Connexions -> Paramètres LAN. Si tout est vide et que la case "Détecter automatiquement les paramètres" est cochée, vous n'utilisez pas de proxy.
Si vous comptez sur un proxy pour accéder au Web et que vous ne voulez donc pas le désactiver, vous pouvez ajouter des exceptions en allant dans Internet Explorer -> Options Internet -> Connexions -> Paramètres LAN -> Serveur proxy / Avancé. Ajoutez ensuite vos exceptions dans la zone de texte Exceptions. Par exemple, localhost;127.0.0.1;*.dev
.
(Cela peut aussi résoudre les problèmes de proxy).
Allez dans les propriétés de vos connexions réseau, puis dans les paramètres TCP/IP, et changez le premier serveur DNS en 127.0.0.1
(localhost). Le second devrait probablement être l’IP de votre DNS actuel.
**Ce n'est pas nécessaire pour que le fichier hosts fonctionne, mais cela peut être utile dans votre cas si quelque chose est configuré de façon étrange.
Si vous utilisez une entrée de domaine .local sous la forme myhost.local et qu'elle est ignorée, essayez ce qui suit
x.x.x.x myhost.local www.myhost.local
même si le site www.myhost.local n'existe pas. Windows n'ajoute pas son groupe de travail ou son domaine local. [1] : https://en.wikipedia.org/wiki/Hosts_%28file%29 [2] : http://www.notepad-plus-plus.org/ [3] : http://sourceforge.net/projects/npp-plugins/forums/forum/670932
Dans mon cas, j'ai essayé de créer un fichier sous Windows 7 : C:\Windows\System32\drivers\etc\hosts.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.
En conséquence, Windows ignore les paramètres de C:\Windows\System32\drivers\etc\hosts et les utilise depuis hosts.ics.