Hat ein Computersystem (Linux) nur einen Hostnamen?

15

hostname wird verwendet, um den DNS-Namen des Systems anzuzeigen und seinen Hostnamen oder NIS-Domänennamen anzuzeigen oder festzulegen.

Hat ein Computersystem (Linux) nur einen Hostnamen?

Beim virtuellen Hosting können mehrere Hostnamen in verschiedene Stammverzeichnisse auf einem Webserver aufgelöst werden. Wie ist virtuelles Hosting möglich, wenn ein Computersystem (Linux) nur einen Hostnamen haben kann?

Vielen Dank.

Tim
quelle
DNS A- oder AAA-Einträge verweisen für mehrere Domänen auf dieselbe IP-Adresse. Der Hostname des Computers ist nicht unbedingt wichtig.
RubberStamp
(1) Wird die Ausgabe von hostnamejemals bei der Auflösung von Hostnamen in IP-Adressen verwendet? (2) A bedeutet IPv4-Adresse, AAAA IPv6. Was ist AAA?
Tim
mDNS-Dienste, z. B. avahiabhängig vom Hostnamen des Computers. In diesem Fall hostname.localwürde in die lokale IP-Adresse des Computers aufgelöst. Ich sehe, dass jemand eine Antwort geschrieben hat, die eine Erweiterung meines ersten Kommentars darstellt ... zu simultan für meine Browser-Benachrichtigungen.
RubberStamp
AAA ist ein 'A' Tippfehler
RubberStamp
Der virtuelle Host hat nichts mit dem Hostnamen zu tun. Dies hängt ausschließlich vom Verhalten des Webservers ab. Der Server antwortet unterschiedlich auf das unterschiedliche Host-Feld des HTTP-Anforderungsheaders. Ich glaube nicht, dass ein typischer Webserver irgendetwas in Bezug auf DNS oder Hostnamen tun würde, um die Funktionalität eines virtuellen Hosts anzubieten.
炸鱼 薯条 德里克

Antworten:

26

Ja und nein. Das sind zwei verschiedene Dinge, die Hostnamen genannt werden.

Der "interne" Hostname ist im Grunde eine Zeichenfolge, die vom Kernel verwaltet wird. Dies ist der hostnameBefehl (oder der gethostname()Aufruf), der innerhalb eines Systems eindeutig ist (*) .

Es wird meistens verwendet, wenn ein Programm eine Kennung für das System ausgeben möchte, auf dem es ausgeführt wird. ZB \hin Bash's wird PS1zum Hostnamen erweitert. In ähnlicher Weise enthalten syslog-artige Protokolldateien auch den Hostnamen in Protokolleinträgen.

(* Obwohl Stephen Kitt kommentiert, können Namespaces verwendet werden, um unterschiedliche Hostnamen für Prozesse auf demselben System anzuzeigen. Dies wird hauptsächlich für Container verwendet, die versuchen, sich wie unterschiedliche Systeme zu verhalten.)

Dann gibt es auch DNS-Namen , die von anderen Systemen verwendet werden, um die IP-Adresse eines anderen nachzuschlagen. Möglicherweise gibt es mehrere DNS-Namen, die auf dieselbe IP-Adresse und damit auf denselben Host verweisen.

Der interne Hostname und der DNS-Name müssen nicht identisch sein. Angenommen, jemand hat einen Webserver mit der IP-Adresse , den er anrufen möchte orange(*)192.0.2.9 . Es könnten zwei verschiedene Domains bedient werden und der DNS müsste eingerichtet sein www.example.orgund www.example.combeide zeigen auf 192.0.2.9, während der interne Hostname des Systems orange.example.orgoder nur sein könnte orange. In diesem Fall würde die DNS - Konfiguration in der Regel auch einen Reverse - Lookup auf 192.0.2.9Punkt zurück auf den Namen orange.example.org, aber es gibt nichts zu Kraft , dass.

(* weil sie ihre Server gerne nach Obst benennen. Jemand könnte es verwenden webserver1oder so, aber der Punkt ist, dass es nicht nach einer der tatsächlichen Domänen benannt werden muss.)

Darüber hinaus erfordert das virtuelle Hosting, dass der Browser dem Webserver den Namen der Site mitteilt, auf die er zugreifen möchte. Andernfalls würde der Server nicht wissen, welche virtuelle Site der Client erreichen wollte. HTTP hat den HostHeader dafür.


Was die Unterscheidung zwischen einem DNS-Namen und dem internen Hostnamen trübt, ist das mDNS-Protokoll (das z. B. vom Avahi-Dämon implementiert wird ) und andere Erkennungsprotokolle. Mit mDNS können Hosts alle anderen Hosts im selben Netzwerk nach Namensinformationen abfragen und ihre eigenen Hostnamen auf anderen Hosts sichtbar machen, ohne sie explizit in DNS einzurichten.

