Korzystam z Ubuntu 14.04 w usłudze chmury mojej firmy (moja instancja ma elastyczny adres IP). Chcę sprawdzić adres IP mojej instancji, z której korzystam, za pomocą wiersza poleceń, ale to nie działa.

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

Nie rozumiem powód dlaczego.

Próbowałem wysłać ping do ubuntu14-grafitu, ale powiedział:

unknown host ubuntu14-graphite. 

Czy to oznacza, że mój host nie nawet 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 w /etc/hosts nie było nic specjalnego.

Oto wynik działania 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 

Odpowiedź

Oznacza to, że „ system „(używam tego terminu w szerokim, ogólnym, niejednoznacznym znaczeniu)” nie wie, że nazwa ubuntu14-graphite odpowiada Twojemu hostowi i jego adresowi IP. (Fakt, że jest to nazwa twojego hosta, nie wystarczy, aby tak się stało .) To prawie na pewno oznacza, że nie masz linii dla ubuntu14-graphite w swoim pliku /etc/hosts i że nie ma go w Twojej usłudze nazewniczej (np. DNS lub NIS). Dlatego sposobem na rozwiązanie tego problemu jest dodanie ubuntu14-graphite (i jego adresu IP) do /etc/hosts. Jeśli używasz bardziej złożonego (rozproszonego) systemu nazewnictwa, takiego jak DNS lub NIS (a może ActiveDirectory?), Najlepszym rozwiązaniem jest dodanie swojego hosta do tej usługi.
_____________
† … i widzę z twojego posta w pliku hosts, że tak jest.

Trwa debata na temat tego, jaki adres IP powinieneś powiązać z nazwą twojego hosta . Wszyscy zgadzają się, że powinien to być adres, który „działa” dla twojego hosta, tj. Polecenia takie jak ping A.B.C.D powinny się powieść. Niektórzy zalecają używanie adresu sprzężenia zwrotnego. Adresy zwrotne są zawsze formularz 127 .BCD ; typowe 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 to być prawie wszystko) – ale nie powinieneś umieszczać dynamicznie przypisywanego adresu w swoim pliku hosts (a jeśli używasz DHCP z DNS, to dynamicznie przypisywany adres (y) powinny być wprowadzone do twoich rekordów DNS automatycznie). Użyj poleceń takich jak ifconfig i hostname -I, aby zobaczyć, jakie adresy są używane.

Komentarze

  • Dziękuję za odpowiedź. Zmieniłem moje pytanie, ponieważ zauważyłem jeszcze jeden przypadek związany z moim serwerem CentOS, który nie ' nie ma nic innego niż 127.0.0.1 localhost, ale nadal mogę sprawdzić mój host ' IP.
  • Cóż, może nazwa i adres serwera CentOS są wprowadzone do systemu DNS (lub jakiejkolwiek usługi nazw, która jest używana).
  • W systemie CentOS bind i bind-utils nie zostały zainstalowane. Więc ' jestem naprawdę zdezorientowany.
  • @TheOne Ubuntu traktuje hostname inaczej niż systemy oparte na RH..put 127.0.1.1 ubuntu14-graphite w pliku /etc/hosts i zaznacz .. uwaga, jego 127.0.1.1, a nie 127.0.0.1 (które i tak możesz zachować tylko dla lokalnego hosta, ponieważ 127.0.0.0/8 jest blokiem zwrotnym, możesz użyć dowolnego adresu, chociaż niektóre systemy mają predefiniowane adresy ograniczone)
  • @heemayl Tak więc, umieszczając 127.0.1.1 ubuntu14-graphite w / etc / hosts, a następnie sprawdź adres IP i nie ' otrzymałem właściwego adresu IP. To nie ' nie ma sensu, prawda?

Odpowiedź

Rzeczywistym sposobem sprawdzenia adresu IP komputera jest użycie polecenia ifconfig.

Należy pamiętać, że w zależności od rzeczywistej konfiguracji chmury instancja serwera może nie znasz publicznego adresu IP i znasz tylko adres IP sieci VLAN. Aby uzyskać szczegółowe informacje, zapoznaj się z dokumentacją swojego dostawcy.

Komentarze

Odpowiedź

Dodaj wpis myhostname do usługi hosts w /etc/nsswitch.conf.

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

hosts: files dns 

na:

hosts: files dns myhostname 

Tam, gdzie zwykle nazwy hostów są rozpoznawane za pomocą pliku /etc/hosts i dns, można również podać nazwę hosta systemu rozwiązano, nakazując przełącznik usługi nazw, aby to zrobił (tak jak to zrobi ta zmiana konfiguracji).

To by wyjaśniało, dlaczego nie widzisz nic specjalnego w /etc/hosts w systemie, którego lokalną nazwę hosta można rozwiązać.

Więcej informacji na temat flagi myhostname to tutaj .

Odpowiedź

Moim zdaniem zależy to od wersji polecenia 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

Komentarze

  • Ten raport o błędzie dotyczy hostname -s, a nie hostname -i. Nie jest to związane z wersjami hostname, ale z tym, czy nazwa hosta podana przez hostname jest rozpoznawalna.

Odpowiedź

Jeśli problem nadal nie został rozwiązany pomimo zastosowania powyższych obejść:

Spróbuj usunąć http:// część z adresu URL w poleceniu telnet, jak pokazano poniżej:

Zamiast używać:

telnet http://website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80 

Spróbuj:

telnet website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80 

Odpowiedz

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

127.0.0.1 ubuntu 127.0.1.1 ubuntu.ubuntu-domain ubuntu 

Komentarze

  • Ustawianie adresu IP lokalnego hosta w /etc/hosts nie poda im rzeczywistego adresu IP. Nie rozumiem też, dlaczego ' patrzysz także na /etc/hosts.save, co jest kwestią techniczną i bardzo nieistotne.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *