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.
hostname
jemals bei der Auflösung von Hostnamen in IP-Adressen verwendet? (2) A bedeutet IPv4-Adresse, AAAA IPv6. Was ist AAA?avahi
abhängig vom Hostnamen des Computers. In diesem Fallhostname.local
wü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.Antworten:
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
hostname
Befehl (oder dergethostname()
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
\h
in Bash's wirdPS1
zum 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 seinwww.example.org
undwww.example.com
beide zeigen auf192.0.2.9
, während der interne Hostname des Systemsorange.example.org
oder nur sein könnteorange
. In diesem Fall würde die DNS - Konfiguration in der Regel auch einen Reverse - Lookup auf192.0.2.9
Punkt zurück auf den Namenorange.example.org
, aber es gibt nichts zu Kraft , dass.(* weil sie ihre Server gerne nach Obst benennen. Jemand könnte es verwenden
webserver1
oder 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
Host
Header 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.
quelle
hostname
jemals bei der Auflösung von Hostnamen in IP-Adressen verwendet?hostname
Befehle identifiziert werden . Verhält sich der Router wie ein DNS, um die Ausgabenhostname
an private IP-Adressen im Netzwerk aufzulösen ?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.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)
oderclone(2)
unter Verwendung desCLONE_NEWUTS
Flags getrennt werden kann. Sie sollten in dienamespaces(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.
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, auf13.13.13.13
dem 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 nurHost:
). 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.
quelle
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.
quelle