Recibí el error "nombre de host: nombre o servicio desconocido" al verificar la IP del nombre de host


13

Estoy ejecutando Ubuntu 14.04 en el servicio en la nube de mi empresa (mi instancia tiene IP elástica). Quiero verificar la dirección IP de mi instancia que estoy ejecutando por 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 por qué. 

Traté de hacer ping a ubuntu14-graphite pero decía:

unknown host ubuntu14-graphite.

¿Eso significa que mi host 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ó a pesar de que no había nada especial /etc/hosts.

Aquí está la salida 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

Respuestas:


15

Significa que "el sistema" (estoy usando 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 es el nombre de tu anfitrión no es suficiente para que esto suceda.) Esto es casi seguro que significa que usted no tiene una línea para ubuntu14-graphite en su /etc/hostsarchivo , 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 /etc/hosts. Si está utilizando un sistema de nombres más sofisticado (distribuido) como DNS o NIS (¿o tal vez ActiveDirectory?), La solución definitiva es agregar su host a ese servicio.
_____________
† ...

Existe cierto debate sobre la cuestión de qué dirección IP debe asociar con su nombre de host. Todos están de acuerdo en que debe ser una dirección que "funcione" para su host; es decir, comandos como deberían tener éxito. Algunas personas recomiendan usar una dirección de bucle invertido. Las direcciones de bucle invertido siempre tienen la forma 127 .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 .CDping A.B.C.D (pero puede ser casi cualquier cosa), pero no debe poner 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 en sus registros DNS automáticamente). Use comandos como ifconfigy hostname -I para ver qué direcciones están en uso.


Gracias por tu respuesta. Edité mi pregunta porque noté un caso más relacionado con mi servidor CentOS que no tiene nada más que 127.0.0.1 localhost pero todavía puedo verificar la IP de mi host.
El de

Bueno, tal vez el nombre y la dirección del servidor CentOS se ingresan en el sistema DNS (o cualquier servicio de nombres que esté en uso).
G-Man dice 'Reincorporar a Monica'

En el sistema CentOS, bind y bind-utils no estaban instalados. Así que estoy realmente confundido.
El de

@TheOne Ubuntu trata de manera hostnamediferente a los sistemas basados 127.0.1.1 ubuntu14-graphiteen RH ... ingrese en el /etc/hostsarchivo y verifique ... note, its 127.0.1.1, not 127.0.0.1(que puede conservar de todos modos solo para localhost, ya que 127.0.0.0/8es un bloque de bucle invertido, puede usar cualquier dirección, aunque algunos sistemas tienen direcciones restringidas predefinidas )
heemayl

@heemayl Entonces, colocando 127.0.1.1 ubuntu14-graphite en / etc / hosts y luego verificando la IP, no obtuve la IP correcta. Eso no tiene sentido, ¿verdad?
El de

1

La forma real de verificar la dirección IP de una máquina es mediante el ifconfigcomando.

Tenga en cuenta que, dependiendo de la configuración real de la nube, la instancia del servidor puede no conocer la IP pública y solo conocer una IP de VLAN. Para obtener detalles sobre esto, debe consultar la documentación de su proveedor.


No; ip a s. Consulte serverfault.com/q/458628/89813 : ifconfig está en desuso en Linux.
Restablecer Monica - M. Schröder

0

Añade el myhostname entrada al hostsservicio en /etc/nsswitch.conf.

En otras palabras, cambie esta línea en /etc/nsswitch.conf :

hosts:      files dns

a esto:

hosts:      files dns myhostname

Cuando generalmente los nombres de host se resuelven usando el /etc/hostsarchivo y el dns, el nombre de host del sistema también se puede resolver diciéndole al Switch de servicio de nombres que lo haga (como lo hará este cambio de configuración).

Esto explicaría por qué no viste nada especial sobre el /etc/hosts archivo en el sistema que pudiera resolver el nombre de host local.

Más información sobre la myhostnamebandera está aquí .


0

En mi opinión, depende de la versión del comando hostname (paquete de herramientas de red).

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

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

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

hostname -i - me da información sobre IPv6 e IPv4


Ese informe de error se trata hostname -s, no hostname -i. Esto no está relacionado con las versiones de hostname, está relacionado con si el nombre de host proporcionado por hostnamees resoluble.
Stephen Kitt

-2

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 hosts.save. Verifique también la dirección IP. Ejemplo:

127.0.0.1    ubuntu   
127.0.1.1    ubuntu.ubuntu-domain    ubuntu

1
Establecer una IP localhost /etc/hostsno les dará la dirección IP real. Tampoco veo por qué también lo estás viendo, /etc/hosts.saveque es un tecnicismo y muy irrelevante.
Julie Pelletier el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.