
Estoy ejecutando Ubuntu 14.04 en el servicio en la nube de mi empresa (mi instancia tiene una IP elástica). Quiero verificar la dirección IP de mi instancia que estoy ejecutando mediante la línea de comando, pero no funcionó.
root@ubuntu14-graphite:~# hostname
ubuntu14-graphite
root@ubuntu14-graphite:~# hostname -i
hostname: Name or service not known
No entiendo el motivo.
Intenté hacer ping a ubuntu14-graphite pero decía:
unknown host ubuntu14-graphite.
¿Eso significa que mi anfitrión ni siquiera existe?
Tengo otro servidor (no una instancia en la nube sino un servidor físico). En este servidor instalé CentOS 6.7. Revisé la IP del nombre de host y funcionó aunque no había nada especial en /etc/hosts
.
Aquí está el resultado 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
Respuesta1
Significa que "el sistema" (uso ese término en un sentido amplio, general y ambiguo) no sabe que el nombre ubuntu14-graphite
corresponde a su host y su dirección IP. (El hecho de que sea así es de tu anfitrión).nombreno es suficiente para que esto suceda.) Esto casi seguramente significa que no tiene una línea for ubuntu14-graphite
en su /etc/hosts
archivo † y que no está en su servicio de nombres (por ejemplo, DNS o NIS). En consecuencia, una forma de solucionarlo es agregar ubuntu14-graphite
(y su dirección IP) a su archivo /etc/hosts
. Si está utilizando un sistema de nombres (distribuido) más sofisticado como DNS o NIS (¿o tal vez ActiveDirectory?), la solución definitiva es agregar su host a ese servicio.
_____________
† ... y veo en su publicación de su archivo de hosts que este es el caso.
Existe cierto debate sobre la cuestión de qué dirección IP debe asociar con su nombre de host. Todo el mundo está de acuerdo en que debe ser una dirección que "funcione" para su anfitrión; es decir, comandos como deberían tener éxito. Algunas personas recomiendan utilizar una dirección de bucle invertido. Las direcciones de loopback siempre tienen la forma 127.ping A.B.C.D
.BCD; Los valores comunes son 127.0.0.1 y 127.0.1.1. Otras personas recomiendan usar una dirección LAN, que podría verse como 192.168.CD(pero puede ser casi cualquier cosa), pero no debe colocar una dirección asignada dinámicamente en su archivo de hosts (y, si está usando DHCP con DNS, entonces las direcciones asignadas dinámicamente deben ingresarse automáticamente en sus registros DNS). ). Utilice comandos como ifconfig
y hostname -I
para ver qué direcciones están en uso.
Respuesta2
La forma real de verificar la dirección IP de una máquina es mediante el ifconfig
comando.
Tenga en cuenta que, dependiendo de la configuración real de la nube, es posible que la instancia del servidor no conozca la IP pública y solo conozca una IP de VLAN. Para obtener detalles sobre esto, debe consultar la documentación de su proveedor.
Respuesta3
Agregue la myhostname
entrada al hosts
servicio en /etc/nsswitch.conf
.
En otras palabras, cambie esta línea en /etc/nsswitch.conf
:
hosts: files dns
a esto:
hosts: files dns myhostname
Mientras que normalmente los nombres de host se resuelven usando el /etc/hosts
archivo y dns, el nombre de host del sistema también se puede resolver diciéndole al conmutador de servicio de nombres que lo haga (como lo hará este cambio de configuración).
Esto explicaría por qué no vio nada especial sobre el /etc/hosts
archivo en el sistema que pudiera resolver con el nombre de host local.
Más información sobre la myhostname
bandera esaquí.
Respuesta4
Vaya a etc/hosts.save y verifique su nombre de host allí. Y luego edite /etc/hosts
para escribir allí su nombre de host y el nombre de host en formato hosts.save
. También verifique la dirección IP. Ejemplo:
127.0.0.1 ubuntu
127.0.1.1 ubuntu.ubuntu-domain ubuntu