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

13

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.

Est-ce à dire 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é CentOS 6.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
Celui
la source

Réponses:

15

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 que ce soit le nom de votre hôte ne suffit pas pour que cela se produise.) Cela signifie presque sûrement que vous n'avez pas de ligne pour ubuntu14-graphite dans votre /etc/hostsfichier , et qu'il n'est pas dans 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.
_____________
† ...

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 que les commandes comme devraient réussir. Certaines personnes recommandent d'utiliser une adresse de bouclage. Les adresses de bouclage sont toujours de la forme 127 .BCD ; 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 les adresses attribuées dynamiquement doivent être entrées automatiquement dans vos enregistrements DNS). Utilisez des commandes comme et pour voir quelles adresses sont utilisées.ping A.B.C.Difconfighostname -I

G-Man dit «Réintègre Monica»
la source
Merci votre votre réponse. J'ai modifié ma question parce que j'ai remarqué un autre cas lié à mon serveur CentOS qui n'a rien d'autre que l'hôte local 127.0.0.1 mais je peux toujours vérifier l'IP de mon hôte.
The One
Eh bien, peut-être que le nom et l'adresse du serveur CentOS sont entrés dans le système DNS (ou quel que soit le service de noms utilisé).
G-Man dit `` Réintègre Monica ''
Dans le système CentOS, le bind et les bind-utils n'étaient pas installés. Je suis donc vraiment confus.
The One
@TheOne Ubuntu traite hostnamedifféremment que les systèmes basés sur RH..mettez 127.0.1.1 ubuntu14-graphitedans le /etc/hostsfichier et vérifiez..notez, ce 127.0.1.1n'est pas le cas 127.0.0.1(que vous pouvez conserver de toute façon juste pour localhost, tout comme le 127.0.0.0/8bloc de bouclage, vous pouvez utiliser n'importe quelle adresse bien que certains systèmes aient des adresses restreintes prédéfinies )
heemayl
@heemayl Donc, en mettant 127.0.1.1 ubuntu14-graphite sur / etc / hosts puis vérifiez l'IP je n'ai pas obtenu la bonne IP. Cela n'a pas de sens, non?
The One
1

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

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

Julie Pelletier
la source
Nan; ip a s. Voir serverfault.com/q/458628/89813 - ifconfig est déconseillé sous Linux.
Rétablir Monica - M. Schröder
0

Ajoutez l' myhostnameentrée au hostsservice dans /etc/nsswitch.conf.

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

hosts:      files dns

pour ça:

hosts:      files dns myhostname

Lorsque les noms d'hôte sont généralement résolus à l'aide du /etc/hostsfichier et du DNS, le nom d'hôte du système peut également être résolu en demandant au commutateur de service de noms de le faire (comme le fera cette modification de configuration).

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

Plus d'informations sur le myhostnamedrapeau sont ici .

Kodey Converse
la source
0

À 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

Bronek Dzikus
la source
Ce rapport de bogue concerne hostname -s, non hostname -i. Ce n'est pas lié aux versions de hostname, c'est lié à la possibilité de résoudre le nom d'hôte donné par hostname.
Stephen Kitt
-2

Allez dans etc / hosts.save, vérifiez votre nom d'hôte là-bas. Ensuite, modifiez /etc/hosts pour y écrire votre nom d'hôte et le nom d'hôte hosts.save. Vérifiez également l'adresse IP. Exemple:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu
SSS
la source
1
La définition d'une adresse IP hôte local /etc/hostsne leur donnera pas l'adresse IP réelle. Je ne vois pas non plus pourquoi vous cherchez également /etc/hosts.savece qui est une technicité et très hors de propos.
Julie Pelletier