ilkkachu
quelle
Vielen Dank. (1) "Das DNS-Setup würde normalerweise 192.0.2.9 zurück auf den Namen orange.example.org verweisen." Wird die IP-Adresse für einen bestimmten Hostnamen nicht aufgelöst, warum das Gegenteil? (2) Wird die Ausgabe von hostnamejemals bei der Auflösung von Hostnamen in IP-Adressen verwendet?
Tim
(2) ... Wenn Sie bei Ihnen zu Hause ein lokales WLAN-Netzwerk von einem ISP mit einem Router und einem Modem einrichten, können die Maschinen im Netzwerk anhand der Ausgabe ihrer hostnameBefehle identifiziert werden . Verhält sich der Router wie ein DNS, um die Ausgaben hostnamean private IP-Adressen im Netzwerk aufzulösen ?
Tim
2
Zu (1) gibt es auch Reverse-Lookups, die die IP-Adresse verwenden und einen Namen zurückgeben. (Für ein System mit einem einzigen Namen und einer einzigen Adresse möchten Sie beide aus Gründen der Klarheit in die andere auflösen.)
ilkkachu
3
Möglicherweise werden kleine Netzwerke verwendet mDNS. Mit dieser Funktion können Systembesitzer ihre eigenen Hostnamen auswählen, auf die andere Systeme im lokalen Netzwerk zugreifen können, ohne sich bei einem DNS-Server registrieren zu müssen.
Mark Plotnick
2
In vielen Heimnetzwerken fungiert der lokale Router als DNS-Resolver. Hosts senden ihren Hostnamen, wenn sie eine Adresse über DHCP anfordern. Der Router merkt sich diesen Namen und löst ihn für alle Hosts im Netzwerk auf. Wie Mark und RubberStamp bereits erwähnt haben, gibt es auch Bonjour (in Avahi implementiert), mit dem Dienste im LAN erkannt werden können (insbesondere Drucker). Beachten Sie auch, dass Hosts mehrere IP-Adressen haben können und Hostnamen jetzt Namespaces haben, sodass Prozesse unterschiedliche Hostnamen auf demselben Host sehen können.
Stephen Kitt
7

Hat ein Computersystem (Linux) nur einen Hostnamen?

Nein.

[Ich werde völlig ignorieren, dass irgendjemand Ihrem Host einen beliebigen Namen geben kann, indem er einen DNS-Eintrag auf seine Adresse verweist, oder dass Sie mehr als einen Aliasnamen dafür haben können /etc/hosts, oder philosophische Überlegungen darüber, was ein Name wirklich ist.]

Auf einem Linux-System ist der Hostname einfach eine Ressource pro Prozess (der "UTS-Namespace"), die standardmäßig von seinen untergeordneten Elementen geerbt wird, aber mit unshare(2)oder clone(2)unter Verwendung des CLONE_NEWUTSFlags getrennt werden kann. Sie sollten in die namespaces(7)Manpage schauen .

Genau wie bei PIDs, Portnummern, Einhängepunkten usw. ist der Hostname kein globaler Bezeichner mehr und kann genauso virtualisiert werden wie der Adressraum (virtueller Speicher) oder die Dateideskriptortabelle eines Prozesses.

Beim virtuellen Hosting können mehrere Hostnamen in verschiedene Stammverzeichnisse auf einem Webserver aufgelöst werden. Wie ist virtuelles Hosting möglich, wenn ein Computersystem (Linux) nur einen Hostnamen haben kann?

Virtuelles Hosting ist etwas völlig anderes und wird normalerweise durch Konfigurieren eines Wildcard-DNS-Eintrags (z. B. *.foo.com=> 13.13.13.13) mit einem Webserver durchgeführt, auf 13.13.13.13dem verschiedene Verzeichnisse / Ressourcen ausgeführt werden, basierend auf dem Wert des http- Host:Headers [1] (der in hohem Maße konfigurierbar ist) Die meisten Webserver sind in der Lage, unterschiedliche Ressourcen basierend auf einem beliebigen http-Header zu bedienen , nicht nur Host:). Dabei spielt das Betriebssystem des Systems, auf dem der Webserver ausgeführt wird, keine Rolle.

[1] oder auf den Wert des Servernamens im Fall von https, wodurch derselbe Webserver verschiedene Zertifikate für verschiedene virtuelle Hosts verwenden kann.

Onkel Billy
quelle
Da muss ich Ihnen nicht zustimmen. Beim virtuellen Hosting verfügen wir im Allgemeinen über einen bestimmten Satz von cname-Datensätzen, die auf den einzelnen Host verweisen. Wir verwenden keinen Wildcard-DNS-Eintrag, da viele Systeme in der Domäne virtuelle Hosts benötigen. Mit Ausnahme von UTS-Namespaces (wie weit verbreitet ist dies überhaupt?) Hat hostnamectl einen einzelnen Hostnamen für einen bestimmten Server gemeldet. DNS und Hostname sind orthogonal und haben wenig miteinander zu tun.
doneal24
1
@ DougO'Neal Mit was bist du nicht einverstanden? Werden die Wildcard-DNS-Einträge so verwendet, wie ich es beschreibe? Sie werden wild verwendet (entschuldigen Sie das Wortspiel), ob Sie es mögen oder nicht. Dass die uts info pro prozess unter linux virtualisiert wird? Das ist einfach so. Die Idee, dass Namespaces nur für Containerisierungs- / Virtualisierungslösungen in Dosen verwendet werden (wie in der anderen Antwort vorgeschlagen), ist leider "nur Mädchen spielen mit Puppen" oder "Handschaltgetriebe werden nur in schweren Lastwagen verwendet". Qualität ;-)
Onkel Billy
1

Normalerweise legen Sie einen einzelnen Hostnamen in / etc / hostname fest. Außerdem legen Sie in / etc / hosts viele Domänennamen fest.

Mithilfe von UTS-Namespaces kann ein einzelnes System für verschiedene Prozesse unterschiedliche Host- und Domänennamen aufweisen. Für weitere Informationen: https://en.wikipedia.org/wiki/Linux_namespaces . Es ist also absolut möglich, mehrere Hostnamen und Domänennamen für dasselbe System zu verwenden. Beispielsweise hat der Docker-Container innerhalb desselben Hosts einen anderen Hostnamen als das Hostsystem.

Uddhav Gautam
quelle