Hostnamen - Worum geht es bei ihnen?

54

Ich war kürzlich "gezwungen", eine Sysadmin-Arbeit zu verrichten, aber das ist nichts, was ich absolut liebe. Ich habe viel gelesen, experimentiert und gelernt.

Es gibt einen grundlegenden Aspekt der Serverkonfiguration, den ich nicht erfassen konnte - Hostnamen .

In Ubuntu sollte man zum Beispiel den Hostnamen so einstellen (gemäß der Linode Library ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

Datei: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

Ich nehme an, das platoist ein beliebiger Name und das plato.example.comist der FQDN.

Jetzt sind meine Fragen:

  • Ist es obligatorisch?
  • Zu welchem ​​Zweck?
  • Wo wird es gebraucht?
  • Warum kann ich nicht für jeden Rechner "localhost" als Hostnamen definieren?
  • Muss ich einen DNS-Eintrag für den plato.example.comFQDN einrichten ?
  • Sollte plato.example.comals umgekehrter DNS-Eintrag für meine IP verwendet werden?

Gibt es auch "Best Practices" für die Auswahl von Hostnamen? Ich habe Leute gesehen, die griechische Buchstaben, Planetennamen und sogar mythologische Figuren verwendeten ... Was passiert, wenn wir keine Buchstaben / Planeten mehr haben?

Es tut mir leid, wenn dies eine dumme Frage ist, aber ich war noch nie zu begeistert von Netzwerkkonfigurationen.

Alix Axel
quelle
3
Ich denke, Chris S ist hier nicht zu Hause. Die Frage, was ein Systemhostname ist und in welcher Beziehung er zu DNS steht, ist gültig.
Larsks
@ Chris S: Ich verstehe, glaub mir. Ich habe es einmal versucht, aber das Ganze hat mich als immens verwirrend empfunden. Ich strebe nicht danach, eine SA zu sein, sondern versuche nur, die Grundlagen ein bisschen besser zu verstehen.
Alix Axel
Dies sollte zum Community Wiki gehen
Lynxman
1
@lynxman: Das macht mir nichts aus, aber warum?
Alix Axel
1
Weil es sehr interessant ist :)
Lynxman

Antworten:

28

Heutzutage verfügt ein System möglicherweise über mehrere Schnittstellen mit jeweils mehreren Adressen, und mit jeder Adresse können sogar mehrere DNS-Einträge verknüpft sein. Was bedeutet ein "System-Hostname" überhaupt?

Viele Anwendungen verwenden den Systemhostnamen als Standardkennung, wenn sie an anderer Stelle kommunizieren. Wenn Sie beispielsweise Syslog-Nachrichten auf einem zentralen Server sammeln, werden alle Nachrichten mit dem Hostnamen des Ursprungssystems gekennzeichnet. In einer idealen Welt würden Sie dies wahrscheinlich ignorieren (weil Sie dem Client nicht unbedingt vertrauen möchten), aber das Standardverhalten - wenn Sie alle Ihre Systeme als "localhost" bezeichnen - würde zu einer Reihe von Protokollmeldungen führen, die Sie erhalten würde nicht in der Lage sein, mit einem bestimmten System zu assoziieren.

Wie andere Leute bereits betont haben, ist der System-Hostname auch eine nützliche Kennung, wenn Sie aus der Ferne auf eine Reihe von Systemen zugreifen. Wenn Sie fünf Fenster an ein System mit dem Namen "localhost" angeschlossen haben, fällt es Ihnen schwer, sie gerade zu halten.

In ähnlicher Weise versuchen wir, den Hostnamen des Systems mit dem Hostnamen abzugleichen, den wir für den Administratorzugriff auf ein System verwenden. Dies vermeidet Verwechslungen beim Verweisen auf das System (in E-Mails, Gesprächen, Dokumentationen usw.).

In Bezug auf DNS:

Sie möchten für Ihre Anwendungen korrekte DNS-Einträge in Vorwärts- und Rückwärtsrichtung haben, um Verwirrung zu vermeiden. Sie benötigen eine Weiterleitung (Name -> IP-Adresse), damit Benutzer bequem auf Ihre Anwendung zugreifen können. Die umgekehrte Eingabe ist aus mehreren Gründen hilfreich. Beispielsweise können Sie die Anwendung besser identifizieren, wenn Sie die entsprechende IP-Adresse in einem Protokoll finden.

Beachten Sie, dass ich hier von "Anwendungen" und nicht von "Systemen" spreche, da es - insbesondere bei Webservern - üblich ist, mehrere IP-Adressen auf einem System zu haben, die unterschiedlichen Hostnamen und Diensten zugeordnet sind.

