web-dev-qa-db-fra.com

Pourquoi le fichier / etc / hosts ne fonctionne-t-il pas?

Cela fait un moment que j'ai des problèmes avec ça et j'ai tout essayé, alors je me suis dit qu'il était enfin temps de demander de l'aide.

Toute modification apportée à /etc/hosts ne fonctionne tout simplement pas.

Exemple:

julian@ifrit:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   ifrit
192.168.1.100   dev.julianfernand.es

Dans l'exemple ci-dessus, lorsque j'accède à dev.julianfernand.es (cela n'existe pas), il devrait être chargé à partir de 192.168.1.100.

Si je cingle, cela fonctionne très bien. Cependant, lorsque j'accède à dev.julianfernand.es en utilisant Google Chrome ou Firefox, ce n'est pas le cas.

Maintenant, après avoir redémarré plusieurs fois, cela fonctionne. Mais comme je travaille dans une société d'hébergement WordPress gérée, je suis confronté à de nombreuses situations dans lesquelles je dois modifier mon fichier pour consulter le site Web du client sur notre serveur.

Je ne peux tout simplement pas continuer à redémarrer mon ordinateur. Ce n'est pas productif du tout. Le redémarrage du service réseau ne fonctionne pas, même chose pour la suppression du cache (même le cache DNS interne Chrome).

Est-ce que quelqu'un a une idée ici? Cela se produit avec elementaryOS (basé sur Ubuntu 12.04) et Ubuntu 13.10 (quotidien). Je n'ai encore essayé aucune autre version.

PS: Si cela a de l'importance, j'ai un serveur NGINX qui tourne sur cette machine avec PHP-FPM et MySQL.

Merci d'avance :)

28
Julian Fernandes

Dans Ubuntu, si vous souhaitez vider le cache DNS, vous devez redémarrer le démon nscd.

Installez nscd en utilisant la commande suivante:

Sudo apt-get install nscd

Vider le cache DNS dans Ubuntu À l'aide de la commande suivante:

Sudo service nscd restart

OR

Sudo service dns-clean start

Référence: http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html

14
Arnold

Ce qui suit a fonctionné pour moi: ajouter

addn-hosts=/etc/hosts

dans

/etc/NetworkManager/dnsmasq.d/hosts.conf

tuer Dnsmasq et

service NetworkManager restart
6
Ruediger

Pour moi, la solution a été d’éditer le fichier /etc/nsswitch.conf (vous pouvez utiliser la commande Sudo vim /etc/nsswitch.conf). J'ai changé de ligne:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

à:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

et maintenant cela fonctionne comme prévu!

6
jmarceli

La réponse acceptée fonctionne de 12.04 à 13.04 en désactivant dnsmasq, mais elle a cessé de fonctionner pour moi en 13.10. J'ai trouvé la nouvelle solution suivante pour 13.10.

Éditez votre/etc/default/dnsmasq et changez ENABLED=1 en ENABLED=0 et redémarrez.

4
Mark E. Haase

De: http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html

Une nouvelle "fonctionnalité" dans Ubuntu 12.04 desktop edition consiste à utiliser dnsmasq en tant que plug-in vers NetworkManager pour le DNS local. Dnsmasq est destiné à accélérer les services DNS et DHCP, mais a un effet secondaire déplorable: dnsmasq met en cache le DNS local et ignore les modifications apportées à /etc/hosts. J'apporte souvent des modifications au fichier hosts pendant que je travaille sur des sites Web, donc cette "fonctionnalité" était assez ennuyante.

La solution consiste à désactiver dnsmasq dans le fichier de configuration de Networkmanager. Ouvrez /etc/NetworkManager/NetworkManager.conf et commentez la ligne:

dns=dnsmasq

Mon fichier NetworkManager.conf contient les éléments suivants:

[main]
plugins=ifupdown,keyfile
# dns=dnsmasq

[ifupdown]
managed=false

Voir aussi https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298

3
Panther

Simple et mis à jour

  1. Créez /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Mettez des lignes comme address=/whatever/1.2.3.4 dedans. Voir la documentation (cherchez --address). Les caractères génériques sont possibles: address/.whatever./1.2.3.4.
  3. Kill dnsmasq ( bug ).
  4. Redémarrez-le: $ service network-manager restart.
1
mightyiam

Vérifiez les autorisations sur le fichier /etc/hosts.

Sur mon service cloud, après le clonage d'un serveur, les autorisations sur le fichier hosts ont été modifiées de 644 à 600 afin que le fichier ne puisse pas être lu par Apache (www-data). J'ai exécuté Sudo chmod 644 hosts à partir de /etc et cela a été corrigé.

Le problème a commencé comme:

MongoConnectionException Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted. 

Je l'ai retrouvé dans la variable serveur de MongoClient pointant vers localhost. Je suis incapable de cingler localhost ou le nom d'hôte.

0
user228414

Editez /etc/nsswitch.conf, commentez la ligne ci-dessous en ajoutant un # devant la ligne.

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

et ajouter

hosts:          files mdns4_minimal [NOTFOUND=return] dns

Fondamentalement, la configuration est réorganisée. Maintenant, le processus de recherche de domaine consultera d'abord le fichier /etc/hosts, puis consultera DNS. Avec la configuration par défaut, il consulte d'abord DNS avant tout autre service ou fichier approprié.

Pour tester rapidement si cela fonctionne ou non, vous pouvez utiliser

Sudo python -m SimpleHTTPServer 80

créer un simple serveur HTTP pour servir des fichiers à partir d'un répertoire, puis commenter sous la ligne dans le fichier /etc/hosts

127.0.0.1      localhost
127.0.1.1      01hw730983

et ajouter

127.0.0.1       content

ensuite, allez dans un navigateur et tapez content/, si vous êtes capable de voir la structure de répertoires fonctionner autrement.

0
bot

Il semble que votre configuration ressemble beaucoup à la mienne. J'ai un ordinateur sous Ubuntu comme serveur de bureau et hôte de développement. Sur cette boîte, je lance les applications Nginx, Apache, Tomcat, Rails et tout ce dont j'ai besoin.

Sur mon Mac, je peux simplement ajouter une entrée d'hôtes et charger le serveur avec le nom dont j'ai besoin, mais d'un client ElementaryOS, cela ne fonctionne pas.

J'ai essayé les correctifs ci-dessus, sans succès.

Ce que j'ai fait était d'exécuter Squid Proxy Server et d'ajouter les noms d'hôte à/etc/hosts sur le serveur. (La modification nécessite un redémarrage du calmar.)

Ensuite, définissez les paramètres de proxy appropriés dans votre navigateur ou dans le panneau de configuration du système d'exploitation.

0
Jim O'Connell