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
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
fichier†et 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.
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 .
À 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
# hostname -V
net-tools 1.60
hostname 1.100 (2001-04-14)
# hostname -i
hostname: Name or service not known
$ hostname -V
hostname 3.18
hostname -i
- me donne des informations sur IPv6 et IPv4