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

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

¿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 el nombre de dominio 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

Respuesta1

Para configurar elnombre de host haceruse hostnamectl, pero solo con el nombre de host, así:

hostnamectl set-hostname nodename

Para configurar el(DNS) nombre de dominioedite /etc/hostsel archivo y asegúrese de que:

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

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

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

Dominio NIS frente a 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 configura el nombre del sistema.NIS (Servicio de información de red)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 comprobar elDNS(Internet) nombre de dominio, debes 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 elFQDN (nombre de dominio completo)del sistema, ejecute hostnamecon las -f, --fqdn, --longopciones (del mismo modo, este comando no se puede utilizar para configurar la parte del nombre de dominio).

Los comandos anteriores utilizan el solucionador 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 in /etc/nsswitch.confse utiliza 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 archivoy luego prueba elServidores DNSque se enumeran en /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 aparece en el /etc/hostsarchivo o en el servidor DNS correspondiente, el intento falla e hostnameinforma que 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 eliminando la parte del nombre de host y el primer punto del FQDN.

Configurar el nombre de dominio

  1. Actualice 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 de mi LAN local, de modo que cuando no se encontró el FQDN en el /etc/hostsarchivo cuando ejecuté hostnamela opción -do -f, los servicios DNS locales pudieron Resuelva completamente el FQDN de mi nuevo nombre de host.

  2. usa el /etc/hostsarchivo

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

     172.22.0.9  nodename.domainname nodename
    

Extracto dehostnamepágina de manual

No puede cambiar el FQDN con hostnameo dnsdomainname.

El método recomendado para configurar el FQDN es hacer que el nombre de host sea un alias para el nombre completo mediante /etc/hosts,DNS o NIS. Por ejemplo, si el nombre de host fuera "ursula", podría tener una línea /etc/hostsque diga:

127.0.1.1    ursula.example.com ursula

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

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

Respuesta2

En Centos7, el uso de nmtui para configurar el nombre de host y proporcionar el formato nodename.domainname/FQDN da resultados consistentes. nombre de host [d/f/s] todos proporcionan los resultados esperados correctos. No se almacena en /etc/resolv.conf O /etc/hosts. Pero el FQDN está escrito en /etc/hostname como una entrada de una sola línea.

Respuesta3

Para mí, el archivo /etc/hostname contenía el FQDN en lugar del nombre de host (por ejemplo, nombre de host en lugar de nombre de host.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 máquina virtual CentOS 7. Debería haber ingresado solo el nombre de host, no el nombre de dominio completo.

Respuesta4

Problema similar al OP (RHEL7) y lo resolvió eliminando un espacio final del nombre de host corto que figura en el /etc/hostnamearchivo. Seguido por systemctl restart systemd-hostnamed. Ahora muestra FQDN con hostname -fcomando.

información relacionada