Я получил сообщение об ошибке «имя хоста: имя или служба неизвестна» при проверке 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

G-Man говорит: «Восстанови Монику»
источник
Спасибо за ваш ответ. Я отредактировал свой вопрос, потому что заметил еще один случай, связанный с моим сервером CentOS, на котором нет ничего, кроме 127.0.0.1 localhost, но я все еще могу проверить IP своего хоста.
The One
Ну, может быть, имя и адрес сервера CentOS введены в систему DNS (или любую другую службу имен, которая используется).
G-Man говорит: «Восстановите Монику»
В системе CentOS bind и bind-utils не были установлены. Так что я действительно запутался.
The One
@TheOne Ubuntu по- hostnameразному относится к системам , основанным на RH .. введите 127.0.1.1 ubuntu14-graphiteв /etc/hostsфайл и проверьте..note, его 127.0.1.1, not 127.0.0.1(который вы можете сохранить в любом случае только для localhost, так как в качестве 127.0.0.0/8обратной петли вы можете использовать любой адрес, хотя некоторые системы имеют предопределенные ограниченные адреса )
Heemayl
@heemayl Итак, поместив 127.0.1.1 ubuntu14-graphite в / etc / hosts, затем проверьте IP, я не получил правильный IP. Это не имеет смысла, верно?
The One
1

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

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

Джули Пеллетье
источник
Нет; ip a s, См. Serverfault.com/q/458628/89813 - ifconfig устарела в Linux.
Восстановить Монику - М. Шредер
0

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

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

hosts:      files dns

к этому:

hosts:      files dns myhostname

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

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

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

Кодей Конверс
источник
0

На мой взгляд, это зависит от версии команды hostname (пакет 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
SSS
источник
1
Установка локального /etc/hostsIP-адреса не даст им фактический IP-адрес. Я также не понимаю, почему вы также смотрите, /etc/hosts.saveчто является техническим и очень неуместным.
Джули Пеллетье