Я отримав помилку "ім'я хоста: ім'я або послуга невідомі" під час перевірки IP імені хоста


13

Я запускаю Ubuntu 14.04 на хмарній службі моєї компанії (мій екземпляр має еластичний IP). Я хочу перевірити IP-адресу свого екземпляра, яку я запускаю за командним рядком, але це не спрацювало.

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

Я не розумію причини. 

Я спробував пінг на ubuntu14-графіт, але він сказав:

unknown host ubuntu14-graphite.

Це означає, що мого господаря навіть не існує?

У мене є ще один сервер (не хмарний примірник, а фізичний сервер). На цьому сервері я встановив CentOS 6.7. Я перевірив IP-адресу імені хоста, і він працював, хоча в ньому не було нічого особливого /etc/hosts.

Ось результат 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

Відповіді:


15

Це означає, що "система" (я використовую цей термін у широкому, загальному, неоднозначному сенсі) не знає, що ім'я ubuntu14-graphite відповідає вашому хосту та його IP-адресі. (Той факт, що це ім'я вашого хоста, недостатньо для того, щоб це відбулося.) Це майже напевно означає, що у вас немає рядка ubuntu14-graphite у вашому /etc/hostsфайлі , і що це не у вашій службі іменування (наприклад, DNS або NIS). Отже, спосіб виправити це - додати ubuntu14-graphite(та його IP-адресу) до своєї /etc/hosts. Якщо ви використовуєте більш складну (розподілену) систему імен, наприклад DNS або NIS (або, можливо, ActiveDirectory?), Остаточне рішення - додати свого хоста до цієї послуги.
_____________
† ...

Існує певна дискусія з приводу питання, яку IP-адресу слід пов’язати з ім'ям вашого хоста. Усі погоджуються, що це повинна бути адреса, яка "працює" для вашого хоста; тобто команди на зразок повинні досягти успіху. Деякі люди рекомендують використовувати зворотну адресу. Адвокатські адреси завжди мають форму 127 .BCD ; загальні значення - 127.0.0.1 та 127.0.1.1. Інші люди рекомендують використовувати локальну адресу, яка може виглядати як 192.168 .CD (але це може бути майже все, що завгодно) - але не слід вводити динамічно призначену адресу у свій хост-файл (і, якщо ви використовуєте DHCP з DNS, то динамічно призначені адреси (адреси) повинні бути автоматично введені у ваші записи DNS). Використовуйте такі команди, як і щоб побачити, які адреси використовуються.ping A.B.C.Difconfighostname -I


Дякую за вашу відповідь. Я відредагував своє запитання, тому що помітив ще один випадок, пов’язаний із моїм сервером CentOS, у якого немає нічого, крім 127.0.0.1 localhost, але я все ще можу перевірити IP свого хоста.
Одного

Ну, можливо, ім’я та адреса сервера CentOS вводяться в систему DNS (або яку б службу імен не використовується).
G-Man каже: "Відновіть Моніку"

У системі CentOS утиліти bind та bind не були встановлені. Тож я справді розгублений.
Одного

@TheOne Ubuntu трактує hostnameінакше, ніж системи 127.0.1.1 ubuntu14-graphiteна базі /etc/hostsRH..введіть у файл і перевірте .. примітка, його 127.0.1.1, ні 127.0.0.1(що ви можете зберегти в будь-якому випадку лише для localhost, так як 127.0.0.0/8блоком петлі ви можете використовувати будь-яку адресу, хоча деякі системи мають заздалегідь визначені обмежені адреси )
heemayl

@heemayl Отже, поставивши 127.0.1.1 ubuntu14-графіт на / etc / hosts, тоді перевірте IP, я не отримав потрібний IP. Це не має сенсу, правда?
Одного

1

Фактичний спосіб перевірити IP-адресу машини - за допомогою ifconfigкоманди.

Зауважте, що залежно від фактичної настройки хмари, екземпляр сервера може не знати загальнодоступних IP-адрес і знає лише IP-адресу VLAN. Для детальної інформації про це потрібно звернутися до документації вашого постачальника.


Ніп; ip a s. Див. Serverfault.com/q/458628/89813 - ifconfig застарілий у Linux.
Відновіть Моніку - М. Шредер

1

Додайте myhostnameзапис до hostsслужби в /etc/nsswitch.conf.

Іншими словами, змініть цей рядок на /etc/nsswitch.conf:

hosts:      files dns

до цього:

hosts:      files dns myhostname

Там, де зазвичай імена хостів вирішуються за допомогою /etc/hostsфайлу та dns, ім'я хоста системи можна також вирішити, повідомивши про це комутатор служб імен (як це змінить конфігурація).

Це пояснило б, чому ви не бачили нічого особливого у /etc/hostsфайлі в системі, який би міг вирішити локальне ім'я хоста.

Більше інформації про myhostnameпрапор тут .


0

На мою думку, це залежить від версії команди хоста (пакет net-tools).

Дивіться: https://bugzilla.redhat.com/show_bug.cgi?id=319981

  • приклад на "openSuse Leap 42.3":
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

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

hostname -i - дає мені інформацію про IPv6 та IPv4


Цей звіт про помилку складається hostname -s, ні hostname -i. Це не пов’язано з версіями hostname, воно пов’язане з тим, чи hostnameможе вирішуватись ім'я хоста, яке дано користувачем .
Стівен Кітт

-2

Перейдіть на etc / hosts.save, щоб там перевірити своє ім'я хоста. А потім відредагуйте, /etc/hosts щоб там записати своє ім'я хоста та ім'я хоста hosts.save. Також перевірте IP-адресу. Приклад:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
Встановлення localhost IP в /etc/hostsне дасть їм фактичної IP-адреси. Я також не розумію, чому ви також дивитесь, /etc/hosts.saveщо є технічністю і дуже не має значення.
Джулі Пелтьє,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.