web-dev-qa-db-fra.com

J'ai reçu l'erreur "nom d'hôte: nom ou service inconnu" lors de la vérification de l'IP du nom d'hôte

J'utilise Ubuntu 14.04 sur le service cloud de mon entreprise (mon instance a une IP élastique). Je veux vérifier l'adresse IP de mon instance que j'exécute par ligne de commande, mais cela n'a pas fonctionné.

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

Je ne comprends pas pourquoi.

J'ai essayé de faire un ping vers ubuntu14-graphite mais il a dit:

unknown Host ubuntu14-graphite.

Cela signifie-t-il que mon hôte n'existe même pas?

J'ai un autre serveur (pas une instance cloud mais un serveur physique). Sur ce serveur, j'ai installé CentOS6.7. J'ai vérifié l'adresse IP du nom d'hôte et cela a fonctionné même s'il n'y avait rien de spécial dans /etc/hosts.

Voici la sortie de 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
13
The One

Cela signifie que "le système" (j'utilise ce terme dans un sens large, général et ambigu) ne sait pas que le nom ubuntu14-graphite correspond à votre hôte et à son adresse IP. (Le fait est le nom de votre hôte ne suffit pas pour que cela se produise.) Cela signifie presque sûrement que vous n'ont pas de ligne pour ubuntu14-graphite dans ton /etc/hosts fichieret qu'il ne fait pas partie de votre service de nommage (par exemple, DNS ou NIS). Par conséquent, un moyen de le corriger consiste à ajouter ubuntu14-graphite (et son adresse IP) à votre /etc/hosts. Si vous utilisez un système de nommage (distribué) plus sophistiqué tel que DNS ou NIS (ou peut-être ActiveDirectory?), La solution ultime consiste à ajouter votre hôte à ce service.
_____________
† ... et je vois dans votre post de votre fichier d'hôtes que c'est le cas.

Il y a un débat sur la question de l'adresse IP que vous devez associer à votre nom d'hôte. Tout le monde convient que ce devrait être une adresse qui "fonctionne" pour votre hôte; c'est-à-dire des commandes comme ping A.B.C.D devrait réussir. Certaines personnes recommandent d'utiliser une adresse de bouclage. Les adresses de bouclage sont toujours de la forme 127.B.C.D; les valeurs courantes sont 127.0.0.1 et 127.0.1.1. D'autres personnes recommandent d'utiliser une adresse LAN, qui pourrait ressembler à 192.168.CD (mais cela peut être presque n'importe quoi) - mais vous ne devez pas mettre une adresse attribuée dynamiquement dans votre fichier d'hôtes (et, si vous utilisez DHCP avec DNS, alors la ou les adresses attribuées dynamiquement doivent être entrées automatiquement dans vos enregistrements DNS ). Utilisez des commandes comme ifconfig et hostname -I pour voir quelles adresses sont utilisées.

La façon réelle de vérifier l'adresse IP d'une machine est d'utiliser la commande ifconfig.

Notez que, selon la configuration réelle du cloud, l'instance de serveur peut ne pas connaître l'IP publique et ne connaître qu'une IP VLAN. Pour plus de détails à ce sujet, vous devez vous référer à la documentation de votre fournisseur.

1
Julie Pelletier

Ajoutez l'entrée myhostname au service hosts dans /etc/nsswitch.conf.

En d'autres termes, modifiez cette ligne dans /etc/nsswitch.conf:

hosts:      files dns

pour ça:

hosts:      files dns myhostname

Où les noms d'hôtes sont généralement résolus à l'aide de /etc/hosts fichier et DNS, le nom d'hôte du système peut également être résolu en demandant au Name Service Switch de le faire (comme le fera cette modification de configuration).

Cela expliquerait pourquoi vous n'avez rien vu de spécial sur le /etc/hosts fichier sur le système que vous pouvez résoudre le nom d'hôte local.

Plus d'informations sur le drapeau myhostname sont ici .

1
Kodey Converse

À mon avis, cela dépend de la version de la commande hostname (package net-tools).

Voir: https://bugzilla.redhat.com/show_bug.cgi?id=319981

  • exemple sur "openSuse Leap 42.3":
    # hostname -V
    net-tools 1.60
    hostname 1.100 (2001-04-14)

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

hostname -i - me donne des informations sur IPv6 et IPv4

0
Bronek Dzikus