Ich habe die Fehlermeldung "Hostname: Name oder Dienst nicht bekannt" erhalten, wenn ich die IP des Hostnamens überprüfe


13

Ich verwende Ubuntu 14.04 für den Cloud-Dienst meines Unternehmens (meine Instanz verfügt über eine elastische IP-Adresse). Ich möchte die IP-Adresse meiner Instanz, die ich verwende, über die Befehlszeile überprüfen, aber es hat nicht funktioniert.

root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known

Ich verstehe den Grund nicht warum. 

Ich habe versucht, Ubuntu14-Graphit anzupingen, aber es sagte:

unknown host ubuntu14-graphite.

Bedeutet das, dass mein Gastgeber nicht existiert?

Ich habe einen anderen Server (keine Cloud-Instanz, sondern einen physischen Server). Auf diesem Server habe ich CentOS 6.7 installiert. Ich habe die IP des Hostnamens überprüft und es hat funktioniert, obwohl nichts Besonderes dabei war /etc/hosts.

Hier ist die Ausgabe von cat /etc/hosts:

127.0.0.1   localhost

# The following lines are desirable for IPv6 capable hosts
::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

Antworten:


15

Dies bedeutet, dass "das System" (ich verwende diesen Begriff im weitesten Sinne, allgemein und mehrdeutig) nicht weiß, dass der Name ubuntu14-graphite Ihrem Host und seiner IP-Adresse entspricht. (Die Tatsache, dass dies der Name Ihres Hosts ist, reicht nicht aus, um dies zu ermöglichen.) Dies bedeutet mit ziemlicher Sicherheit, dass Sie ubuntu14-graphite in Ihrer /etc/hostsDatei keine Zeile für haben und dass es sich nicht um Ihren Namensdienst handelt (z. B. DNS oder NIS). Infolgedessen können Sie dieses Problem beheben, indem Sie es ubuntu14-graphitezu Ihrer IP-Adresse hinzufügen /etc/hosts. Wenn Sie ein ausgefeilteres (verteiltes) Namenssystem wie DNS oder NIS (oder ActiveDirectory?) Verwenden, besteht die ultimative Lösung darin, Ihren Host zu diesem Dienst hinzuzufügen.
_____________
† ...

Über die Frage, welche IP-Adresse Sie Ihrem Hostnamen zuordnen sollten, wird diskutiert. Alle sind sich einig, dass dies eine Adresse sein sollte, die für Ihren Gastgeber "funktioniert". Das heißt, Befehle wie sollten erfolgreich sein. Einige Leute empfehlen die Verwendung einer Loopback-Adresse. Loopback-Adressen haben immer die Form 127 .BCD ; Übliche Werte sind 127.0.0.1 und 127.0.1.1. Andere Leute empfehlen die Verwendung einer LAN-Adresse, die wie 192.168 .CD aussehen könnte (aber es kann fast alles sein) - aber Sie sollten keine dynamisch zugewiesene Adresse in Ihre Hosts-Datei einfügen (und wenn Sie DHCP mit DNS verwenden, dann Die dynamisch zugewiesenen Adressen sollten automatisch in Ihre DNS-Einträge eingetragen werden. Verwenden Sie Befehle wie und, um zu sehen, welche Adressen verwendet werden.ping A.B.C.Difconfighostname -I


Vielen Dank für Ihre Antwort. Ich habe meine Frage bearbeitet, weil ich einen weiteren Fall im Zusammenhang mit meinem CentOS-Server bemerkt habe, der nur 127.0.0.1 localhost enthält, aber ich kann trotzdem die IP meines Hosts überprüfen.
Der Eine

Nun, vielleicht werden Name und Adresse des CentOS-Servers in das DNS-System eingegeben (oder welcher Namensdienst auch immer verwendet wird).
G-Man sagt, dass Monica

Auf dem CentOS-System wurde bind und bind-utils nicht installiert. Also bin ich wirklich verwirrt.
Der Eine

@TheOne Ubuntu behandelt hostnameunterschiedlich , dass RH basierend systems..put 127.0.1.1 ubuntu14-graphitein der /etc/hostsDatei und check..note, sein 127.0.1.1, nicht 127.0.0.1(die Sie Erhalter sowieso nur für localhost, als 127.0.0.0/8Loopback - Block ist , können Sie eine beliebige Adresse verwenden , obwohl einige Systeme haben vordefinierte Adressen beschränkt )
heemayl

@heemayl Also indem ich 127.0.1.1 ubuntu14-graphite auf / etc / hosts setze und dann die IP überprüfe, habe ich nicht die richtige IP bekommen. Das ergibt doch keinen Sinn, oder?
Der Eine


0

Fügen Sie den myhostnameEintrag dem hostsDienst in hinzu /etc/nsswitch.conf.

Mit anderen Worten, ändern Sie diese Zeile in /etc/nsswitch.conf:

hosts:      files dns

dazu:

hosts:      files dns myhostname

Wenn Hostnamen normalerweise mithilfe von /etc/hostsDatei und DNS aufgelöst werden , kann der Hostname des Systems auch aufgelöst werden, indem der Name Service Switch dazu aufgefordert wird (wie bei dieser Konfigurationsänderung).

Dies würde erklären, warum Sie nichts Besonderes über die /etc/hostsDatei auf dem System gesehen haben, das Sie den lokalen Hostnamen auflösen könnten.

Weitere Informationen zur myhostnameFlagge finden Sie hier .


0

Meiner Meinung nach hängt es von der Version des Befehls hostname (net-tools package) ab.

Siehe: https://bugzilla.redhat.com/show_bug.cgi?id=319981

  • Beispiel für "openSuse Leap 42.3":
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

    # hostname -i
    hostname: Name or service not known
  • am Lubuntu 17.10
  $ hostname -V
  hostname 3.18

hostname -i - gibt mir Informationen zu IPv6 und IPv4


Dieser Fehlerbericht ist etwa hostname -s, nicht hostname -i. Dies hängt nicht mit Versionen von zusammen hostname, sondern damit, ob der von angegebene Hostname hostnameauflösbar ist.
Stephen Kitt

-2

Gehen Sie zu etc / hosts.save und überprüfen Sie dort Ihren Hostnamen. Und dann bearbeiten /etc/hosts , um dort Ihren Hostnamen und den Hostnamen in zu schreiben hosts.save. Überprüfen Sie auch die IP-Adresse. Beispiel:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
Wenn Sie eine Localhost-IP eingeben, /etc/hostswird ihnen nicht die tatsächliche IP-Adresse zugewiesen. Ich verstehe auch nicht, warum Sie auch schauen, /etc/hosts.savewas technisch und sehr irrelevant ist.
Julie Pelletier
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.