Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[gelöst] 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

wbwb
Member
Member
Beiträge: 217
Registriert: 26. Jun 2006, 14:51

[gelöst] 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von wbwb » 31. Aug 2017, 18:05

Hallo,

ich versuche auf einer neu aufgesetzten 42.3 Kiste OpenMPI Programme zum laufen zu bringen. Dabei sind zwei Fragen mit Namensauflösung aufgetaucht:
  • es gab anfänglich gethostbyname failed Fehler die mich annehmen ließen, das localhost nicht als Name aufgelöst wird. Ich habe daraufhin meine /etc/hosts Datei geändert von anfänglich

    Code: Alles auswählen

    127.0.0.1       localhost
    ::1             localhost ipv6-localhost ipv6-loopback
    ....
    
    auf

    Code: Alles auswählen

    127.0.0.1       localhost  Name.Meines.Rechners.de
    ::1             localhost ipv6-localhost ipv6-loopback
    ....
    
    Ich weiß nicht genau warum ich das gemacht habe - war nur so ein Mittelwert aus ca. 10 Dr. Google Rezepten ;)

    Darf/kann/soll/muss man so etwas machen?

    Auf jeden Fall hat diese Veränderung von /etc/hosts mein Problem mit der OpenMPI gelöst.
  • Ich bekomme

    Code: Alles auswählen

    nslookup localhost
    Server:		xxxxxx
    Address:	yyyyyy
    ** server can't find localhost: REFUSED
    
    Ist das richtig, dass ich den localhost nicht auflösen kann/darf? Wenn nicht, wie ändere ich das?
wbwb
Zuletzt geändert von wbwb am 5. Sep 2017, 10:25, insgesamt 1-mal geändert.

Werbung:
Gräfin Klara
Hacker
Hacker
Beiträge: 332
Registriert: 23. Jun 2008, 20:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von Gräfin Klara » 31. Aug 2017, 20:04

Welche IP hat dein Rechner?

wbwb
Member
Member
Beiträge: 217
Registriert: 26. Jun 2006, 14:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von wbwb » 1. Sep 2017, 00:26

Verstehe die Frage nicht? Das hängt doch vom dhcp server ab? Meine IP Adresse kann kann irgendetwas sein und /sbin/ifconfig sagt 'jetzt' etwas anders als 'morgen'?

Meine Frage ist einfach nur, ob es üblich ist den Maschinennamen explizit und händisch in der /etc/hosts mit dem loopback zu verbinden ... oder ob das nicht üblich ist.

(Wahrscheinlich könnte ich in die /etc/hosts für mein Problem auch irgendeine andere loopback Adresse, z.B. die 127.0.0.2 mit dem Maschinennamen verbinden ...)

marce
Advanced Hacker
Advanced Hacker
Beiträge: 1078
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von marce » 1. Sep 2017, 10:15

nslookup geht nicht gegen die /etc/hosts sondern fragt den DNS-Server ab. Und der kann "localhost" garantiert nicht auflösen - wird es auch niemals können und soll das auch gar nicht.

Daß "der Rest" mit Einträgen in der hosts-Datei funktioniert hängt daran, daß alle anderen Tools eben zuerst die /etc/hosts auswerten (sehr vereinfacht und verallgemeinernd).

Ansonsten spricht nichts dagegen, in die /etc/hosts alles mögliche als Hostnamen reinzuschreiben und auf 127.0.0.1 oder jede beliebige andere IP zu verlinken - solange Du den Überblick nicht verlierst und ggf. vergisst, daß ein entsprechender Eintrag gesetzt ist.
Bei mehreren PCs und einigen Einträgen ist es dann evtl. irgendwann sinnvoll, über einen eigenen DNS-Server nachzudenken...

Gräfin Klara
Hacker
Hacker
Beiträge: 332
Registriert: 23. Jun 2008, 20:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von Gräfin Klara » 1. Sep 2017, 11:42

