Comment se fait-il que la redirection des fichiers hôtes échoue?

12

J'essaie de rediriger google.com vers ma machine locale pour le plaisir et l'apprentissage avec ce fichier / etc / hosts sur mon Mac.

127.0.0.1 www.google.com

Cependant, www.google.com est toujours mappé sur la page d'accueil de Google lorsque je le visite dans Chrome sur mon Mac. Pourquoi?

En gros, c'est tout ce que j'ai fait:

  1. Saisissez le sudo vim /etc/hoststerminal.
  2. Entré 127.0.0.1 www.google.comdans le fichier hosts.
  3. Enregistré et quittez vim.
David Faux
la source

Réponses:

10

Le hostsfichier ne fonctionne pas de cette façon. Vous ne pouvez l'utiliser que pour mapper un nom d'hôte à une adresse IP, pas à localhost.

Pour votre cas, vous utiliseriez 127.0.0.1 www.google.com, c'est-à-dire mappez www.google.com à 127.0.0.1.

Si vous souhaitez mapper plus de noms d'hôtes à une IP unique, il vous suffit d'ajouter ces noms d'hôtes sur la même ligne, par exemple 127.0.0.1 www.a.com www.b.com.

Renan
la source
1
Je vous remercie. Je viens de changer le fichier / etc / hosts sur mon Mac en 127.0.0.1 www.google.com. Cependant, google.com mène toujours à la page d'accueil de Google. Dois-je rafraîchir quelque chose? Dois-je redémarrer mon ordinateur?
David Faux
Vous ne devriez pas en avoir besoin. Essayez d'ajouter 127.0.0.1 google.com(sans le www) après cette ligne et vérifiez si cela fonctionne.
Renan
127.0.0.1 google.comne fonctionne pas non plus. Je ne suis pas sûr de ce qui se passe ... Je sais que /etc/hostsc'est un lien logiciel vers /private/etc/hostsun Mac, mais je ne pense pas que cela aide du tout.
David Faux
1
Une technicité: hostsmappe les noms d'hôte aux adresses IP, et non l'inverse.
Dennis
1
@Dennis, c'est ce que j'allais dire, mais là encore, cela fonctionne vraiment dans les deux sens quand on y pense, car cela crée une association entre deux éléments.
Synetech
9

Un navigateur Web n'est pas le meilleur moyen de vérifier si votre hostssyntaxe est correcte. Essayez d'exécuter

ping www.google.com

et vérifiez que ça sonne 127.0.0.1.

La raison pour laquelle Chrome semble ignorer votre hostsfichier est la mise en cache:

Si Chrome a déjà interrogé l'IP récemment (la définition de dernièrement dépend très probablement du temps de vie (TTL) renvoyé par le serveur DNS), il contournera le hostsfichier, car il connaît déjà l'IP correcte. Cela est fait pour accélérer la navigation sur le Web.

Pour que Chrome respecte la nouvelle entrée, procédez comme suit:

  1. Modifiez /etc/hostscomme décrit @Renan.

  2. Allez à chrome://chrome/settings/clearBrowserData.

  3. Choisissez since the beginning of time.

  4. Vérifiez Empty the cache, mais décochez tout le reste.

  5. Cliquez Clear browsing dataet attendez qu'il se termine.

  6. Redémarrez Chrome.

Chrome devrait hostsmaintenant respecter votre fichier.

Dennis
la source
2
J'ai appris cela il y a longtemps avec IE6. Si j'ai apporté une modification au fichier HOSTS alors qu'IE était encore ouvert, je devrais le fermer spécifiquement et l'exécuter à nouveau pour qu'il reprenne les modifications. Cela vaut pour la plupart des programmes. Cependant, certains programmes (comme les versions de Chrome de la dernière année ou deux) reliront le fichier HOSTS périodiquement, donc si vous apportez une modification, attendez une minute ou deux, puis actualisez (pas besoin de vider le cache). (Cette politique de relecture est parfois pratique comme ça, mais généralement assez mauvaise en réalité car elle est inutile, et particulièrement mauvaise si le fichier HOSTS est volumineux.)
Synetech
@Synetech: Chrome détecte les modifications hostsinstantanément, tant que l'entrée n'est pas un nom d'hôte déjà mis en cache. Je suppose qu'il ne vérifie hostsque si le TTL est passé. Avec les grands sites Web, cela peut prendre un certain temps.
Dennis
Je ne connais pas les détails de la façon dont les différentes versions procèdent à la relecture du fichier HOSTS, mais vous pouvez utiliser Filemon / ProcMon pour le voir en action; chrome.exelira parfois l'intégralité du fichier.
Synetech
2
Il existe un moyen moins brutal de
vider le
@hakunin: soigné. Sur Chromium 25.0.1364.160 Ubuntu 12.04, ce n'est même plus nécessaire. Je me suis enregistré net-internals/#dnset le cache de l'hôte est effacé automatiquement lorsqu'il /etc/hostsest modifié.
Dennis
1

Ma réponse est une combinaison de ce qui précède car je me connecte à mon bureau via le VPN SSL Fortinet pour Ubuntu 16.04.

La première chose que j'ai eu à faire est de faire apparaître ma console de terminal et d'exécuter la commande suivante:

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

J'ai ajouté l'exemple suivant:

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

Ensuite, j'ai enregistré le fichier en appuyant sur CTRL-Oet fermé nano en appuyant sur CTRL-X.

J'ai ensuite fait ce qui suit et cela a parfaitement fonctionné:

Pour que Chrome respecte la nouvelle entrée, procédez comme suit:

Modifiez /etc/hostscomme décrit @Renan.

  1. Allez à chrome://chrome/settings/clearBrowserData.
  2. Choisissez depuis le début des temps.
  3. Cochez Vider le cache, mais décochez tout le reste.
  4. Cliquez sur Effacer les données de navigation et attendez qu'elles se terminent.
  5. Redémarrez Chrome.

Chrome devrait maintenant respecter votre fichier d'hôtes.

user712460
la source