¿Cómo configurar el nombre de host completo en CentOS 7.0?


19

¿Cómo configuro el nombre de host completo en CentOS 7.0?

He visto algunas publicaciones en línea, por ejemplo, usando:

$ sudo hostnamectl set-hostname nodename.domainname

Sin embargo, ejecutar domainname no devuelve nada:

$ domainname
(none)

También:

$ hostname
nodename.domainname

Sin embargo,

$ hostname -f
hostname: Name or service not known
$ hostname -d
hostname: Name or service not known

Algunos resultados de depuración:

$ cat /etc/hostname
nodename.domainname

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns

Respuestas:


30

Para configurar el nombre de host , use hostnamectl, pero solo con el nombre de host, de esta manera:

hostnamectl set-hostname nodename


Para configurar el archivo de edición de nombre de dominio (DNS)/etc/hosts y asegurarse de que:

  1. Hay una linea <machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>alli
  2. NO hay otras líneas con <some IP> <hostname>, y esto incluye líneas con 127.0.0.1y ::1direcciones (IPv6).

Tenga en cuenta que a menos que esté utilizando NIS, (none)es la salida correcta al ejecutar el domainnamecomando.

Para verificar si su nombre de dominio DNS está configurado correctamente, use el dnsdomainnamecomando y verifique la salida de hostnamevs hostname -f(FQDN).


Dominio NIS vs. DNS

Este problema me confundió cuando lo encontré por primera vez. Parece que el domainnamecomando es anterior a la popularidad de Internet. En lugar del nombre de dominio DNS, muestra o establece el nombre de dominio NIS (Servicio de información de red) del sistema, también conocido como nombre de dominio YP (Páginas amarillas) (un grupo de computadoras que tienen servicios proporcionados por un servidor NIS maestro). Este comando simplemente muestra el nombre devuelto por la getdomainname(2)función de biblioteca estándar. ( nisdomainnamey ypdomainnameson nombres alternativos para este comando).

Mostrar el nombre de dominio FQDN o DNS

Para verificar el nombre de dominio DNS (Internet), debe ejecutar el dnsdomainnamecomando o hostnamecon las -d, --domainopciones. (Tenga en cuenta que el dnsdomainnamecomando no se puede usar para configurar el nombre de dominio DNS, solo se usa para mostrarlo).

Para mostrar el FQDN (Nombre de dominio completo) del sistema, ejecute hostnamecon las -f, --fqdn, --longopciones (del mismo modo, este comando no se puede usar para configurar la parte del nombre de dominio).

Los comandos anteriores usan el sistema de resolución del sistema (implementado por la gethostbyname(3)función de la biblioteca estándar, según lo especificado por POSIX) para determinar el nombre de dominio DNS y el FQDN.

Resolución de nombre

En sistemas operativos modernos como RHEL 7, la hostsentrada /etc/nsswitch.confse usa para resolver nombres de host. En su máquina CentOS 7, esta línea está configurada como (predeterminada para CentOS 7):

hosts:      files dns

Esto significa que cuando las funciones de resolución buscan nombres de host o direcciones IP, primero verifican si hay una entrada en el /etc/hosts archivo y luego prueban los servidores DNS que figuran en la lista /etc/resolv.conf.

Cuando se ejecuta hostname -fpara obtener el FQDN de un host, las funciones de resolución intentan obtener el FQDN para el nombre de host del sistema. Si el host no figura en el /etc/hostsarchivo o en el servidor DNS relevante, el intento falla y lo hostnameinforma Name or service not known.

Cuando hostname -dse ejecuta para obtener el nombre de dominio, se llevan a cabo las mismas operaciones, y la parte del nombre de dominio se determina quitando la parte del nombre de host y el primer punto del FQDN.

Configurar el nombre de dominio

1. Actualizar el servidor de nombres DNS relevante

En mi caso, ya había agregado una entrada para mi nueva máquina CentOS 7 en el servidor DNS para mi LAN local, por lo que cuando no se encontró el FQDN en el /etc/hostsarchivo cuando ejecuté hostnamecon la opción -do -f, los servicios DNS locales pudieron Resuelva completamente el FQDN para mi nuevo nombre de host.

2. Usa el /etc/hostsarchivo

Si el servidor DNS no se ha configurado, el nombre de dominio completo se puede especificar en el /etc/hostsarchivo. La forma más común de hacer esto es especificar la dirección IP principal del sistema seguido por su nombre completo y su nombre corto. P.ej,

172.22.0.9  nodename.domainname nodename

Extracto de la hostnamepágina del manual

No se puede cambiar el nombre completo con hostnameo dnsdomainname.

El método recomendado para establecer el FQDN es hacer que el nombre del servidor sea un alias para el nombre completo utilizando /etc/hosts,DNS o NIS. Por ejemplo, si el nombre de host era "ursula", uno podría tener una línea en la /etc/hostsque se lee:

27.0.1.1    ursula.example.com ursula

Técnicamente: el FQDN es el nombre que devuelve getaddrinfo (3) para el nombre de host que devuelve gethostname (2). El nombre de dominio DNS es la parte posterior al primer punto.

Por lo tanto, depende de la configuración del solucionador (generalmente en /etc/host.conf) cómo puede cambiarlo. Por lo general, el archivo de hosts se analiza antes de DNS o NIS, por lo que es más común de cambiar el nombre de dominio completo en /etc/hosts.


Gracias por tu respuesta. He actualizado la pregunta; desafortunadamente, el hostname -fcomando no funciona en mi CentOS vm.
Chris Snow

@SHC ¿Puede editar su pregunta para incluir también el contenido /etc/hostnamey la salida de grep ^hosts: /etc/nsswitch.conf? No sé mucho acerca de Administrador de Red, pero también me di cuenta de que mi /etc/NetworkManager/NetworkManager.confcontiene una línea en su [keyfile]sección: hostname=<nodename>.
Anthony G - justicia para Monica

1
@SHC Desde entonces, he estado investigando el tema, y se han revisado radicalmente mi respuesta; ahora debe hacer frente a su pregunta más integral.
Anthony G - justicia para Monica

El ledo a esta respuesta es inconsistente con el cuerpo. hostnamectl set-hostname nodename.domainnameno no establecer el nombre de dominio DNS (y no es que se establece el nombre de dominio NIS tampoco).
sourcejedi

@sourcejedi No tengo tiempo en este momento, pero intentaré aclarar mi respuesta cuando tenga la oportunidad.
Anthony G - justicia para Monica

1

En Centos7 usando nmtui para establecer el nombre de host y la disponibilidad nodename.domainname / formato FQDN está dando resultados consistentes. hostname [d / f / s] todos proporcionan resultados esperados correctos. No se almacena en /etc/resolv.conf OR / etc / hosts. Pero el FQDN se escribe en / etc / hostname como una entrada de línea única.


0

Para mí, el archivo / etc / hostname contiene el nombre completo en lugar del nombre de host (por ejemplo, nombre de host en lugar de hostname.example.com). Una vez que eliminé el dominio del nombre de host en / etc / hostname, el comando 'hostname -f' funcionó normalmente.

Creo que esto se introdujo cuando instalé la VM CentOS 7. Debería haber ingresado solo el nombre de host, no el nombre de dominio completo.

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.