wbwb hat geschrieben:
1. Sep 2017, 00:26
Verstehe die Frage nicht? Das hängt doch vom dhcp server ab? Meine IP Adresse kann kann irgendetwas sein ... 127.0.0.2 mit dem Maschinennamen verbinden ...)
Du verstehst die Frage nicht? Die war doch ganz einfach:
Welche IP hat dein Rechner?
wbwb hat geschrieben:
1. Sep 2017, 00:26
ich versuche auf einer neu aufgesetzten 42.3 Kiste OpenMPI Programme zum laufen zu bringen.
Wenn du mit OpenMPI arbeitest, dann geht es in Richtung MPI_cluster oder wenigstens nach MPI messages über InfiniBand.
Mit DHCP requests nach Irgendwohin wirst du keinen Erfolg haben. Deshalb sollte dein /etc/hosts folgend aussehen:

Code: Alles auswählen

127.0.0.1	localhost
192.169.31.31	wbwb.domain.lan	wbwb
Um das zu testen, verwendest du hostname, weil hostname garantiert nach /etc/nsswitch.conf vorgeht.
# hostname
muß ergeben wbwb
# hostname -d
ergibt domain.lan
# hostname -f
wbwb.domain.lan

Nur wenn das richtig funktioniert, liefern auch gethostbyname(), gethostbyaddr(), etc. die richtigen Resultate
OpenMPI ist sehr strikt und deshalb sind hostname, domainname und FQDN einzuhalten.
Verwendest du einen DNS in deinem lokalen Netz, dann beschränkt sich das obige /etc/hosts ausschließlich auf die erste Zeile.
hostname, domain und FQDN werden dann von diesem geliefert.

Gruß
Gräfin Klara

wbwb
Member
Member
Beiträge: 217
Registriert: 26. Jun 2006, 14:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von wbwb » 1. Sep 2017, 21:29

Hi,
Gräfin Klara hat geschrieben:
1. Sep 2017, 11:42
Wenn du mit OpenMPI arbeitest, dann geht es in Richtung MPI_cluster oder wenigstens nach MPI messages über InfiniBand.
Nein, nein ... ;) (Auf unserem cluster laufen mein codes bestens - und das gehört wohl auch nicht in dieses Forum ;) )
Ich will nur auf den paar Cores meines Laptops (Leap 42.3) mit ein paar Prozessen ein bisschen debuggen.

Deshalb vielleicht noch mal anders gefragt:
  • Wenn ich auch meinem Laptop in yast->network settings unter hostname 'aaa' und unter domain name 'bb.cc.dd' stehen habe
  • und dann in die /etc/hosts eine Zeile

    Code: Alles auswählen

    127.0.0.2 aaa.bb.cc.dd
    rein schreibe,
ist das erlaubt?

Wenn ich das mache, gibt MPIs gethostbyname() auf meinem Laptop zumindest keine Fehler mehr aus und einfache MPI Testprogramme funktionieren. Aber - wie gesagt - ich weiß eben nicht, ob der oben nachgefragte Eintrag in meine /etc/hosts erlaubt ist? Vielleicht weißt die Tatsache, dass ich so etwas machen muss ja auch eher auf einen Fehler in meiner Konfiguration hin? Usw., usw.?

wbwb

Gräfin Klara
Hacker
Hacker
Beiträge: 332
Registriert: 23. Jun 2008, 20:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von Gräfin Klara » 1. Sep 2017, 23:22

wbwb hat geschrieben:
1. Sep 2017, 21:29
Hi,
Gräfin Klara hat geschrieben:
1. Sep 2017, 11:42
Wenn du mit OpenMPI arbeitest, dann geht es in Richtung MPI_cluster oder wenigstens nach MPI messages über InfiniBand.
Nein, nein ... ;) (Auf unserem cluster laufen mein codes bestens - und das gehört wohl auch nicht in dieses Forum ;) )
Ich will nur auf den paar Cores meines Laptops (Leap 42.3) mit ein paar Prozessen ein bisschen debuggen.
ok
wbwb hat geschrieben:
1. Sep 2017, 21:29
Deshalb vielleicht noch mal anders gefragt:
  • Wenn ich auch meinem Laptop in yast->network settings unter hostname 'aaa' und unter domain name 'bb.cc.dd' stehen habe
  • und dann in die /etc/hosts eine Zeile

    Code: Alles auswählen

    127.0.0.2 aaa.bb.cc.dd
    rein schreibe,
