Warum funktioniert die Datei / etc / hosts nicht?

29

Ich habe seit einer Weile Probleme damit und habe alles versucht, was ich weiß, also dachte ich, es sei endlich Zeit, um Hilfe zu bitten.

Alle Änderungen, die ich an vornehme, /etc/hostsfunktionieren einfach nicht.

Beispiel:

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

Wenn ich im obigen Beispiel darauf zugreife dev.julianfernand.es(das gibt es nicht), sollte es von geladen werden 192.168.1.100.

Wenn ich pinge, funktioniert es einwandfrei. Wenn ich jedoch dev.julianfernand.esüber Google Chrome oder Firefox auf etwas zugreife , geschieht dies nicht.

Jetzt, nachdem ich ein paar Mal neu gestartet habe, funktioniert es. Da ich jedoch bei einem verwalteten WordPress-Hosting-Unternehmen arbeite, muss ich in vielen Situationen meine Datei bearbeiten, um die Website des Kunden auf unserem Server zu sehen.

Ich kann meinen Computer einfach nicht mehr neu starten. Es ist überhaupt nicht produktiv. Das Neustarten des Netzwerkdienstes funktioniert nicht. Dies gilt auch für das Löschen des Caches (sogar für den internen Chrome-DNS-Cache).

Hat hier jemand eine Idee? Dies geschieht mit elementaryOS (basierend auf Ubuntu 12.04) und Ubuntu 13.10 (täglich). Habe noch keine andere Version ausprobiert.

PS: In diesem Fall läuft auf diesem Rechner ein NGINX-Server mit PHP-FPM und MySQL.

Danke im Voraus :)

Julian Fernandes
quelle
Das Problem ist schwer zu erkennen. Wenn der Zugriff auf die Site über den Hostnamen (dev.julianfernand.es) fehlschlägt, können Sie dann über die IP-Adresse (192.168.1.100) darauf zugreifen?
Panther
@ bodhi.zazen Ja, ich kann. Da unser Unternehmen jedoch nicht die Standardidee "Zugriffs-IP für den Zugriff auf die Website" von gemeinsam genutzten Hosts verwendet, funktioniert dies nicht.
Julian Fernandes
Ich habe nicht vorgeschlagen, dass Sie als langfristige Lösung auf Websites über IP zugreifen. Die Informationen helfen jedoch beim Debuggen, da sie andere Probleme von der Firewall bis zum Routing zu serverseitigen Problemen ausschließen.
Panther
Was ist, wenn Sie die IP-Adresse in die Adressleiste Ihres Browsers eingeben?
Sergiy Kolodyazhnyy

Antworten:

14

Wenn Sie in Ubuntu den DNS-Cache leeren möchten, müssen Sie den nscdDaemon neu starten .

Installieren Sie nscdmit dem folgenden Befehl:

sudo apt-get install nscd

Leeren Sie den DNS-Cache in Ubuntu mit dem folgenden Befehl:

sudo service nscd restart

ODER

sudo service dns-clean start

Referenz: http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html

Arnold
quelle
Bitte überprüfen Sie auch Ihre Nginx-Konfiguration und die Fehlerprotokolldatei. Wenn Sie auf die Site zugreifen, muss ein Hinweis vorhanden sein.
Arnold
7

Bei mir hat folgendes geklappt: add

addn-hosts=/etc/hosts

im

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

töte dnsmasq und

service NetworkManager restart
Rüdiger
quelle
6

Für mich bestand die Lösung darin, die /etc/nsswitch.confDatei zu bearbeiten (Sie können den Befehl verwenden sudo vim /etc/nsswitch.conf). Ich habe die Zeile geändert:

hosts:          files mdns4_minimal [NOTFOUND=return] dns

zu:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

und jetzt funktioniert es wie erwartet!

jmarceli
quelle
1
Sie möchten wahrscheinlich filesals ersten Eintrag, wenn Sie /etc/hostsVorrang vor den Ergebnissen von DNS-Servern haben möchten .
muru
Das ist seltsam, aber es ist kein Fehler, ich muss genau diese Reihenfolge einhalten, damit es funktioniert.
Jmarceli
4

Die akzeptierte Antwort funktioniert von 12.04 bis 13.04 durch Deaktivieren dnsmasq, funktioniert aber in 13.10 nicht mehr für mich. Ich habe die folgende neue Lösung für 13.10 gefunden.

Bearbeiten Sie Ihre Datei / etc / default / dnsmasq und wechseln Sie ENABLED=1zu ENABLED=0und starten Sie sie neu.

Mark E. Haase
quelle
2
Ich habe keine DNSMASQ-Datei im angegebenen Pfad. Ich bin auf Linux 15.04
Hiren
Es gibt keine akzeptierte Antwort mehr. Über welche Antwort sprichst du?
Toon81
3

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

