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

29

J'ai des problèmes avec cela depuis un moment et j'ai essayé tout ce que je sais, alors j'ai pensé qu'il était enfin temps de demander de l'aide.

Toute modification que je fais /etc/hostsne 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 se charger depuis 192.168.1.100.

Si je ping, ça marche très bien. Cependant, lorsque j'accède à l' dev.julianfernand.esaide de Google Chrome ou Firefox, ce n'est pas le cas.

Maintenant, après quelques redémarrages, cela fonctionne. Mais depuis que je travaille dans une société d'hébergement WordPress gérée, je fais face à de nombreuses situations où je dois modifier mon fichier pour voir le site Web du client sur notre serveur.

Je n'arrive tout simplement pas à redémarrer mon ordinateur. Ce n'est pas productif du tout. Le redémarrage du service de mise en réseau ne fonctionne pas, de même pour l'effacement du cache (même le cache DNS Chrome interne).

Quelqu'un a-t-il une idée ici? Cela se produit avec elementaryOS (basé sur Ubuntu 12.04) et Ubuntu 13.10 (quotidiennement). Je n'ai encore essayé aucune autre version.

PS: si cette question, j'ai un serveur NGINX fonctionnant sur cette machine avec PHP-FPM et MySQL.

Merci d'avance :)

Julian Fernandes
la source
Difficile de connaître le problème. Lorsque l'accès au site via le nom d'hôte (dev.julianfernand.es) échoue, pouvez-vous y accéder via l'adresse IP (192.168.1.100)?
Panther
@ bodhi.zazen Oui, je peux. Cependant, comme notre entreprise n'utilise pas l'idée par défaut «IP d'accès pour accéder au site Web» à partir d'hôtes partagés, cela ne fonctionne pas.
Julian Fernandes
Je ne vous proposais pas d'accéder à des sites Web via IP comme solution à long terme. Les informations aident au débogage car elles excluent d'autres problèmes du pare-feu au routage vers les problèmes côté serveur.
Panther
Et si vous tapez l'adresse IP dans la barre d'adresse de votre navigateur?
Sergiy Kolodyazhnyy

Réponses:

14

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

Installez en nscdutilisant la commande suivante:

sudo apt-get install nscd

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

sudo service nscd restart

OU

sudo service dns-clean start

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

Arnold
la source
Veuillez également vérifier votre configuration Nginx et votre fichier journal d'erreurs. Il doit y avoir un indice là-dedans lorsque vous accédez au site.
Arnold
7

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
Ruediger
la source
6

Pour moi, la solution était d'éditer le /etc/nsswitch.conffichier (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 ça marche comme prévu!

jmarceli
la source
1
Vous voudrez probablement filescomme première entrée si vous voulez /etc/hostsavoir la priorité sur les résultats des serveurs DNS.
muru du
C'est étrange mais ce n'est pas une erreur, je dois avoir exactement cet ordre pour le faire fonctionner.
jmarceli
4

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.

Modifiez votre / etc / default / dnsmasq et passez ENABLED=1à ENABLED=0et redémarrez.

Mark E. Haase
la source
2
je n'ai aucun fichier dnsmasq dans le chemin spécifié. Je suis sur Linux 15.04
Hiren
Il n'y a plus de réponse acceptée. De quelle réponse parlez-vous?
toon81
3

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

Une nouvelle "fonctionnalité" dans l'édition de bureau Ubuntu 12.04 consiste à utiliser en dnsmasqtant que plugin pour NetworkManager pour le DNS local. Dnsmasq est destiné à accélérer les services DNS et DHCP mais a un effet secondaire malheureux: dnsmasqmet en cache le DNS local et ignore les modifications apportées à /etc/hosts. J'apporte des modifications fréquentes au fichier hosts lorsque je travaille sur des sites Web, donc cette "fonctionnalité" était assez ennuyeuse.

La solution consiste à désactiver dnsmasqdans le fichier de configuration Networkmanager. Ouvrez /etc/NetworkManager/NetworkManager.confet commentez la ligne:

dns=dnsmasq

Mon NetworkManager.confdossier contient les éléments suivants:

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

[ifupdown]
managed=false

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

Panthère
la source
1
J'ai essayé cela le 13.10 et elementaryOS, toujours rien. Mais merci pour l'aide! :)
Julian Fernandes
@JulianFernandes Il semble que cela ne fonctionne pas le 13.10. J'ai suivi ce conseil et cela a fonctionné le 12.04, mais après la mise à niveau vers 13.10, dnsmasq est de retour et je ne peux pas m'en débarrasser.
Mark E. Haase
1

Simple et mis à jour

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

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

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

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

Ce que j'ai fait, c'est d'exécuter Squid Proxy Server et d'ajouter les noms d'hôtes à / etc / hosts sur le serveur. (L'édition nécessite un redémarrage de calmar.)

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

Jim O'Connell
la source
0

Vérifiez les autorisations sur le /etc/hostsfichier.

Sur mon service cloud après le clonage d'un serveur, les autorisations sur le fichier hôtes ont changé de 644pour 600que le fichier ne puisse pas être lu par apache ( www-data) je suppose. Je courus à sudo chmod 644 hostspartir /etcet que le fixe.

Le problème a commencé comme:

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

Je l'ai retrouvé jusqu'à la variable serveur dans MongoClient pointant vers localhost. Je n'ai pas pu cingler localhost ou le nom d'hôte.

user228414
la source
J'ai parfois réussi à changer 'localhost' en '127.0.0.1' dans ce genre de cas
pbr
0

Modifier /etc/nsswitch.conf, commenter sous la ligne en ajoutant # 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 qui est /etc/hosts, puis il consultera DNS. Avec la configuration par défaut, il consulte DNS avant tout autre service ou fichier approprié.

Pour tester rapidement si son fonctionnement ou non, vous pouvez utiliser

sudo python -m SimpleHTTPServer 80

pour créer un serveur HTTP simple pour servir les fichiers du répertoire, puis commenter la ligne ci-dessous dans le /etc/hostsfichier

127.0.0.1      localhost
127.0.1.1      01hw730983

et ajouter

127.0.0.1       content

puis allez dans un navigateur et tapez content/, si vous pouvez voir la structure de l'annuaire, son fonctionnement, sinon ce n'est pas le cas.

bot
la source