ist das erlaubt?
127.0.0.2 aaa.bb.cc.dd
ist falsch.

Wenn du auf DHCP verzichtest, also beim Start kein query absetzt und eine statische IP wählst, dann mach es so wie ich es oben beschrieben habe.

Du willst nicht auf DHCP verzichten?
Über DHCP beziehst du den domainnamen. Der wird gesetzt und du hast damit also nichts mehr zu tun.
Über DHCP beziehst du auch den hostnamen, sofern der server so konfiguriert ist. Er schickt dir den Namen auf deine MAC.

Ist nicht der Fall?
Dann brauchst du einen DHCP hook. Den sollte der Distributor eigentlich zur Verfügung stellen.
Dieser hook (script) setzt beim Empfang der DHCP Nachricht den Hostname und dann steht er zur Verfügung,

Tut er nicht?
Pffffh

Dann mußt du den hostnamen bei Empfang der DHCP Information im hook selbst eintragen.
Das geht mit:
# hostname -v klarissa
oder direkt in den kernel
# echo "klarissa" > /proc/sys/kernel/hostname
oder auf Standard systeme
# echo "klarissa" > /etc/hostname
oder
du schreibst ihn gemeinsam mit localhost in /etc/hosts

Code: Alles auswählen

127.0.0.1	localhost
192.169.31.31	klarissa.bb.cc.dd	klarissa
wbwb hat geschrieben:
1. Sep 2017, 21:29
Wenn ich das mache, gibt MPIs gethostbyname() auf meinem Laptop zumindest keine Fehler mehr aus ...
gethostbyname()
macht ein query, zuerst schaut er in lokale files dann DNS, oder umgekehrt, je nach Systemkonfiguration
Wenn also
gethostbyname("klarissa")
dann bekommt er in meinem Beispiel 192.169.31.31 zurück.
In deinem Fall erhält er 127.0.0.2.
Er meckert zwar nicht, aber das ist sicher nicht deine IP, also falsch.

Der Hostname ist nicht wirklich trivial.
Stell die vor, du hast 2 Netzwerkkarten.
Willst du nun einen globalen Hostname oder 2 Hostname je IP?
Wenn global, dann trage ihn wie oben beschrieben mit hostname oder direkt in den kernel ein.
Wenn hostname je IP, dann trage das ein in /etc/hosts,
also

Code: Alles auswählen

127.0.0.1	localhost
192.168.31.20	klarissa.bb.cc.dd	klarissa
192.189.31.21	paulinchen.bb.cc.dd	paulinchen
Alles klar?

wbwb
Member
Member
Beiträge: 217
Registriert: 26. Jun 2006, 14:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von wbwb » 2. Sep 2017, 10:20

Gräfin Klara hat geschrieben:
1. Sep 2017, 23:22
Alles klar?
Nein - sonst würde ich hier ja nicht dusselig fragen ;)
Ich versuche einfach mal gaaanz langsam, der Reihe nach durch deine Antworten durch zu gehen. Mal sehen wann Du keine Lust zum Antworten mehr hast. Ich fange erst mal mit dem einfachsten an.
Gräfin Klara hat geschrieben:
1. Sep 2017, 23:22

Code: Alles auswählen

127.0.0.2 aaa.bb.cc.dd
ist falsch.
Das habe ich mir natürlich nicht aus den Fingern gesogen, sondern (i) man findet diesen Vorschlag in diversen MPI-Foren und (ii) ich habe diese Einstellung von meinen letzten 3 Laptops der letzten ~10 Jahre 'artig' tradiert und habe damit nie Probleme mit DHCP oder ähnlich fürchterlichen Dingen die Du beschreibst gehabt und ich hänge täglich in zig unterschiedlichen Netzwerken drin ... das sagt natürlich alles nix und ist bisher auch keine Frage, sondern nur eine Feststellung.
Die erste Frage kommt jetzt
Gräfin Klara hat geschrieben:
1. Sep 2017, 23:22
Du willst nicht auf DHCP verzichten?
Über DHCP beziehst du den domainnamen. Der wird gesetzt und du hast damit also nichts mehr zu tun.
Über DHCP beziehst du auch den hostnamen, sofern der server so konfiguriert ist. Er schickt dir den Namen auf deine MAC.
Natürlich verzichte ich nicht auf DHCP und dass man seinen hostname/domainname über DHCP bekommen sollte, lese ich auch immer wieder. So viel zur Theorie. In der Praxis aber musste ich bisher bei jeder SuSE Installation die ich privat gemacht habe einen hostname und einen domainname eingeben und die selbigen stehen nachher, solange ich mich daran erinnern kann unter yast->network settings in hostname und in domainname und der Befehl hostname spuckt dann natürlich 'hostname.domainname' aus und das hat mir alles noch nie Probleme mit DHCP bereitet.