Der Versuch, die Zuordnungen von Namen zu IP-Adressen in Ihrer /etc/hostsDatei beizubehalten, wird schnell schwierig, da Sie eine zunehmende Anzahl von Systemen verwalten. Es ist sehr einfach, dass die lokale Hosts-Datei in Bezug auf DNS nicht mehr synchron ist, was zu Verwirrung und in einigen Fällen zu Fehlfunktionen führen kann (z. B. weil versucht wird, eine Bindung an eine IP-Adresse herzustellen, die auf dem System nicht mehr vorhanden ist).

larsks
quelle
Vielen Dank für Ihre Antwort. Ich bin immer noch verwirrt, ob ich die Datei / etc / hosts pflegen soll (oder muss), anstatt mich nur auf die DNS-Einträge zu verlassen.
Alix Axel
8
Ich ignoriere /etc/hostsim Allgemeinen zugunsten von DNS. Dies reduziert die Anzahl der Stellen, an denen Informationen zur Zuordnung von Name -> Adresse gespeichert werden müssen. Auf dem Großteil der Systeme, die ich pflege, /etc/hostsenthält nur der einzelne Eintrag für localhost.
Larsks
Wenn Sie mit Clustern wie ganeti oder einem Linux-HA / Corosync-Cluster arbeiten, wird / etc / hosts verwendet, um zwischen den Mitgliedern des Clusters zu kommunizieren. Es ist schlecht, sich nur auf DNS zu verlassen, da sich Ihr DNS-Dienst möglicherweise in diesen Clustern befindet und während eines Knotenwechsels migriert oder offline ist. Daher helfen Ihnen / etc / hosts und ein korrekter Hostname eine großartige Zeit.
Coredump
In Bezug auf "einzigartig" "versuchen" wir eher, "einzigartig" zu sein, als "müssen" eindeutig sein, richtig? Da es so viele Server gibt und alle im selben Bereich sind, ist es unmöglich, tatsächlich "einzigartig" zu sein. Ist dieses Verständnis richtig?
Shenkwen
10

Sie könnten jeden Hostnamen auf "localhost" setzen, aber es ist sehr praktisch, ihn alix@plato ~ $in der Eingabeaufforderung zu haben, wenn Sie Computer über ssh verwalten. Wenn Sie dies nicht tun, kann die Remoteverwaltung von Servern sehr verwirrend werden.

Ein korrekter FQDN ist wichtig, wenn Sie einen Webserver oder einen Mailserver hosten. Solche Serveranwendungen möchten wissen, auf wem sie ausgeführt werden.

Um ein gutes Benennungsschema zu wählen, verweise ich Sie auf diese sehr beliebte Frage .

Ein vollqualifizierter Domänenname wird nur dann nützlich, wenn er für einen anderen Computer von Bedeutung ist. Hierfür gibt es drei Ebenen:

  • Ein Computer in Ihrem lokalen Netzwerk verfügt über einen Eintrag in seiner Hosts-Datei, der auf diesen Computer verweist
  • Sie haben einen DNS-Server in Ihrem lokalen Netzwerk und jeder lokale Computer, der ihn als DNS-Server verwendet, kennt Plato jetzt namentlich.
  • Sie registrieren einen Domainnamen und jetzt weiß die ganze Welt, auf welche Maschine der Name plato.alixaxel.com verweist.

Wenn Sie E-Mails senden oder Webseiten nach außen senden, ist die dritte Welt diejenige, die Sie haben möchten. In den meisten anderen Fällen können Sie mit einem lokalen DNS auskommen oder sogar Hosts-Dateien bearbeiten.

In diesem Fall können Sie einfach einen Domainnamen (plato.alixnetwork kann als vollqualifizierter Domänenname in Frage kommen) für die Verwendung in Ihrem lokalen Netzwerk erstellen. Der einzige Mehrwert des "alixnetwork" -Teils (des Domainnamens) ist die Benutzerfreundlichkeit, wenn Sie ein anderes lokales Netzwerk haben, von dem Sie es unterscheiden möchten.

Kenny Rasschaert
quelle
Vielen Dank, Kenny. Ich glaube, mein Hauptzweifel ist, warum es wichtig ist, dass ein Web- / Mail-Server über einen ordnungsgemäßen FQDN verfügt. Was macht einen "richtigen" FQDN aus? Sollte ich den Hostnamen einfach der Domain voranstellen und auf die öffentliche IP-Adresse verweisen? Ich habe den Eindruck, dass ich A / AAAA-DNS-Einträge mit dem Hostnamen erstellen muss, nein?
Alix Axel
Es kommt darauf an, was Sie erreichen wollen. Wenn Sie mit plato keine E-Mails senden oder keine Webseiten für die Welt bereitstellen, müssen Sie für diesen Computer keinen globalen DNS-Eintrag erstellen.
Kenny Rasschaert
"Sie registrieren einen Domainnamen und jetzt weiß die ganze Welt, auf welche Maschine der Name plato.alixaxel.com zeigt." - Ich verstehe das nicht. Weiß nicht die ganze Welt, auf welche Maschine der Name plato.alixaxel.com verweist, indem er die DNS-Auflösung von "alixaxel.com" überprüft? Was hat es mit dem Festlegen eines vollqualifizierten Domänennamens auf einem zufälligen Computer zu tun?
Shenkwen
8

