hostname: Name or service not known

Alles rund um Netzwerktechnik und Protokolle
cooky1976
Posts: 63
Joined: 2004-02-03 13:14

hostname: Name or service not known

Post by cooky1976 »

Hallo,

so dumm das jetzt alles aussehen mag', aber ich weiß überhaupt nicht weiter.

Auf einem Debian System funktioniert der Befehl hostname --fqdn nicht mehr. Lediglich "hostname" gibt eine Ausgabe. Ich habe mich bereits durch den Sourcecode debuggt.
Liegt an dem Aufruf in hostname.c in Zeile 272:
getaddrinfo(localhost(), NULL, &hints, &res)

getaddrinfo ist ja eine Funktion in der libc. Diese sollte laut man-page auf die /etc/hosts zugreifen. Meine /etc/hosts:

Code: Select all

127.0.0.1 localhost
***.***.***.*** *domainname* *alias*

# The following lines are desirable for IPv6 capable hosts
# (added automatically by netbase upgrade)
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
damit wäre ja localhost definiert. Trotzdem bekomme ich von getaddrinfo immer ein Name or service not known.

Bin über jeden Tipp dankbar.

cooky1976
cooky1976
Posts: 63
Joined: 2004-02-03 13:14

Re: hostname: Name or service not known

Post by cooky1976 »

Nachtrag: die nsswitch.coinf enthält Folgendes:
hosts: files dns
networks: files

Somit müsste ja der localhost-Eintrag von der /etc/hosts gelesen werden.
spiderman
Posts: 14
Joined: 2003-11-20 22:59

Re: hostname: Name or service not known

Post by spiderman »

cooky1976 wrote: getaddrinfo ist ja eine Funktion in der libc. Diese sollte laut man-page auf die /etc/hosts zugreifen. Meine /etc/hosts:

Code: Select all

127.0.0.1 localhost
***.***.***.*** *domainname* *alias*
damit wäre ja localhost definiert. Trotzdem bekomme ich von getaddrinfo immer ein Name or service not known.
hm, hast du denn einen Eintrag in der /etc/hosts, für das was in der /etc/hostname steht (und dementsprechend bei hostname ausgegeben werden sollte)?

also:
/etc/hostname: meinserver

/etc/hosts: 192.168.0.1 meinserver.meinedomain.de meinserver

Dann sollte mE hostname -f eigentlich was sinnvolles ausgeben...
cooky1976
Posts: 63
Joined: 2004-02-03 13:14

Re: hostname: Name or service not known

Post by cooky1976 »

Ja, genau, beide hostname und hosts sind gefüllt. Ist eine sehr verrückte Sache. Tritt bei ca. 20% der Rechner seit ca. 2 Wochen auf.
spiderman
Posts: 14
Joined: 2003-11-20 22:59

Re: hostname: Name or service not known

Post by spiderman »

cooky1976 wrote:Ja, genau, beide hostname und hosts sind gefüllt. Ist eine sehr verrückte Sache. Tritt bei ca. 20% der Rechner seit ca. 2 Wochen auf.
"Sind gefüllt" ? Was genau heisst das? Sind die denn auf die Art und Weise "gefüllt", wie ich es in meinem vorherigen Post beschrieben habe?
Ich habe dieses Phänomen noch auf keinem meiner Systeme gehabt...
User avatar
Joe User
Project Manager
Project Manager
Posts: 11175
Joined: 2003-02-27 01:00
Location: Hamburg

Re: hostname: Name or service not known

Post by Joe User »

Schuss ins Blaue: Windows Editor verwendet? BOM eingeschleust? Unterschiedliche Patchlevel? RootKits?
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
cooky1976
Posts: 63
Joined: 2004-02-03 13:14

Re: hostname: Name or service not known

Post by cooky1976 »

Hallo,

danke für Deine Antwort.
Schuss ins Blaue: Windows Editor verwendet? BOM eingeschleust? Unterschiedliche Patchlevel? RootKits?
- mein Freund ist vim oder nano
- an einem BOT kann es *meines Erachtens* nicht liegen, ist erst seit Paketupgrade
- alt: 2.95 lief und läuft wieder, 2.98 und 3.00 läuft nicht

Die Unterschiede sind im Aufruf "hostname --fqdn" folgende:
- alt (2.95):

Code: Select all

if ((hp = gethostbyname(localhost())) == NULL)
- neu (2.98 und 3.00):

Code: Select all

if ((ret = getaddrinfo(localhost(), NULL, &hints, &res)) != 0)
Irgendwas muss hier bei getaddrinfo dazwischenfunken. Ist auch nicht bei allen Rechnern, die unter der Konfiguration laufen, nur 2 verhalten sich anders.

Danke für weitere Hinweise.

cooky1976
User avatar
daemotron
Administrator
Administrator
Posts: 2639
Joined: 2004-01-21 17:44

Re: hostname: Name or service not known

Post by daemotron »