Wie soll man das denn bitte mit Deiner Aussage über DHCP zusammenbringen? Könntest Du mir dass bitte erst einmal entwirren?

wbwb

Gräfin Klara
Hacker
Hacker
Beiträge: 332
Registriert: 23. Jun 2008, 20:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von Gräfin Klara » 2. Sep 2017, 13:25

Damit meine Antwort auch deiner realen Umgebung entspricht:
Mit oder Ohne DNS im LAN?

spoensche
Moderator
Moderator
Beiträge: 7396
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von spoensche » 2. Sep 2017, 14:58

Folgendes ist falsch:

Code: Alles auswählen

127.0.0.1 localhost dein.rechner
Es muss

Code: Alles auswählen

127.0.0.1 localhost localhost.localdomain
lauten.

marce
Advanced Hacker
Advanced Hacker
Beiträge: 1078
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von marce » 2. Sep 2017, 15:02

Doofe Frage: Was ist daran falsch?

Einträge wie "127.0.0.1 localhost mein.pc dreckskiste test.domain.de" sind völlig valide und keinerlei Problem.

stka
Moderator
Moderator
Beiträge: 3287
Registriert: 1. Jun 2004, 13:56
Wohnort: 51°58'34.91"N 7°38'37.47"E
Kontaktdaten:

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von stka » 2. Sep 2017, 19:31

Weil 127.0.0.1 IMMER nur auf localhost zeigt. Steht auch in den RFCs 2606 und 6761. Und aus diesem Grund sind alle anderen Einträge eben NICHT valide.
Hast du keinen DNS-Server kannst du deine Rechner in deinem Netz mit dem Namen und der IP zusätzlich eintragen.
Du hörst nicht auf zu laufen weil du alt wirst. Du wirst alt weil du aufhörst zu laufen.
Das neue Buch http://www.kania-online.de/fachbuecher

spoensche
Moderator
Moderator
Beiträge: 7396
Registriert: 30. Okt 2004, 23:53
Wohnort: Siegen

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von spoensche » 2. Sep 2017, 19:33

127.0.0.1 ist explizit reserviert für den Hostnamen localhost bzw. localhost.localdomain. Für alle anderen Namensgebungen ist die 127.0.1.1 zu verwenden.
Die 127.0.1.1 wird z.B. bei der IP Zuweisung mittels DHCP verwendet.

wbwb
Member
Member
Beiträge: 217
Registriert: 26. Jun 2006, 14:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von wbwb » 2. Sep 2017, 21:14

Gräfin Klara hat geschrieben:
2. Sep 2017, 13:25
Mit oder Ohne DNS im LAN?
(i) Jetzt bin ich gerade in einem WiFi
(ii) und DNS(?) ... na, ja also ich bekomme

Code: Alles auswählen

~>nslookup www.wikipedia.org
Server:		192.168.0.1
Address:	192.168.0.1#53
Name:	www.wikipedia.org
Address: 91.198.174.192
dementsprechend ist der WiFi Router (192.168.0.1) wohl gerade der DNS Server, was auch hiermit übereinstimmt

Code: Alles auswählen

~>cat /etc/resolv.conf
blabla
search bb.cc.dd   <- die von mir bei der Installation eingetragene domain, die so auch im yast steht
nameserver 192.168.0.1
So. Bin auf Deine Antwort auf meine obige 'erste Frage' gespannt.
.
.
spoensche hat geschrieben:
2. Sep 2017, 14:58
Es muss