Eine neue "Funktion" in der Ubuntu 12.04 Desktop Edition ist die Verwendung dnsmasqals Plugin für NetworkManager für lokales DNS. Dnsmasq soll DNS- und DHCP-Dienste beschleunigen, hat jedoch eine unglückliche Nebenwirkung: dnsmasqZwischenspeichern des lokalen DNS und Ignorieren von Änderungen an /etc/hosts. Ich ändere häufig die Hosts-Datei, während ich an Websites arbeite, so dass dieses "Feature" ziemlich nervig war.

Die Lösung besteht darin, dnsmasqin der Networkmanager-Konfigurationsdatei zu deaktivieren . Öffne /etc/NetworkManager/NetworkManager.confund kommentiere die Zeile aus:

dns=dnsmasq

Meine NetworkManager.confDatei enthält Folgendes:

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

[ifupdown]
managed=false

Siehe auch https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298

Panther
quelle
1
Versuchte dies auf 13.10 und elementaryOS, immer noch nichts. Aber danke für die Hilfe! :)
Julian Fernandes
@JulianFernandes Es scheint, dass dies am 13.10 nicht funktioniert. Ich habe diesen Rat befolgt und es hat am 12.04 funktioniert, aber nach dem Upgrade auf 13.10 ist dnsmasq wieder da und ich kann es nicht mehr loswerden.
Mark E. Haase
1

Einfach und aktualisiert

  1. Erstellen /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Setzen Sie Linien wie address=/whatever/1.2.3.4in es. Siehe die Dokumentation (siehe --address). Wildcards sind möglich: address/.whatever./1.2.3.4.
  3. Töte dnsmasq( Käfer ).
  4. Starten Sie es: $ service network-manager restart.
mightyiam
quelle
0

Es klingt so, als ob dein Setup meinem sehr ähnlich ist. Ich habe eine Box mit Ubuntu als Office-Server und Entwicklungshost. Auf dieser Box starte ich Nginx-, Apache-, Tomcat-, Rails-Apps und alles, was ich sonst noch brauche.

Von meinem Mac aus kann ich einfach einen Host-Eintrag hinzufügen und den Server mit dem gewünschten Namen laden, aber von einem ElementaryOS-Client aus funktioniert das nicht.

Ich habe die obigen Korrekturen ohne Erfolg versucht.

Ich habe Squid Proxy Server ausgeführt und die Hostnamen zu / etc / hosts auf dem Server hinzugefügt. (Für die Bearbeitung ist ein Neustart von Squid erforderlich.)

Nehmen Sie anschließend die entsprechenden Proxy-Einstellungen in Ihrem Browser oder in der Systemsteuerung des Betriebssystems vor.

Jim O'Connell
quelle
0

Überprüfen Sie die /etc/hostsDateiberechtigungen.

Auf meinem Cloud-Dienst haben sich nach dem Klonen eines Servers die Berechtigungen für die Hosts-Datei von 644zu geändert , 600sodass die Datei vermutlich nicht von apache ( www-data) gelesen werden konnte . Ich rannte sudo chmod 644 hostsdavon /etcund das reparierte es.

Das Problem begann als:

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

Ich habe es auf die Servervariable in MongoClient zurückverfolgt, die auf localhost zeigt. Ich konnte localhost oder den Hostnamen nicht pingen.

user228414
quelle
Ich hatte manchmal Erfolg damit, in solchen Fällen 'localhost' auf '127.0.0.1' zu
ändern
0

Bearbeiten /etc/nsswitch.conf, unter der Zeile auskommentieren , indem Sie # vor der Zeile einfügen

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname

und hinzufügen

hosts:          files mdns4_minimal [NOTFOUND=return] dns

Grundsätzlich wird die Konfiguration neu angeordnet. Der Domain-Lookup-Prozess konsultiert zuerst die Datei /etc/hostsund dann DNS. Bei der Standardkonfiguration wird zuerst DNS abgefragt, bevor andere geeignete Dienste oder Dateien verwendet werden.

Für einen schnellen Test, ob es funktioniert oder nicht

sudo python -m SimpleHTTPServer 80

Erstellen eines einfachen HTTP-Servers zum Bereitstellen von Dateien aus dem Verzeichnis und anschließender Kommentierung unter der Zeile in der /etc/hostsDatei

127.0.0.1      localhost
127.0.1.1      01hw730983

und hinzufügen

127.0.0.1       content

Gehen Sie dann zu einem Browser und geben Sie ein content/, ob die Verzeichnisstruktur funktioniert, ansonsten nicht.

bot
quelle