Also ich denke, mit einem Rootkit hat das nichts zu tun. getaddrinfo() wurde mit IEEE 1003.1-2001 eingeführt und löst die alten Funktionen (gethostbyname() und gethostbyaddr()) ab. Vorteil der neuen Funktion: sie ist eintrittsinvariant (und damit thread-safe) und beherrscht sowohl IPv4- als auch IPv6-Adressen.

Versuchen wir mal, den Fehler einzukreisen. Sind die Variablen hints und res korrekt deklariert? Das müsste so aussehen:

Code: Select all

struct addrinfo hints;
struct addrinfo *res;
Man beachte den Unterschied, der zweite Parameter von getaddrinfo() muss ein Zeiger auf einen Zeiger sein (struct addrinfo **res).

Wenn die Deklarationen korrekt sind, sollte die Funktion auch richtig arbeiten. Wenn sie nicht korrekt ausgeführt wird, kannst Du Dir mit gai_strerror(ret) eine Fehlerbeschreibung des Rückgabewerts besorgen.

Interessant wäre jetzt allerdings der Codeabschnitt, der das Ergebnis von getaddrinfo() auswertet. Ein Zeiger auf die Ergebnisstruktur wird in res gespeichert. Diese Ergebnisstruktur ist aber der Kopf einer verketteten Liste; d. h. der erste Eintrag muss nicht unbedingt der gesuchte sein, sondern man muss über diese Liste iterieren, bis res->ai_family (natürlich iteriert man eigentlich nicht mit res, sondern einer separaten Pointer-Variablen, um den Anfang der Liste nicht zu verlieren) der gewünschten Adressfamilie entspricht. Da in Deiner /etc/hosts IPv6- und IPv4-Adressen gemischt stehen, hat die Liste mit ziemlicher Sicherheit mindestens zwei Einträge (im Gegensatz zur alten Variante, wo immer nur ein eindeutiger Satz gefunden werden konnte). Wurde also die Ergebnisauswertung nicht auf eine Schleife umgestellt, so liegt hier mit ziemlicher Sicherheit der Fehler (und das wäre ein grober Schnitzer und hätte eigentlich schon längst jemandem auffallen müssen).

Ansonsten wäre noch sehr interessant zu erfahren, welchen Rückgabewert die Funktion localhost() liefert - mit selbigem wird getaddrinfo() ja gefüttert, und an dieser Stelle erwartet getaddrinfo() entweder eine IP-Adresse (IPv4 oder IPv6) oder einen Hostnamen (FQDN oder einen in /etc/hosts bekannten Alias).

Ach ja, und zu ganz allerletzt: Unterstützt Dein Kernel eigentlich IPv6? Wenn nein, wirf die IPv6-Einträge aus Deiner /etc/hosts wieder raus, das macht sonst nur Ärger und könnte die Ursache für den Fehler sein.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
cooky1976
Posts: 63
Joined: 2004-02-03 13:14

Re: hostname: Name or service not known

Post by cooky1976 »

Hallo jfreund,

danke für Deine Antwort. Ich habe das Problem etwas liegen lassen, da ich dachte, die Zeit löst vielleicht das Problem, was aber leider nicht eintrat.

Ich verwende das Standard-Debian-Paket, das bei 95% aller eingesetzten Server ohne Probleme läuft, nur eben 2 machen hier Probleme.

Aber ich habe die Variablendeklaration gecheckt und es wird der korrekte Typ eingesetzt.

Nennen wir mal den Server abc-server.de als fqdn

in der /etc/hosts steht also:
127.0.0.1 localhost
1.2.3.4 abc-server.de abc

in der /etc/hostname:
abc-server.de

Der Rückgabewert von localhost ist "abc-server", was laut manual so weit richtig sein sollte, der Rückgabewert von
ret = getaddrinfo(localhost(), NULL, &hints, &res)
ist allerdings != 0, was auf einen Fehler rückschließen lässt. Die von Dir vorgeschlagene Ausgabe des Fehlers ergibt:
Name or service not known

Es scheint also der Fehler direkt in getaddrinfo aufzutreten, nur finde ich einfach nicht den Punkt, welcher Service nicht gefunden wird, selbst der Sourcecode von getaddrinfo bringt mich nicht weiter.

Bin über jede Information dankbar.

Besten Dank und gute Nacht

cooky1976
spiderman
Posts: 14
Joined: 2003-11-20 22:59

Re: hostname: Name or service not known

Post by spiderman »

cooky1976 wrote: Nennen wir mal den Server abc-server.de als fqdn

in der /etc/hosts steht also:
127.0.0.1 localhost
1.2.3.4 abc-server.de abc

in der /etc/hostname:
abc-server.de
Das ist aber doch genau das, was ich in meinen Posts oben abgefragt habe?
in der /etc/hostname sollte _nur_ der hostname drin stehen, nix mit irgendwelchen Domains. Die Auflösung auf fqdn erfolgt dann via /etc/hosts.

http://www.de.linwiki.org/wiki/Linuxfib ... 2FHOSTNAME
http://www.de.linwiki.org/wiki/Linuxfib ... tc.2Fhosts

So habe ich das überall laufen, und das tut es...