Hosts-Datei: Ist es falsch, dieselbe IP-Adresse in mehreren Zeilen zu haben?

28

Seit einiger Zeit formatiere ich meine Hosts-Datei so. Beachten Sie die gleiche IP in zwei Zeilen:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

Ich habe kürzlich gelesen, dass Aliase in einer Zeile zusammengefasst werden sollen:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

Diese Methode gefällt mir jedoch nicht, da Sie bestimmte Aliase nicht einfach auskommentieren oder bestimmten Aliasen Kommentare hinzufügen können:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

Bisher hat dies gut funktioniert; Gibt es ein Problem damit?

AlexMA
quelle

Antworten:

28

Ich habe diesen Thread gefunden, in dem es darum geht, etwas in diese Richtung zu tun. Der Thread ist ziemlich hartnäckig, weil die /etc/hostsDatei nicht mehrzeilig ist .

Auszug - Betreff: / etc / hosts: Zwei Zeilen mit derselben IP-Adresse?

Nein es wird nicht. Die Resolver stoppen bei der ersten Auflösung. Etwas zu haben wie:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

Ich werde nicht tun, wovon du sprichst. ABER mit:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

Verursacht alle Arten von Chaos. Einschließlich Weiterleitung.

Ich würde im Allgemeinen nicht tun, was Sie versuchen. Wenn Sie mehr Beweise benötigen, sagt die Manpage sogar, dass Sie dies nicht tun sollen:

Auszug man hosts

Diese Handbuchseite beschreibt das Format der Datei / etc / hosts. Diese Datei ist eine einfache Textdatei, die Hostnamen IP-Adressen zuordnet, eine Zeile pro IP-Adresse. Für jeden Host sollte eine einzelne Zeile mit den folgenden Informationen vorhanden sein:

         IP_address canonical_hostname [aliases...]

Wenn Ihre Hostnamen FQDN sind und sich nicht überlappen, können Sie wahrscheinlich das tun, was Sie tun. Denken Sie jedoch daran, dass bei Überschneidungen, wie sie im obigen Thread erwähnt wurden, möglicherweise Probleme behoben werden.

slm
quelle
1
Ich beobachte die Effekte, die von beiden Parteien in diesem Thread festgestellt wurden, nicht . Zum Beispiel wirken sich mehrere Zeilen für 127.0.0.1 nicht auf die Ausgabe von hostname(gegen das OP) aus, und alle werden korrekt aufgelöst (gegen den Befragten).
Goldlöckchen
1
Aber die gethostbyaddr()Sache, die sie ansprechen, ist bedeutend. +1
Goldlöckchen
Sehr interessant! Ich habe nicht bemerkt, dass eine Hosts-Datei bidirektional verwendet wurde (Host-Name von IP abrufen, IP von Host-Name abrufen). Das wirft definitiv einige Probleme auf. Vielleicht sollte ich einen Hosts-Dateierstellungsprozess untersuchen, der eine für Menschen lesbare Version erfasst und diese dann "korrigiert", indem Host-Aliase zu einer Zeile verkettet werden. Sollte ein sehr einfaches Skript sein.
AlexMA
1
@AlexMA - Wenn Sie feststellen, /etc/hostsdass dies Ihnen Kummer bereitet , können Sie jederzeit DNS einrichten . Genau aus diesem Grund führe ich BIND aus. (1) B / C ist einfacher zentral zu verwalten, und (2) ich bekomme die von mir gewünschte Auflösung ohne viel Kopfzerbrechen. Es gibt auch leichtere Optionen wie DNSMasq, um dies zu tun. Diese Systeme können auch auf einer einzigen Box verwendet werden!
slm
@slm Das klingt nach einer sehr guten Option für eine Produktionsumgebung. Wahrscheinlich auch ein wertvolles Lernprojekt.
AlexMA
5

Ich glaube, die dritte Methode hat gut funktioniert. Gibt es ein Problem damit?

Ich habe das immer ein bisschen gemacht, aber es gibt ein potenzielles Problem, da der man gethostbyaddrSystemaufruf möglicherweise verwendet wird, /etc/hostsum eine IP-Adresse mit einem Namen zu verknüpfen. Obwohl der weitaus häufigere Fall umgekehrt ist (Adresse vom Namen abrufen), sollten Sie sich dessen bewusst sein, falls etwas Lustiges passiert.

Goldlöckchen
quelle
Wie ich vermutet habe, aber sicher gehen wollte, scheint es keine großartige Dokumentation zu geben. Ich war mir auch nicht sicher, ob es bei einigen besonders strengen Unix-Distributionen weitere Probleme geben könnte. Ich werde Ihnen schnellstmöglich antworten, wenn sich niemand anders äußert.
AlexMA
Nun, der Punkt slmist eine Überlegung wert. Vielleicht sollte das System doch nicht so verwendet werden. Ich werde es weiterhin tun (nb ich benutze dies meist nur für 127.0.0.1, damit ich Dinge lokal transplantieren und testen kann, ohne eine virtuelle Host-Konfiguration zu ändern), aber ich habe dem letzten Absatz eine Einschränkung hinzugefügt.
Goldlöckchen
Tatsächlich habe ich dies bearbeitet, um "ein potenzielles Problem" zu berücksichtigen ...
Goldlöckchen
0

Apache 2.4 hat sich geweigert, auf meinem Unix-System zu starten. Die Hauptursache waren doppelte Zeilen in / etc / hosts. Nachdem ich die doppelte Zeile entfernt hatte, konnte ich den Webserver starten.

user275926
quelle
4
Dies ist eine nützliche Information, sollte aber nach den Richtlinien dieser Site wahrscheinlich eher ein Kommentar als eine Antwort sein.
AlexMA