
¿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/hosts
el archivo y asegúrese de que:
- Hay una línea
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
allí - NO hay otras líneas con
<some IP> <hostname>
y esto incluye líneas con direcciones127.0.0.1
y::1
(IPv6).
Tenga en cuenta que, a menos que esté utilizando NIS, (none)
es el resultado correcto al ejecutar el domainname
comando.
Para verificar si su nombre de dominio DNS está configurado correctamente, use dnsdomainname
el comando y verifique la salida de hostname
vs hostname -f
(FQDN).
Dominio NIS frente a DNS
Este problema me confundió cuando lo encontré por primera vez. Parece que el domainname
comando 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. ( nisdomainname
y ypdomainname
son nombres alternativos para este comando).
Mostrar el nombre de dominio FQDN o DNS
para comprobar elDNS(Internet) nombre de dominio, debes ejecutar el dnsdomainname
comando o hostname
con las -d, --domain
opciones. (Tenga en cuenta que el dnsdomainname
comando 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 hostname
con las -f, --fqdn, --long
opciones (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 hosts
entrada in /etc/nsswitch.conf
se 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 -f
para 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/hosts
archivo o en el servidor DNS correspondiente, el intento falla e hostname
informa que Name or service not known
.
Cuando hostname -d
se 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
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/hosts
archivo cuando ejecutéhostname
la opción-d
o-f
, los servicios DNS locales pudieron Resuelva completamente el FQDN de mi nuevo nombre de host.usa el
/etc/hosts
archivoSi el servidor DNS no se ha configurado, se puede especificar el nombre de dominio completo en el
/etc/hosts
archivo. 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 dehostname
página de manual
No puede cambiar el FQDN con
hostname
odnsdomainname
.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/hosts
que 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/hostname
archivo. Seguido por systemctl restart systemd-hostnamed
. Ahora muestra FQDN con hostname -f
comando.