Code: Alles auswählen

127.0.0.1 localhost localhost.localdomain
lauten.
Hmm, diese Zeile führt genau zu demselben Fehler der OpenMPI wie ursprünglich gepostet.
.
.
marce hat geschrieben:
2. Sep 2017, 15:02
Einträge wie "127.0.0.1 localhost mein.pc dreckskiste test.domain.de" sind völlig valide und keinerlei Problem.
Abgesehen davon, dass mein Rechner natürlich viel netter heißt ;) , ist es genau ein solcher Eintrag, der die OpenMPI fehlerfrei arbeiten lässt. Ich habe zwar inzwischen eine zusätzliche Zeile

Code: Alles auswählen

127.0.0.2   meinrechnername.meine.domä.ne
in die /etc/hosts rein geschrieben und die 127.0.0.1 Zeile so gelassen wie ursprünglich - aber 127.0.0.2 ist ja auch noch loopback.

Und da habe ich jetzt doch noch die Frage: wenn marce seinen Rechner und Domäne einfach mein.pc dreckskiste test.domain.de nennen würde und das auch noch fest in die /etc/hosts schreiben würde, wie passt das mit Gräfin Klaras Aussage zusammen, dass solche Namen alle vom DHCP kommen (von dem ich annehme, dass er bei marce auch funktioniert)?

wbwb

marce
Advanced Hacker
Advanced Hacker
Beiträge: 1078
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von marce » 2. Sep 2017, 22:33

stka hat geschrieben:
2. Sep 2017, 19:31
Weil 127.0.0.1 IMMER nur auf localhost zeigt. Steht auch in den RFCs 2606 und 6761. Und aus diesem Grund sind alle anderen Einträge eben NICHT valide.
spoensche hat geschrieben:
2. Sep 2017, 19:33
127.0.0.1 ist explizit reserviert für den Hostnamen localhost bzw. localhost.localdomain. Für alle anderen Namensgebungen ist die 127.0.1.1 zu verwenden.
Die 127.0.1.1 wird z.B. bei der IP Zuweisung mittels DHCP verwendet.
Ich mag mich irren, aber beide erwähnten RFCs sagen nur was zu localhost und localdomain - aber nicht zu 127.0.0.1.
Es wird dort auch nirgends eine alternative Zuordnung anderer Namen auf die 127.0.0.1 verboten - eher andersherum - 127.0.0.1 mappt zwingend auf localhost - es wird aber nicht verboten, das "rsnlgmpf" auf 127.0.0.1 mappt.

Daß 127.0.1.1 als "Alternative" verwendet wird ist wohl eine Debian-Spezialvariante. Macht ja nichts, ist ja in 127.0.0.1/8 enthalten.

-> ich bleibe bei meiner Aussage.

(wäre ja auch verwunderlich, wenn viele OS bei der Standard-Installation sich nicht RFC-Konform verhalten würden, indem sie in die hosts-Datei den vom User vergebenen Hostnamen auch auf die 127.0.0.1 eintragen / mappen)

stka
Moderator
Moderator
Beiträge: 3287
Registriert: 1. Jun 2004, 13:56
Wohnort: 51°58'34.91"N 7°38'37.47"E
Kontaktdaten:

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von stka » 2. Sep 2017, 22:52

127.0.0.1 und der Mist von Debian mit der 127.0.1.1 auf den Hostname lässt dich spätestens bei einem Samba und AD verzweifeln weil der Join nicht klappt. Aber mach was du willst, des Menschens Wille ist sein Himmelreich ;-)

Also 127.0.0.1 ist und bleibt localhost. alles andere kann man machen, ist aber dann Kacke :D
Du hörst nicht auf zu laufen weil du alt wirst. Du wirst alt weil du aufhörst zu laufen.
Das neue Buch http://www.kania-online.de/fachbuecher

marce
Advanced Hacker
Advanced Hacker
Beiträge: 1078
Registriert: 19. Jun 2008, 13:16
Wohnort: Dettenhausen
Kontaktdaten:

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von marce » 2. Sep 2017, 23:29

