Was ist der Zweck von / etc / hosts?

21

Soweit ich weiß, handelt es sich bei der hostsDatei um eine von mehreren Systemfunktionen, die bei der Adressierung von Netzwerkknoten in einem Computernetzwerk hilfreich sind. Aber was sollte drin sein? Wenn ich Ubuntu standardmäßig installiere

127.0.0.1 localhost 

wird da sein. Warum?

  • Wie funktioniert das /etc/hostsbei JVM-Systemen wie Cassandra?
  • Wann ist DNS-Alternative, denke ich nicht auf einem einzelnen Computer?
MikiBelavista
quelle
Sehr ähnlich
Kusalananda
Meine /etc/hostsInhalte 127.0.0.2 mycouchdb bookmarkdb myothercouchappund 127.0.0.3 myapachi websiteich verwenden diese, um meine Entwicklung auf meinem lokalen Computer zu unterstützen. Ich habe 3 Dienste, die auf Port 80 lauschen. Ich möchte sie nicht auf den DNS setzen, da sie nur lokal sind.
Strg-Alt-Delor
Hast du es versucht man 5 hosts?
Reinstate Monica - M. Schröder
Verfügt Linux nicht über eine Manpage, auf der dies ausführlich erklärt wird? Dies ist die grundlegendste Frage.
Rob

Antworten:

45

Die Datei wurde /etc/hostsin früheren Zeiten von DARPA als Auflösungsdatei für alle mit dem Internet verbundenen Hosts gestartet (bevor DNS existierte). Es hat die höchste Priorität, dh, diese Datei wird vor allen anderen Namenssystemen bevorzugt. 1

Als einzelne Datei lässt sie sich jedoch nicht gut skalieren: Die Größe der Datei wird sehr bald zu groß. Aus diesem Grund wurde das DNS-System entwickelt, ein hierarchisch verteiltes Namenssystem. Es ermöglicht jedem Host, die numerische Adresse eines anderen Hosts effizient zu finden.

Das sehr alte Konzept der /etc/hostsDatei ist sehr einfach, nur eine Adresse und ein Hostname:

127.0.0.1      localhost

für jede Zeile. Das ist eine einfache Liste von Adress-Host-Paaren. 2

Die hauptsächliche heutige Verwendung besteht darin, die DNS-Auflösung zu umgehen. Eine in der /etc/hostsDatei gefundene Übereinstimmung wird vor jedem DNS-Eintrag verwendet. Wenn der gesuchte Name (wie localhost) in der Datei gefunden wird, wird überhaupt keine DNS-Auflösung durchgeführt.


1 Nun, die Reihenfolge der Namensauflösung ist tatsächlich in definiert /etc/nsswitch.conf, die normalerweise diesen Eintrag hat:

hosts:          files dns

was bedeutet "try files ( /etc/hosts); und wenn es fehlschlägt, versuchen Sie DNS."

Diese Reihenfolge könnte jedoch geändert oder erweitert werden.


2 (in der heutigen Zeit) Die hosts-Datei enthält Textzeilen, die aus einer IP-Adresse im ersten Textfeld gefolgt von einem oder mehreren Hostnamen bestehen. Jedes Feld ist durch Leerzeichen getrennt - Tabulatoren werden häufig aus historischen Gründen bevorzugt, es werden jedoch auch Leerzeichen verwendet. Kommentarzeilen können enthalten sein; Sie werden durch ein Oktothorpe (#) an der ersten Position solcher Linien angezeigt. Völlig leere Zeilen in der Datei werden ignoriert. Eine typische Hosts-Datei kann beispielsweise Folgendes enthalten:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Dieses Beispiel enthält Einträge für die Loopback-Adressen des Systems und deren Hostnamen. Die erste Zeile ist ein typischer Standardinhalt der Hostdatei. Die zweite Zeile enthält mehrere zusätzliche (möglicherweise nur in lokalen Systemen gültige) Namen. Das Beispiel zeigt, dass eine IP-Adresse mehrere Hostnamen haben kann (localhost und loopback) und dass ein Hostname sowohl IPv4- als auch IPv6-IP-Adressen zugeordnet werden kann, wie in der ersten bzw. zweiten Zeile gezeigt. Ein Name ( mycomputer.lan) kann in mehrere Adressen ( 192.168.0.8 10.0.0.27) aufgelöst werden. In diesem Fall hängt die Auswahl jedoch von den Routen (und deren Prioritäten) ab, die für den Computer festgelegt wurden.

Einige ältere Betriebssysteme hatten keine Möglichkeit , a Liste von Adressen für einen bestimmten Namen .

Isaac
quelle
5

Die Verwendung der Datei / etc / hosts, um einem lokalen System in einer Desktop-Umgebung einen lesbaren Namen zu geben, ist durchaus sinnvoll. Die hosts-Datei eignet sich hervorragend für die Verwendung in einem Heimnetzwerk oder sogar in einer Umgebung für kleine Unternehmen. Dies kann keine öffentliche Seite sein, wie die Internetadressierung - dann benötigen Sie DNS. Wenn das lokale Netzwerk groß genug ist oder einfach in verschiedene Subnetzwerke unterteilt ist oder aus einem anderen nützlichen Grund, wird DNS bevorzugt.

Die lokale Hostdatei und DNS werden mit unterschiedlicher Priorität verwaltet, sodass es nie zu Konflikten kommt.

francois P
quelle
4
Ich würde Konflikten nicht zustimmen, da ich eine Reihe von schwer zu debuggenden Problemen hatte, weil die Host-Bereitstellung nach Gruppe A veraltete /etc/hostsEinträge hinterlassen hat , die in Zukunft dazu geführt haben, dass die Operationen nach Gruppe B (meine Gruppe) fehlgeschlagen sind , und am Ende haben wir etwas eingerichtet, um den Inhalt von/etc/hosts
thrig
Konflikte innerhalb der Datei können natürlich existieren, aber dann ist es der Maschinenbesitzer selbst schuld :)
François P
2
Ich bin auch nicht einverstanden, niemals Konflikte zu haben. Ich musste sehr seltsame Fehler debuggen , da veraltete Host-Einträge mit DNS-Änderungen in Konflikt standen.
Rui F Ribeiro
@thrig: Vielleicht ist das Problem, dass Ihre Gruppen zu groß sind, um / etc / hosts effektiv zu nutzen. Funktioniert perfekt für die 5 Maschinen (im Moment) in meinem Heimnetzwerk.
Jamesqf
Nun, das System glaubt nicht, dass es einen Konflikt gibt. Es hat klare Anweisungen
bezüglich
3