Eine grundlegende Übersicht. Hostname sind nur Zeiger; Sie können einen bestimmten Hostnamen als Hostnamen zuweisen, auf den der Computer verweist, es können jedoch auch mehrere Hostnamen vorhanden sein. Einige Dienste, insbesondere E-Mail und HTTP, sind auf Domänennamen angewiesen, um zu wissen, wo sich die Dienste befinden und wie sie zu ihnen gelangen.

Vor langer Zeit wurden all diese Namen (die wiederum nur auf IP-Adressen verweisen) in einer Datei namens verfolgt hosts. Als das System wuchs, war es ihnen nicht möglich, die Datei auf allen relevanten Computern, die an den verschiedenen miteinander verbundenen Netzwerken beteiligt waren, synchron zu halten. So wurde das DNS-System erfunden. Wenn Sie eine Namenssuche durchführen, wird immer noch zuerst die Hosts-Datei und dann das DNS-System überprüft. Windows überprüft möglicherweise auch andere Systeme wie WINS oder NetBIOS.

Wenn Sie einen Eintrag in eine hostsDatei einfügen, weisen Sie ihn nicht dem Computer zu. Das Zuweisen eines Hostnamens wie vom Computer verwendet erfolgt in den Konfigurationsdateien (auf * nix-Systemen) und in den Systemeigenschaften in Windows-Systemen (Windows-Systeme können auch NIC-spezifische Suffixe haben).

Einträge in der hostsDatei sind wie das DNS-System nur eine Zuordnung von einem Hostnamen zu einer IP-Adresse. Um den Hostnamen 'localhost' zu verwenden (es ist nichts Besonderes daran, es ist ein Hostname wie alle anderen), muss er der Loopback-Schnittstelle zugeordnet werden (sodass er immer auf den lokalen Computer verweist). Damit dies funktioniert, haben alle Computer diese Standardzuordnung in ihrer hostsDatei. Sie kann jedoch möglicherweise entfernt werden, wenn Sie diesen Hostnamen nicht verwenden möchten.

Wie andere angemerkt haben, ist es außerdem sehr nützlich, einem Computer einen Hostnamen zuzuweisen. Wenn eine Verbindung zum Computer besteht, kann der Hostname beim Anmelden, als Eingabeaufforderung oder an einer beliebigen anderen Stelle angezeigt werden. Dies erleichtert die Identifizierung des Computers, mit dem Sie verbunden sind. Wenn Sie diesen Hostnamen in DNS einrichten oder in alle hostsDateien einfügen, können Sie eine Verbindung zum Computer herstellen, indem Sie auf seinen Hostnamen verweisen, anstatt ständig seine IP-Adresse kennen zu müssen. (Noch nützlicher, wenn der Computer DHCP verwendet, da sich die Adresse ändern kann. Wenn der Computer DNS aktualisiert, zeigt der DNS-Eintrag auf die neue IP-Adresse. Sie können dennoch eine Verbindung herstellen, ohne die neue IP-Adresse zu kennen, da Sie den DNS-Namen kennen ).

Es gibt viele andere Verwendungsmöglichkeiten für beide hostsund DNS, aber ich vermute, Sie haben mehr Fragen als Antworten, wenn Sie all dies lesen.

Chris S
quelle
4
+1, wenn Sie sich die Zeit nehmen, eine gute Antwort zu schreiben, obwohl Sie sich anfangs frustriert fühlen.
Kenny Rasschaert
Geniale Erklärung! Wenn ich richtig verstehe, ist /etc/hostses nicht erforderlich, den FQDN in das Feld zu setzen. Wenn der Hostname in einem DNS-Eintrag enthalten ist, wird das gleiche Ergebnis erzielt, oder?
Alix Axel
2
@Alix, richtig, wenn sich der Eintrag in DNS befindet (und DNS ordnungsgemäß funktioniert), ist es hostsüberflüssig , ihn in der Datei zu haben. Auch der Eintrag in der hostsDatei würde DNS überschreiben (nützlich zum Testen manchmal, ärgerlich, wenn Sie es aber vergessen). Beachten Sie, dass dies alles in Bezug auf A- und AAAA-Datensätze gilt. Es gibt andere Arten von Datensätzen für Hostnamen, aber ich habe sie aus Gründen der Klarheit weggelassen.
Chris S
Danke Chris, das macht alles viel klarer.
Alix Axel
5