stka hat geschrieben:
2. Sep 2017, 22:52
Also 127.0.0.1 ist und bleibt localhost.
Eher anders herum - oder ergänzend
localhost ist und bleibt 127.0.0.1 (und nichts anderes)
... während die RFCs zu 127.0.0.1 und den zugeordneten Hosteinträgen sehr offen sind. localhost muss, alles andere kann.

(ob man die man-Page der hosts-Datei als relevanten Doku-Eintrag hier verlinken sollte / kann bin ich mir nicht so sicher - zumindest auf Linux-basierenden Systemen ist das aber auch "relevant" - mag sein, daß andere OS da restriktiver agieren)

Was natürlich klar sein sollte ist, daß man bei irgendwelchen Mappings sehr darauf aufpassen muss, daß sich da nichts mit anderen, externen "DNS-Services" beißt (wenn man die hosts-Datei als solchen bezeichnen will)

Gräfin Klara
Hacker
Hacker
Beiträge: 332
Registriert: 23. Jun 2008, 20:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von Gräfin Klara » 3. Sep 2017, 12:19

wbwb hat geschrieben:
2. Sep 2017, 10:20
Natürlich verzichte ich nicht auf DHCP und dass man seinen hostname/domainname über DHCP bekommen sollte, lese ich auch immer wieder. So viel zur Theorie. In der Praxis aber musste ich bisher bei jeder SuSE Installation die ich privat gemacht habe einen hostname und einen domainname eingeben und die selbigen stehen nachher, solange ich mich daran erinnern kann unter yast->network settings in hostname und in domainname und der Befehl hostname spuckt dann natürlich 'hostname.domainname' aus und das hat mir alles noch nie Probleme mit DHCP bereitet.

Wie soll man das denn bitte mit Deiner Aussage über DHCP zusammenbringen? Könntest Du mir dass bitte erst einmal entwirren?

wbwb
Ok, ich gehe nun davon aus, dass der DHCP Server richtig konfiguriert ist und im LAN ein DNS zur Verfügung steht,
In den Eingabemasken, die dir Suse zur Verfügung stellt, sind Hostname und Domainname eingetragen.
MHS (Eingabemaske Hostname) steht "paulchen"
MDN (Eingabemaske Domainname) steht "suse.lan"

Du fährst nun deinen Rechner im Netz hoch, MHS, MDN und jede eventuell konfigurierte IP werden vom System als NICHT GÜLTIG markiert, da du DHCP ausgewählt hast.
Es wird nun ein vom Distributor gestelltes script ausgeführt, dass einen DHCP client startet. Dieser setzt einen DHCP broadcast ab.
Das geht auch nur auf diese Weise, weil noch keine IP oder andere Informationen über dieses Netz zur Verfügung stehen.

Dieser DHCP broadcast - er besteht aus deiner MAC und der Information "Hallo,ich bin neu hier" - wird von allen Rechnern im Netz empfangen aber auch von allen ignoriert - außer von einem, dem DHCP Server. Der sammelt nun die Informationen für dich zusammen. Der Domainname ist simpel. Der DHCP Server ist ja zuständig für ein Subnet, z.B. 192.168.96.32/27. Das wären 30 Hosts und alle diese Hosts bekommen denselben Domainnamen, sind also alle Mitglied in dieser domain. Danach schaut er in seinen pool an IP Adressen und holt sich eine heraus, die er noch nicht vergeben hat. Mit dieser gefundenen IP wendet er sich an den DNS und fragt dort mit gethostbyaddr(IP) an, welcher hostname dieser IP zugegeteilt ist. Das kann natürlich schief gehen, weil nicht alle IPs am DNS eingetragen sein müssen. Die Hostname Information ist also keineswegs immer vorhanden. Hat der DHCP Server die Infos beisammen, sendet er sie als DHCP Broadcast in das Netz, natürlich gemeinsam mit deiner MAC. Alle Rechner im Netz empfangen dieses Paket, alle Rechner werfen es weg - außer dein Rechner - der DHCP client lauscht ja noch immer. Dieser erkennt die MAC und empfängt dieses Datenpaket. So ein Paket ist einfach aufgebaut und besteht aus:
a,) Deine neue IP Adresse
b,) Netzwerk Maske
c.) Gefault Gateway Adresse
d.) DNS Server Adresse
e.) Domainname
f.) Hostname ?? oder auch nicht
und noch ein paar anderer Sachen, die hier aber unwichtig sind

