• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Hostname

Frage zur richtigen Verwendung von hostname bei > 1 network devices für den universellen Einsatz (statisch und/oder dhcp,bootp,iSCSI, etc.)

-------------------------------------------------
Statische Konfiguration:
Code:
/etc/hostname:
plop
Ist das equivalent zu:
Code:
/etc/hosts
127.0.0.1     localhost  plop
?
Oder ist es equivalent zu:
Code:
/etc/hosts
127.0.0.1     localhost
192.168.92.16   plop.abcd.com	plop
192.168.92.35   other.xyz.com	other
?

-------------------------------------------------
Dynamische Konfiguration, mit oder ohne static leases am DHCPd:

Hier besteht die Möglichkeit, mit tools rund um den dhcpclient - nach Erhalt der IP's - den hostname vom DNS zu beziehen.
Ist das korrekt? Oder gilt hier vielmehr
Code:
/etc/hosts
127.0.0.1     localhost  plop
?

Gruß
 

marce

Guru
worauf willst Du hinaus? /etc/hosts und /etc/hostname haben per se erst mal nichts miteinander zu tun...
 
OP
Gräfin Klara

Gräfin Klara

Hacker
marce schrieb:
worauf willst Du hinaus?
Die richtige Verwendung von hostname bei > 1 network devices für den universellen Einsatz (statisch und/oder dhcp,bootp,iSCSI, etc.)

/etc/hosts und /etc/hostname haben per se erst mal nichts miteinander zu tun...
Das ist falsch. Nur ein Beispiel, per se:
Code:
/etc/hosts
127.0.1.1 plop
Überschreibt bzw. setzt hostname. Sollte das mapping von 127.0.1.1 auf this_host nicht verfügbar sein, nimmt der kernel als default das loopback auf 127.0.0.1 an und ein alias, (wie im Eingangsschreiben), setzt den hostname . Aber darum geht es nicht.
Ich will nicht wissen, wie ein hostname gesetzt wird, sondern wohin. Sollte der hostname einer Instanz zugeordnet werden oder ist der hostname eine allgemeine Maschinenbezeichnung ohne Beziehung zu irgendeiner Instanz? Einige Beispiele solcher Instanzen:
loopback - 127.0.1.1 if mapped - static IP - aus DNS bei dhcp - aus dem iSCSI stack - bei bootp wird es überhaupt seltsam.

Gräfin Klara
 

spoensche

Moderator
Teammitglied
Gräfin Klara schrieb:
Code:
/etc/hosts
127.0.1.1 plop
Überschreibt bzw. setzt hostname. Sollte das mapping von 127.0.1.1 auf this_host nicht verfügbar sein, nimmt der kernel als default das loopback auf 127.0.0.1 an und ein alias, (wie im Eingangsschreiben), setzt den hostname . Aber darum geht es nicht.
Ich will nicht wissen, wie ein hostname gesetzt wird, sondern wohin. Sollte der hostname einer Instanz zugeordnet werden oder ist der hostname eine allgemeine Maschinenbezeichnung ohne Beziehung zu irgendeiner Instanz? Einige Beispiele solcher Instanzen:
loopback - 127.0.1.1 if mapped - static IP - aus DNS bei dhcp - aus dem iSCSI stack - bei bootp wird es überhaupt seltsam.

Also die /etc/hosts hat nichts mit dem Hostnamen des Systems zu tun. Die /etc/hosts wird für die Namensauflösung (DNS) verwendet.

In der /etc/hostname steht der eigentliche Hostname des Systems, der beim Booten mittels
Code:
hostname -F /etc/hostname
gesetzt wird.

Das in der /etc/hosts der Eintrag
Code:
127.0.1.1 plop
steht ist bei der Verwendung von DHCP normal, weil der dhclient die /etc/hosts nicht verändert.

Wenn diese Zeile nicht existiert, dann braucht beispielsweise das Ausführen eines Befehls mittels sudo sehr lange, weil sudo veruscht den Hostnamen aufzulösen, ihn aber nicht finden kann.
 

stka

Guru
Vielleicht mal zur Klärung:

