Sur la base de ma propre expérience et de ce que j'ai trouvé sur Google, voici quelques conseils à suivre :
1. Avez-vous vérifié qu'il fonctionne correctement ?
Les modifications apportées aux hôtes devraient prendre effet immédiatement, mais Windows met en cache les données de résolution de noms, de sorte que les anciens enregistrements peuvent être utilisés pendant un certain temps. 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 votre fichier hosts pour www.example.com ou une entrée ipv6 dans vos hôtes pour ipv6.example.com) :
ping -4 www.example.com -n 1
ping -6 www.example.com -n 1
Et voyez si elle 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
NB : nslookup
ne regarde pas le fichier hosts. Voir NSLOOKUP et NBLOOKUP donnent une adresse IP ; PING en trouve une autre.
2. Principes de base
- Votre fichier hosts est-il nommé correctement ? Il devrait être
hosts
et non host
etc.
- L'extension est-elle correcte ? Il ne devrait pas avoir d'extension (
hosts
no 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 de fichier hôte correct apparaîtra sous la forme d'un simple "Fichier".
- Avez-vous suivi le syntaxe correcte ? Avez-vous accidentellement préfixé des lignes avec un dièse (
#
) qui indique des commentaires ?
- Avez-vous pris soin de toutes les variantes (
www.example.com
y example.com
- le plus sûr est d'ajouter les deux) ?
3. Espace blanc
Le format de chaque ligne est le suivant IP address
puis une tabulation horizontale (code d'échappement \t
, ASCII HT
, hex 0x09
) ou un seul espace (hex 0x20
), puis le nom de l'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 les images de contrôle Unicode pour indiquer les caractères de contrôle. (Ne copiez pas ces images et ne les collez pas dans votre fichier d'hôtes !)
192.0.2.1www.example.com
2001:db8:8:4::2ipv6.example.com
Les octets individuels peuvent être consultés dans Notepad++ con el plugin pour l'éditeur hexagonal . 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 d'hôtes à partir de quelque part, vous pouvez vous retrouver avec plusieurs espaces. 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.
Pour plus de 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.
4. Clé de registre
Il existe une clé de registre spécifiant 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
Ou, dans une fenêtre d'invite de commande, tapez :
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -v DataBasePath
qui devrait afficher quelque chose de similaire à :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DataBasePath REG_EXPAND_SZ %SystemRoot%\System32\drivers\etc
5. Permissions
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 :
- Créez un nouveau fichier texte sur votre bureau.
- Copiez et collez le contenu de votre fichier hosts actuel dans ce fichier dans le Bloc-notes.
- Sauvegardez le nouveau fichier texte et renommez-le en
hosts
.
- Copie ( ne pas bouger ) le fichier dans votre
%SystemRoot%\System32\drivers\etc
et écraser l'ancien fichier.
Le dernier point est important : la copie fonctionne, le déplacement ne fonctionne pas.
Le local Users
compte doit être capable de lire le fichier hosts . Pour vous en assurer (sous Windows 7) :
- Naviguez vers
%SystemRoot%\System32\drivers\etc
dans l'Explorateur Windows.
- Si vous ne pouvez pas voir le
hosts
fichier, s'assurer que vous pouvez voir les fichiers cachés et les fichiers système .
- Cliquez avec le bouton droit de la souris sur le
hosts
et sélectionnez Properties
dans le menu contextuel.
- Dans le
hosts Properties
cliquez sur le bouton Security
onglet.
- Examinez la liste des noms dans le
Group or user names:
boîte. Si %COMPUTERNAME%\Users
est présent, cliquez dessus pour afficher les autorisations.
- Si
Users
n'est pas présent, ou est présent mais n'a pas de Read
cliquez sur Edit...
.
- Si
Users
n'est pas présent, cliquez sur Add...
, type Users
, cliquez Check Names
et cliquez sur OK ou appuyez sur Entrée.
- Sélectionnez
Users
et s'assurer que Read & execute
est vérifié dans le Allow
colonne. Cliquez sur OK. Si un Windows Security
La boîte d'alerte s'affiche, choisissez Yes
pour continuer.
- Cliquez sur OK pour fermer le
hosts Properties
fenêtre.
- Allez jusqu'à la section 1 de cette réponse et suivez les instructions pour vérifier si cela fonctionne maintenant.
Ou, dans une fenêtre d'invite de commande, tapez :
icacls %SystemRoot%\System32\drivers\etc\hosts
qui devrait afficher quelque chose comme :
C:\WINDOWS\System32\drivers\etc\hosts NT AUTHORITY\SYSTEM:(F)
NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APPLICATION PACKAGES:(I)(RX)
Vous devriez voir un (R)
après BUILTIN\Users
.
6. Encodage
Le fichier hosts doit être codé en ANSI ou UTF-8 sans BOM. Vous pouvez le faire avec Fichier -> Enregistrer sous.
7. Proxies
Si vous avez configuré un proxy, il peut contourner le fichier hosts. La solution est de ne pas utiliser le proxy, ou de 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 utilisez un proxy pour accéder au Web et que vous ne souhaitez 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
8. Adresse DNS
(Cela peut également 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.
9. adresses locales
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 www.myhost.local n'existe pas. Windows n'ajoute pas son groupe de travail ou son domaine local.
10. Limites de ligne / de comptage
(ajouté à cette réponse pour la rendre visible car elle a été mentionnée à plusieurs reprises)
Le fichier hosts de Windows semble avoir une limite de lignes ou d'hôtes. Si vous avez plus de 150 caractères sur une ligne ou plus de 8 entrées hosts pour une IP, créez une nouvelle ligne.
Par exemple, au lieu de :
1.2.3.4 host1.com host2.com host3.com host4.com host5.com host6.com host7.com host8.com host9.com
Essayez ça :
1.2.3.4 host1.com host2.com host3.com host4.com host5.com
1.2.3.4 host6.com host7.com host8.com host9.com