Я получил ошибку «имя хоста: имя или служба неизвестны» при проверке IP имени хоста

Я получил ошибку «имя хоста: имя или служба неизвестны» при проверке IP имени хоста

Я использую Ubuntu 14.04 на облачном сервисе моей компании (мой экземпляр имеет эластичный IP). Я хочу проверить IP-адрес моего экземпляра, который я запускаю, с помощью командной строки, но это не сработало.

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

Я не понимаю, почему. 

Я попытался выполнить ping до ubuntu14-graphite, но он сказал:

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

решение1

Это означает, что «система» (я использую этот термин в широком, общем, неоднозначном смысле) не знает, что имя ubuntu14-graphite соответствует вашему хосту и его IP-адресу. (Тот факт, что это имя вашего хостаимянедостаточно, чтобы это произошло.) Это почти наверняка означает, что у вас нет строки для ubuntu14-graphite в вашем /etc/hostsфайле , и что ее нет в вашей службе именования (например, DNS или NIS). Следовательно, способ исправить это — добавить ubuntu14-graphite(и его IP-адрес) в ваш /etc/hosts. Если вы используете более сложную (распределенную) систему именования, такую ​​как DNS или NIS (или, может быть, ActiveDirectory?), окончательным решением будет добавить ваш хост в эту службу.
_____________
† ... и я вижу из вашего сообщения о вашем файле hosts, что это так.

Существуют некоторые дебаты по вопросу, какой IP-адрес следует связать с именем хоста. Все согласны, что это должен быть адрес, который «работает» для вашего хоста; т. е. команды типа должны быть успешными. Некоторые рекомендуют использовать адрес обратной связи. Адреса обратной связи всегда имеют вид 127ping A.B.C.D.BCD; общие значения 127.0.0.1 и 127.0.1.1. Другие рекомендуют использовать адрес локальной сети, который может выглядеть как 192.168.CD(но это может быть почти что угодно) — но вам не следует помещать динамически назначенный адрес в ваш файл hosts (и, если вы используете DHCP с DNS, то динамически назначенный адрес(а) должен быть автоматически введен в ваши записи DNS). Используйте команды вроде ifconfigи , hostname -I чтобы увидеть, какие адреса используются.

решение2

Фактический способ проверить IP-адрес машины — использовать команду ifconfig.

Обратите внимание, что в зависимости от фактической настройки облака экземпляр сервера может не знать публичный IP и знать только IP VLAN. Для получения подробной информации об этом вам необходимо обратиться к документации вашего провайдера.

решение3

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

Другими словами, измените эту строку в /etc/nsswitch.conf:

hosts:      files dns

к этому:

hosts:      files dns myhostname

Обычно имена хостов разрешаются с помощью /etc/hostsфайла и DNS, но имя хоста системы также можно разрешить, указав коммутатору службы имен сделать это (как это и будет сделано в этом изменении конфигурации).

Это объясняет, почему вы не увидели ничего особенного в /etc/hostsфайле в системе, по которому можно было бы определить локальное имя хоста.

Более подробная информация о myhostnameфлаге находится здесь:здесь.

решение4

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

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

Связанный контент