Mit dem Empfang dieses Paketes hat der DHCP client seine Arbeit getan. Er übergibt diese Daten an das script das ihn gestartet hat und verabschiedet sich.
Nun liegt es am script (DHCP hook) des Distributors, wie mit diesen Daten umgegangen wird.

a,b,c wird mit ifconfig oder einem anderen Programm in den kernel geschrieben, damit wird deine Netzwerkkarte konfiguriert.
d und e werden in /etc/resolv.conf geschrieben:

Code: Alles auswählen

search domainname_vom_dhcp
nameserver DNS_IP_adresse_vom_dhcp
Hier gilt: MDN wird überschrieben oder als ungültig markiert, wenn MDN nicht DHCP_domainname!
Ist das nicht der Fall, dann ist das ein bug des Distributors,

Der hostname ist speziell. Ist er vorhanden oder nicht?
Ist er vorhanden, dann ist nur dieser gültig. Ist MHS nicht DHCP_hostname, dann wird MHS überschrieben oder als ungültig markiert
Ist das nicht der Fall, dann ist das ein bug des Distributors,
Das script schreibt in /etc/hosts

Code: Alles auswählen

127.0.0.1	localhost
Mehr ist da nicht! Da der DHCP_hostname gültig ist, wird er vom DNS, aber nicht aus diesem file bezogen.
gethostbyname() wird also funktionieren.

War Hostname nicht im DHCP_Datenpaket, dann schreibt das script in /etc/hosts

Code: Alles auswählen

127.0.0.1	localhost
IP_vom_DHCP	paulchen.domainname_vom_dhcp	paulchen
Damit steht dort der hostname aus MHS und die domain aus dem DHCP Paket.
gethostbyname() wird so funktionieren.

Wie du nun sehen kannst, ist der hostname in jedem Fall der IP_vom_DHCP zugeordnet,
entweder über den DNS oder über das hosts file.
In keinem Fall wird der hostname irgendwo innerhalb vom loopback (127.0.0.0/8) gesetzt.
Weiters wirst du nun erkennen, dass bei DHCP es NICHT notwendig ist, irgendwelche Änderungen an /etc/hosts vorzunehmen.
DHCP und das script des Distributors regeln das alles wie beschrieben. Dazu ist das DHCP ja da!

Noch ein Hinweis:
In routers arbeiten meist Mini_DHCP_server, die NUR a,b,c (siehe oben) zur Verfügung stellen.
In diesem Fall würde /etc/hosts richtigerweise bestehen aus IP_vom_DHCP und MHS und MDN,
Darüber sollten wir hier jedoch nicht diskutieren, weil die Verwendung von DHCP aus routern jeder Sicherheitsüberlegung widersprechen.

Gruß
Gräfin Klara

wbwb
Member
Member
Beiträge: 217
Registriert: 26. Jun 2006, 14:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von wbwb » 3. Sep 2017, 18:57

Erst mal vielen Dank für all die Infos!
.
Gräfin Klara hat geschrieben:
3. Sep 2017, 12:19
So ein Paket ist einfach aufgebaut und besteht aus:
a,) Deine neue IP Adresse
b,) Netzwerk Maske
c.) Gefault Gateway Adresse
d.) DNS Server Adresse
e.) Domainname
f.) Hostname ?? oder auch nicht

a,b,c wird mit ifconfig oder einem anderen Programm in den kernel geschrieben, damit wird deine Netzwerkkarte konfiguriert.
Ok. Also a,b,c wird vom OS richtig behandelt, sonst wäre ja nicht mal die Netzwerkkarte richtig konfiguriert und ich würde hier kaum im Netz sein.
.
Gräfin Klara hat geschrieben:
3. Sep 2017, 12:19
d und e werden in /etc/resolv.conf geschrieben:

