Le fichier hosts sur les ordinateurs Windows est utilisé pour lier certaines chaînes de noms à des adresses IP spécifiques pour remplacer d'autres méthodes de résolution de noms.
Souvent, on décide de modifier le fichier hosts, et découvre que les modifications 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 "gotcha" peuvent provoquer cela, et il peut être frustrant de savoir laquelle.
Face au problème de Windows qui ignore un fichier d'hôtes, quel est un protocole de dépannage complet qui peut être suivi?
Cette question a des doublons sur SO, tels que fichier HOSTS ignoré
Cependant, ceux-ci ont tendance à traiter un cas spécifique, et une fois que toute erreur commise par le PO est découverte, la discussion est terminée. Si vous n'avez pas fait 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 couvriraient tous les cas .
Sur la base de ma propre expérience et de ce que j'ai rencontré pendant la recherche sur Google, voici quelques choses à essayer:
Les modifications apportées aux hôtes doivent prendre effet immédiatement, mais Windows met en cache les données de résolution de noms afin que pendant un certain temps, les anciens enregistrements puissent être utilisés. Ouvrez une ligne de commande (Windows + R, cmd
, Entrée) et tapez:
ipconfig /flushdns
Pour supprimer 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 d'hôtes est correct et le problème est ailleurs.
En outre, vous pouvez réinitialiser le cache 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
pas hosts.txt
) - soyez prudent si vous avez configuré des fenêtres pour masquer les extensions connues, vérifiez les propriétés pour être sûr: le type de fichier d'hôtes correct apparaîtra simplement comme "Fichier".#
) qui indique des commentaires?www.example.com
et example.com
- le plus sûr pour ajouter les deux)?Le format de chaque ligne est IP address
, puis un onglet horizontal (code d'échappement \t
, ASCII HT
, hex 0x09
) ou un seul espace (hex 0x20
), puis le nom d'hôte, c'est-à-dire. www.example.com
, puis 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 des images de contrôle Unicode pour indiquer des caractères de contrôle. (Ne copiez pas et collez-les dans votre fichier d'hôtes!)
192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊
Les octets individuels peuvent être visualisés dans Notepad ++ avec le plugin hex éditeur . Notepad ++ affichera également des caractères spéciaux (Affichage -> Afficher le symbole) afin que vous puissiez facilement inspecter le nombre et le type de caractères d'espacement.
Si vous avez copié et collé des entrées d'hôtes de quelque part, vous pouvez vous retrouver avec plusieurs espaces. En théorie, les hôtes prennent en charge plusieurs espaces séparant les deux colonnes, mais c'est une autre chose à essayer si rien d'autre ne fonctionne.
Pour être sûr, assurez-vous que toutes les lignes de votre fichier d'hôtes utilisent des tabulations ou des espaces, pas les deux.
Enfin, terminez le fichier avec une ligne vierge.
Il existe une clé de registre spécifiant l'emplacement du fichier hosts. Soi-disant, Windows ne prend pas réellement en charge la mise du fichier d'hôtes dans d'autres emplacements, mais vous voudrez peut-être vérifier. La clé est:
\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 autorisations sur le fichier, les attributs du fichier et des choses similaires. Pour recréer le fichier avec les autorisations par défaut:
hosts
.%SystemRoot%\System32\drivers\etc
répertoire et écraser l'ancien fichier.Le dernier point est important: la copie fonctionne, pas le déplacement.
Le compte local Users
doit pouvoir lire le fichier hosts . Pour vous 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 .hosts
et sélectionnez Properties
dans le menu contextuel.hosts Properties
fenêtre, cliquez sur l'onglet Security
.Group or user names:
boîte. Si %COMPUTERNAME%\Users
est présent, cliquez dessus pour voir les permissions.Users
n'est pas présent ou est présent mais ne dispose pas de l'autorisation Read
, cliquez sur Edit...
.Users
n'est pas présent, cliquez sur Add...
, tapez Users
, cliquez sur Check Names
, puis cliquez sur OK ou appuyez sur Entrée.Users
et assurez-vous que Read & execute
est coché dans la colonne Allow
. Cliquez sur OK. Si un Windows Security
une boîte d'alerte apparaît, choisissez Yes
pour continuer.hosts Properties
fenêtre.Le fichier d'hôtes doit être codé en ANSI ou UTF-8 sans BOM. Vous pouvez le faire avec Fichier -> Enregistrer sous.
Si un proxy est configuré, il peut contourner le fichier hosts. La solution consiste à ne pas utiliser le proxy ou à le configurer pour ne pas le faire.
Pour vérifier, accédez à votre Internet Explorer -> Options Internet -> Connexions -> Paramètres LAN. Si tout est vide et que "Détecter automatiquement les paramètres" est coché, vous n'utilisez pas de proxy.
Si vous comptez sur un proxy pour accéder au Web et que vous ne souhaitez donc pas le désactiver, vous pouvez ajouter des exceptions en accédant à Internet Explorer -> Options Internet -> Connexions -> Paramètres LAN -> Serveur proxy/Avancé. Ajoutez ensuite vos exceptions à la zone de texte Exceptions. Par exemple. localhost;127.0.0.1;*.dev
(Cela peut également résoudre les problèmes de proxy.)
Accédez aux propriétés de vos connexions réseau, puis aux paramètres TCP/IP et remplacez le premier serveur DNS par 127.0.0.1
(localhost). Le second devrait probablement être l'IP de votre DNS réel.
Ce n'est pas nécessaire pour que le fichier hosts fonctionne , mais cela peut aider dans votre cas si quelque chose est étrangement configuré.
Si vous utilisez une entrée de domaine .local sous la forme de myhost.local et qu'elle est ignorée, veuillez essayer ce qui suit
x.x.x.x myhost.local www.myhost.local
même si le www.myhost.local n'existe pas. Windows n'ajoute en quelque sorte pas son groupe de travail ou son domaine local.
Assurez-vous d'avoir d'abord mis l'adresse IP puis le "domaine" comme ceci:
127.0.0.1 bo.dev
127.0.0.1 www.bo.dev
Veuillez ajouter les autorisations de vérification des fichiers. J'ai constaté que même si j'avais des droits d'administrateur local sur l'ordinateur et donc sur les hôtes. Ce n'est que lorsque j'ai ajouté des utilisateurs locaux aux autorisations de fichier d'hôtes avec Lecture et Lecture et exécution, puis un ipconfig/flushdns que les hôtes sont devenus actifs.
Dans mes cas, j'ai essayé le fichier créé par 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.
Par conséquent, Windows ignore les paramètres dans C:\Windows\System32\drivers\etc\hosts et l'utilise à partir de hosts.ics.
Je rencontrais le même problème, les entrées de fichiers hôtes étant ignorées. J'ai tout essayé dans ce sujet et dans de nombreux autres sans succès. J'ai pensé que je publierais ce qui a fonctionné pour moi au cas où quelqu'un d'autre tomberait dessus.
Remarque: simplement ouvrir le fichier hosts et supprimer le contenu, vérifier qu'il était de 0 Ko et l'ajouter à nouveau n'a pas fonctionné. Je soupçonne un problème d'autorisations sur le fichier.
Un problème manqué dans la discussion ci-dessus est les noms non qualifiés (noms qui n'incluent pas de point) dans le fichier hosts. Vos paramètres réseau peuvent démarrer à ce stade et ajouter automatiquement votre propre domaine à la fin d'un domaine non qualifié. Par conséquent, le nom peut ne pas se résoudre, ou pire encore, se résoudre à une machine complètement différente.
Assurez-vous que vous avez entré les valeurs comme IP NAME
, pas aussi NAME IP
.
Cela peut se produire s'il n'y a, par exemple, qu'une seule entrée dans le fichier et lorsque vous ignorez le texte de mise en commentaire.
J'ai passé des heures, probablement des jours à ce sujet.
La sécurité IBM Trusteer Endpoint Rapport peut provoquer ce problème.
J'avais ajouté mysite.com à sa liste de sites de confiance.
Je pense que dans le cadre de sa sécurité, il empêche les logiciels malveillants ou les virus de vous détourner vers des sites alternatifs.
A pris mysite de la liste des sites de confiance et il ne vérifie et "corrige" plus le détournement de fichiers de mes hôtes.
J'espère que cela aidera quelqu'un à résoudre son problème.
Mon fichier d'hôtes est ignoré jusqu'à ce que je dispose d'une connexion réseau sur mon ordinateur portable (Windows 7). Une fois que je me connecte à un réseau, tout fonctionne comme prévu. Évidemment, sans réseau, je ne peux pas envoyer de ping aux hôtes, etc., mais je m'attendais quand même à ce que Windows obtienne ses adresses IP à partir du fichier hosts. Ce n'est pas le cas. Même après la déconnexion, il recherche toujours les adresses OK, mais entre le redémarrage de l'ordinateur et la première connexion à un réseau, il ignore le fichier hosts.
(Soit dit en passant, les tabulations, les espaces et aucun retour chariot ne sont pas pertinents pour autant que je sache).
Dans mon cas, le problème était que je copiais un fichier d'hôtes à partir d'un répertoire chiffré et remplaçais les etc/hosts par cela. J'ai dû regarder les propriétés et décocher la case "crypter le fichier".
Dans Windows, assurez-vous que HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath pointe vers le répertoire du fichier hosts.