Jeder Host sollte einen aussagekräftigen Namen erhalten. Der Hostname kann mehrere Zwecke erfüllen:

1- Es hilft Ihnen zu erkennen, an welcher Stelle Sie gerade arbeiten.

2- Die Verwendung von in /etc/hostsund / oder DNS-Einträgen konfigurierten Namen ist einfacher als das Speichern vieler IP-Adressen.

3- Localhost ist ein reservierter Name für den aktuellen Computer (Adresse 127.0.0.1).

4- DNS-Einträge sind nützlich, um Ihre Server öffentlich zugänglich zu machen.

Die Auswahl eines geeigneten Namens für jeden Server erleichtert Ihnen die Verwaltung erheblich. Außerdem hilft es Ihren Kunden, auf Ihre Server zuzugreifen.

Khaled
quelle
2

Nur als Randnotiz: Die ordnungsgemäße Vorwärts- und Rückwärtsauflösung von DNS ist der absolute Eckpfeiler jeder IT-Installation auf diesem Planeten. Unterschätzen Sie niemals die Notwendigkeit eines gut gepflegten DNS und einer korrekten Auflösung von Hostnamen!

pfo
quelle
Ich kann nicht verstehen, warum es wichtig ist. Ich habe einen Linodeserver, der viele Websites hostet. Da ich den Zweck der Einstellung des Hostnamens nicht verstehe, lasse ich ihn einfach wie er ist, was "Ubuntu" ist. Dieser Server läuft seit ein paar Jahren und ich habe keine Unannehmlichkeiten. Ich frage Ihre Antwort nicht, ich versuche nur zu verstehen, warum der Hostname wichtig ist. Wann würde ich mir in meinem Fall wünschen, einen Hostnamen richtig eingestellt zu haben?
Shenkwen
1
@shenkwen - wenn du ehrlich gesagt nur einen Server hast, kannst du ihn benennen, was auch immer dein Herz begehrt, und es spielt offensichtlich keine Rolle. Sobald die Anzahl der Server größer als 1 wird, haben Sie neue Probleme zu verwalten, und die richtige Benennung ist ein wichtiges Werkzeug.
Mfinni
1

Haftungsausschluss: Die Hauptfrage bezieht sich auf Linux-Systeme. Wenn Sie sich nicht für die Windows-Seite des Problems interessieren, können Sie diese Antwort ignorieren.

Auf jeden Fall wird in Windows-Systemen der Hostname, abgesehen von allen in anderen Antworten genannten Punkten, vom Betriebssystem selbst für Netzwerk- und Authentifizierungszwecke verwendet. speziell:

  • Jedes System, unabhängig davon, ob es sich um ein Domänenmitglied handelt oder nicht, muss einen eindeutigen Namen im selben Netzwerk (dh im selben IP-Subnetz) haben. Andernfalls kommt es zu einem Namenskonflikt und bei verschiedenen Netzwerkdiensten (hauptsächlich Datei- und Druckerfreigabe) nicht Arbeit.
  • Alle Systeme, die Mitglieder derselben Active Directory-Domäne sind, müssen unabhängig von den Netzwerkgrenzen einen eindeutigen Namen haben.
  • In einer Domänenumgebung fungiert der Hostname eines Systems als Sicherheitsprinzipal und kann für die Remote-Authentifizierung verwendet werden (denken Sie nur an ein Benutzerkonto für den Computer). Es können Berechtigungen und Zugriffsrechte zugewiesen und aus Sicherheitsgründen in Gruppen eingeteilt werden. Dies wirkt sich auf alle Prozesse aus, die auf dem System mit den integrierten Konten LocalSystemund NetworkServiceBenutzerkonten ausgeführt werden. Diese können sich bei anderen Systemen mit den Anmeldeinformationen des Systems authentifizieren, auf dem sie ausgeführt werden. Auf diese Weise kann beispielsweise ein Prozess, der NetworkServiceauf SystemA ausgeführt wird, auf einen freigegebenen Ordner auf dem System zugreifen, indem dem Benutzerkonto von SystemA Berechtigungen für den Ordner erteilt werden.
Massimo
quelle
-1

Viele Sites und / oder vermeintliche Administratoren geben jetzt an, dass das Attribut "Hostname" den vollqualifizierten Domänennamen der Betriebssysteminstanz enthält, wodurch alle Auflösungen, an die der Domänenname angehängt wird, "unterbrochen" werden:

Hostname
system1.domain1.org

ping hostname
- kann system1.domain1.org.domain1.org nicht auflösen

zantar
quelle
Können Sie eine Referenzquelle für Ihre Aussage angeben?
Dave M