Code: Alles auswählen

search domainname_vom_dhcp
nameserver DNS_IP_adresse_vom_dhcp
Nein. Bei mir steht hier

Code: Alles auswählen

search MDN
nameserver DNS_IP_adresse_vom_dhcp
Bevor wir uns jetzt darauf zurückziehen, dass es
Gräfin Klara hat geschrieben:
3. Sep 2017, 12:19
ein bug des Distributors
ist, möchte ich einen Schritt zurück und fragen, ob es irgend eine Möglichkeit für mich gibt festzustellen, ob der DHCP client Deine beiden Items: e.) Domainname und f.) Hostname nach dem DHCP broadcast überhaupt aus dem Netzt zurück bekommt und wenn ja, wo diese Info im System evtl. noch außer in der /etc/resolv.conf zu finden wären?
.
Gräfin Klara hat geschrieben:
3. Sep 2017, 12:19
Der hostname ist speziell. Ist er vorhanden oder nicht?
Ist er vorhanden, dann ist nur dieser gültig. Ist MHS nicht DHCP_hostname, dann wird MHS überschrieben oder als ungültig markiert
Ist das nicht der Fall, dann ist das ein bug des Distributors,
Das script schreibt in /etc/hosts

Code: Alles auswählen

127.0.0.1	localhost
Mehr ist da nicht! Da der DHCP_hostname gültig ist, wird er vom DNS, aber nicht aus diesem file bezogen.
gethostbyname() wird also funktionieren.

War Hostname nicht im DHCP_Datenpaket, dann schreibt das script in /etc/hosts

Code: Alles auswählen

127.0.0.1	localhost
IP_vom_DHCP	paulchen.domainname_vom_dhcp	paulchen
Wenn ich Dich hier richtig verstehe, dann bedeutet es im Umkehrschluss, dass wenn ich in der /etc/hosts keine Zeile der Art

Code: Alles auswählen

IP_vom_DHCP	paulchen.domainname_vom_dhcp	paulchen
habe, dass dann der DHCP client einen DHCP_hostname bekommen haben müsste?
(i) ich habe im /etc/hosts keine solche Zeile,
(ii) das Kommando hostname oder uname -n ergibt bei mir einfach MHS.MDN und
(iii) in YAST gäbe es in den Netzwerkeinstellungen im Reiter Hostname/DNS, wo man Hostnamen über DHCP setzen evtl. konfigurieren könnte - aber der ist 'aus-ge-graut'.

Bisheriges Fazit: weder weiß ich ob ich einen domainname_vom_dhcp oder einen DHCP_hostname bekomme, und wenn ja, dann wird davon rein gar nix in /etc/resolv.conf oder /etc/hosts rein geschrieben.

Jetzt brauche ich dann wohl weitere Infos?

Gruß wbwb


PS.: ich nutze seit mindesten einer Dekade mit mindestens 3-4 OpenSuse distros auf mehreren Laptops im wesentlichen die selbe Netzwerkkonfig. und das sind einfach nur die Standard-Vorgaben von SuSE. Anlass meiner Frage war ja nur ob dieses Reinschreiben von 127.0.0.2 meinrechnername.meine.domä.ne in die /etc/hosts verboten ist. ... wenn ich Dich aber bis hierhin richtig verstanden habe, müsste ich jetzt annehmen, dass OpenSuSEs default Netzwerkkonfiguration im DHCP Betrieb fehlerhaft ist ... hmmm

Gräfin Klara
Hacker
Hacker
Beiträge: 332
Registriert: 23. Jun 2008, 20:51

Re: 127.0.0.1 in /etc/hosts 'richtig' konfigurieren

Beitrag von Gräfin Klara » 3. Sep 2017, 19:17

>> dass OpenSuSEs default Netzwerkkonfiguration im DHCP Betrieb fehlerhaft ist ... hmmm

Das kannst du nur wissen, wenn du einen dhcp broadcast ins Netz sendest
Beispiel:
# nmap --script broadcast-dhcp-discover -e enp2s2 .... oder wie immer dein device sich nennt

Antworten