in der Datei /etc/hostname steht der eigentliche Hostname des Systems (Das was auch auf der Bash im Prompt angezeigt wird). In der
/etc/hosts steht der unsäglich Eintrag
127.0.1.1 hostname.example.net hostname

Wenn du jetzt eine "hostname" als Kommando angibst bekommst du den Hostname wie er in der /etc/hostname steht. Gibst du ein "hostname -f" bekommst du den fqdn aus der /etc/hosts also hier im Beispiel "hostname.example.net"

Unsäglich ist der Eintrag immer dann wenn du den Rechner zum Mitglied in einer AD-Domäne machen willst denn dann bekommst du beim Join einen Fehler das das dns-update nicht durchgeführt werden kann. Ist ja klar der fqdn wird ja mit er RICHTIGEN IP im DNS verwaltet und nicht mit 127.0.0.1.
Ich werfe diesen Eintrag auf 127.0.1.1 grundsätzlich raus, da er auch bei der Verwendung eines DNS-Servers nur Probleme macht, da auch bei einem einfachen DNS-Server ohne AD der fqdn über den DNS-Server aufgelöst werden soll und nicht über die /etc/hosts.
Sobald als dein System in irgendeiner Art und Weise den eigenen fqdn über DNS auflösen soll muss der Eintrag raus.
Aber mit der Art und Weise wie die IP-Konfiguration vergeben wird ob statisch oder dynamisch ist völlig egal. Wenn du einen DHCP-Server im Netz
hast, kann der Hostname auch von ihm überschrieben werden.
 
OP
Gräfin Klara

Gräfin Klara

Hacker
@stka

Danke für deine Antwort

Mir geht es - wie oben geschrieben - um die richtige Konfiguration von hostname für den universellen Einsatz.
Wie die Umgebung konfiguriert ist, in der der Rechner hochfährt, ist während des Bootvorganges noch unbekannt.
Du schreibst richtig:

stka schrieb:
...wenn du den Rechner zum Mitglied in einer AD-Domäne machen willst ..
.. da auch bei einem einfachen DNS-Server ohne AD der fqdn über den DNS-Server aufgelöst werden soll ...
Das macht die Sache individuell, d.h. ich muß wissen, wie das Netz konfiguriert ist. Leider ist das nicht der Fall.
Ob DHCP, DNS vorhanden ist, ist unbekannt. Ist iSCSI oder bootp vorhanden, dann läßt sich daraus wohl die IP, nicht aber der hostname beziehen. Ist cifs vorhanden, dann darf man auch mit netbios rechnen, sicher ist es aber nicht..Aus netbios läßt sich ja der hostname beziehen. Wird dhcp angeboten, dann muß wiederum ein gültiges /etc/hostname vorhanden sein und kein Eintrag in /etc/hosts, weil ein dhcp den dns ja voraussetzt und /etc/hostname dann über diesen aufzulösen ist.

Ich habe das nun so gelöst, dass im Rohzustand kein /etc/hostname existiert aber sehr wohl ein /etc/hosts mit 127.0.1.1 hostname. Ist nämlich kein /etc/hostname vorhanden, dann nimmt das System den hostname aus /etc/hosts. Ist im Netz kein DNS vorhanden, dann funktioniert die Auflösung über /etc/hosts und die lokalen server lösen den System-Hostname über /etc/hosts richtig auf. Ist netbios oder upnp vorhanden, lösche ich den Eintrag in /etc/hosts und setze /etc/hostname, da upnp und bootb den hostname anbieten. Ist dhcp und somit auch dns vorhanden, dann bleibt der hostname, der in /etc/hostname sein sollte, noch unbekannt. dhcp bietet ja keinen hostname an. Für diesen Fall muß ich noch ein dns query absetzen und die IP, erhalten vom dhcp, auflösen, um den richtigen hostname in /etc/hostname eintragen zu können.. Das Problem muß ich erst lösen. Mir ist mittlerweile jedoch klar, wie der hostname in unbekannter Umgebung richtig zu setzen ist. Das war die eigentliche Frage.

Gräfin Klara
 
Oben