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
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
- Nie;
ip a s
. Zobacz serverfault.com/q/458628/89813 – ifconfig jest przestarzały w Linuksie.
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 niehostname -i
. Nie jest to związane z wersjamihostname
, ale z tym, czy nazwa hosta podana przezhostname
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 poleceniutelnet
, 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.
hostname
inaczej niż systemy oparte na RH..put127.0.1.1 ubuntu14-graphite
w pliku/etc/hosts
i zaznacz .. uwaga, jego127.0.1.1
, a nie127.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)