Unter Linux sollte immer mindestens 127.0.0.1 localhostdie Datei /etc/hosts sowie die entsprechende IPv6-Adresse für localhost enthalten sein .

Es handelt sich einfach um die Auflösung des Hostnamens in eine numerische IPv4- oder IPv6-Adresse. Wenn Sie versuchen, sich mit (a) unix.stackexchange.com an einem Ort auf der Erde zu vernetzen, der wahrscheinlich nicht in Ihrer Nähe ist, oder (b) mit myotherpc im lokalen Netzwerk Ihres Hauses, ist dies entweder /etc/hostsoder ein Domain Name Server (DNS) Bei der Host-Auflösung müssen Sie sich also nicht erinnern, wenn Sie unix.stackexchage.com eingeben, was Sie als Mensch interessiert 185.53.179.7 da dies das ist, was der Computer wirklich wissen muss.

Wie bereits erwähnt /etc/nsswitch, definiert Linux in der Regel die Auflösungsreihenfolge des Hostnamens. Dies bedeutet, dass zuerst DNS überprüft wird, bevor NIS überprüft wird, und /etc/hostsansonsten die Datei überprüft wird Host nicht gefunden

Wie Sie die Auftragsprüfung verwalten und was / wo / wer den DNS- oder NIS-Dienst verwaltet, liegt bei Ihnen. Sie können auch alles außer Kraft setzen, indem Sie / etc / nsswitch ändern , dass nur das Einchecken /etc/hostsund niemals das Überprüfen mit DNS oder NIS oder ...

Bei einem einfachen Heimnetzwerk mit wenigen Computern, z. B. 2 bis N, würde ein Administrator diese einfach bearbeiten /etc/hosts auf jedem Computer , um die Richtigkeit zu einfacher, schneller und kostengünstiger als die Einrichtung eines Domain Name Servers oder eines anderen Dienstes mit einem Hauptstandort oder Berechtigung zum Auflösen des Hostnamens in eine IP-Adresse.

für linux web search die geschichte und den grund dahinter localhost . Viele Dinge in Linux hängen davon ab, dass der Name localhost in 127.0.0.1 aufgelöst wird. Wenn dies nicht der Fall ist, treten Probleme auf, und diese localhost-Definition würde / sollte in einer lokalen Systemdatei wie / etc / hosts erfolgen.

/etc/hostsStandardmäßig ist dies normalerweise das letzte Wort, auf das das Linux-Betriebssystem bei der Auflösung von Hostnamen zurückgreifen kann. in Windows XP und 7 ist die entsprechende Datei, C:\Windows\System32\drivers\etc\lmhosts ich weiß nicht über Windows 8 oder 10.

Ron
quelle
Eine typische Verwendung der Hosts-Datei, insbesondere unter Windows, besteht darin, den Versuch eines Programms, "zu Hause anzurufen", auf ein Nullgerät umzuleiten. Ich bin weit davon entfernt, darauf hinzuweisen, dass dies eine Prüfung der Rechtmäßigkeit verhindern könnte.
Laurence Payne
Ich habe noch nicht gefunden , den Editor auf meinem iPhone , das mir die Dateien / etc / hosts läßt ... so dass ich DNS auf meinem lan laufen
ivanivan