Podczas sprawdzania adresu IP nazwy hosta wystąpił błąd „nazwa hosta: nazwa lub usługa nieznana”


13

Używam Ubuntu 14.04 w usłudze chmurowej mojej firmy (moja instancja ma elastyczny adres IP). Chcę sprawdzić adres IP mojej instancji, którą uruchamiam za pomocą wiersza polecenia, ale to nie zadziałało.

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

Nie rozumiem powodu dlaczego. 

Próbowałem pingować na Ubuntu14-grafit, ale powiedział:

unknown host ubuntu14-graphite.

Czy to oznacza, że ​​mój host nawet nie istnieje?

Mam inny serwer (nie instancję w chmurze, ale serwer fizyczny). Na tym serwerze zainstalowałem CentOS 6.7. Sprawdziłem adres IP nazwy hosta i zadziałało, mimo że nie było w tym nic specjalnego /etc/hosts.

Oto wynik 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

Odpowiedzi:


15

Oznacza to, że „system” (używam tego terminu w szerokim, ogólnym, dwuznacznym znaczeniu) nie wie, że nazwa ubuntu14-graphite odpowiada Twojemu hostowi i jego adresowi IP. (Fakt, że jest to nazwa hosta, nie wystarczy, aby tak się stało.) To prawie na pewno oznacza, że ​​nie masz wiersza ubuntu14-graphite w /etc/hostspliku i że nie ma go w usłudze nazewnictwa (np. DNS lub NIS). W związku z tym sposobem na to jest dodanie ubuntu14-graphite(i jego adresu IP) do twojego /etc/hosts. Jeśli używasz bardziej zaawansowanego (rozproszonego) systemu nazewnictwa, takiego jak DNS lub NIS (a może ActiveDirectory?), Najlepszym rozwiązaniem jest dodanie hosta do tej usługi.
_____________
† ...

Trwa debata na temat tego, jaki adres IP należy powiązać z nazwą hosta. Wszyscy zgadzają się, że powinien to być adres, który „działa” dla Twojego hosta; tzn. polecenia takie powinny się powieść. Niektóre osoby zalecają użycie adresu zwrotnego. Adresy sprzężenia zwrotnego mają zawsze postać 127 .BCD ; wspólne wartości to 127.0.0.1 i 127.0.1.1. Inne osoby zalecają używanie adresu LAN, który może wyglądać jak 192.168 .CD (ale może być prawie dowolny) - ale nie należy umieszczać dynamicznie przypisywanego adresu w pliku hostów (a jeśli używasz DHCP z DNS, to dynamicznie przypisane adresy należy automatycznie wpisywać do rekordów DNS). Użyj poleceń takich jak i, aby zobaczyć, które adresy są w użyciu.ping A.B.C.Difconfighostname -I


Dziękuję za odpowiedź. Zredagowałem swoje pytanie, ponieważ zauważyłem jeszcze jedną sprawę związaną z moim serwerem CentOS, który nie ma nic oprócz localhost 127.0.0.1, ale nadal mogę sprawdzić adres IP mojego hosta.
The One

Cóż, może nazwa i adres serwera CentOS są wpisane do systemu DNS (lub jakiejkolwiek innej używanej usługi nazewniczej).
G-Man mówi „Przywróć Monikę”

W systemie CentOS bind i bind-utils nie zostały zainstalowane. Więc jestem naprawdę zdezorientowany.
The One

@TheOne Ubuntu traktuje hostnameinaczej, że systemy oparte 127.0.1.1 ubuntu14-graphitena /etc/hostsRH..pisz w pliku i zaznacz .. uwaga, to 127.0.1.1nie jest 127.0.0.1(które możesz zachować tak czy inaczej tylko dla hosta lokalnego, podobnie jak 127.0.0.0/8blok sprzężenia zwrotnego możesz użyć dowolnego adresu, chociaż niektóre systemy mają predefiniowane adresy ograniczone )
heemayl

@ heemayl Więc umieszczając 127.0.1.1 grafikę ubuntu14 na / etc / hosts, a następnie sprawdź adres IP, że nie dostałem właściwego adresu IP. To nie ma sensu, prawda?
The One

1

Rzeczywistym sposobem sprawdzenia adresu IP urządzenia jest użycie ifconfigpolecenia.

Należy pamiętać, że w zależności od faktycznej konfiguracji chmury instancja serwera może nie być świadoma publicznego adresu IP i znać tylko adres IP sieci VLAN. Aby uzyskać szczegółowe informacje na ten temat, należy zapoznać się z dokumentacją usługodawcy.


Nie; ip a s. Zobacz serverfault.com/q/458628/89813 - ifconfig jest przestarzały w systemie Linux.
Przywróć Monikę - M. Schröder,

1

Dodaj myhostnamewpis do hostsusługi w /etc/nsswitch.conf.

Innymi słowy, zmień ten wiersz w /etc/nsswitch.conf:

hosts:      files dns

do tego:

hosts:      files dns myhostname

Tam, gdzie zwykle nazwy hostów są rozwiązywane za pomocą /etc/hostspliku i dns, nazwę hosta systemu można również rozwiązać, informując o tym przełącznik usługi nazw (tak jak zrobi to zmiana konfiguracji).

To by tłumaczyło, dlaczego nie widziałeś nic specjalnego w /etc/hostspliku w systemie, co mogłoby rozwiązać lokalną nazwę hosta.

Więcej informacji na temat myhostnameflagi znajduje się tutaj .


0

Moim zdaniem zależy to od wersji komendy hostname (pakiet net-tools).

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

  • przykład na „openSuse Leap 42.3”:
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

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

hostname -i - daje mi informacje o IPv6 i IPv4


Ten raport o błędzie dotyczy hostname -snie hostname -i. Nie jest to związane z wersjami hostname, jest związane z tym, czy hostnamenazwa hosta podana przez jest możliwa do rozwiązania.
Stephen Kitt,

-2

Przejdź do etc / hosts.save sprawdź tam swoją nazwę hosta. Następnie edytuj, /etc/hosts aby wpisać tam swoją nazwę hosta i nazwę hosta w hosts.save. Sprawdź także adres IP. Przykład:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
Ustawienie adresu IP hosta lokalnego /etc/hostsnie da im rzeczywistego adresu IP. Nie rozumiem również, dlaczego również patrzysz na /etc/hosts.saveto, która technika jest bardzo nieistotna.
Julie Pelletier,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.