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:
- Hay una linea
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
alli
- NO hay otras líneas con
<some IP> <hostname>
, y esto incluye líneas con 127.0.0.1
y ::1
direcciones (IPv6).
Tenga en cuenta que a menos que esté utilizando NIS, (none)
es la salida correcta al ejecutar el domainname
comando.
Para verificar si su nombre de dominio DNS está configurado correctamente, use el dnsdomainname
comando y verifique la salida de hostname
vs hostname -f
(FQDN).
Dominio NIS vs. 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 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. ( nisdomainname
y ypdomainname
son nombres alternativos para este comando).
Mostrar el nombre de dominio FQDN o DNS
Para verificar el nombre de dominio DNS (Internet), debe 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 el FQDN (Nombre de dominio completo) del sistema, ejecute hostname
con las -f, --fqdn, --long
opciones (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 hosts
entrada /etc/nsswitch.conf
se 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 -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 figura en el /etc/hosts
archivo o en el servidor DNS relevante, el intento falla y lo hostname
informa 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 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/hosts
archivo cuando ejecuté hostname
con la opción -d
o -f
, los servicios DNS locales pudieron Resuelva completamente el FQDN para mi nuevo nombre de host.
2. Usa el /etc/hosts
archivo
Si el servidor DNS no se ha configurado, el nombre de dominio completo se puede especificar en el /etc/hosts
archivo. 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 hostname
página del manual
No se puede cambiar el nombre completo con hostname
o 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/hosts
que 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
.
hostname -f
comando no funciona en mi CentOS vm./etc/hostname
y la salida degrep ^hosts: /etc/nsswitch.conf
? No sé mucho acerca de Administrador de Red, pero también me di cuenta de que mi/etc/NetworkManager/NetworkManager.conf
contiene una línea en su[keyfile]
sección:hostname=<nodename>
.hostnamectl set-hostname nodename.domainname
no no establecer el nombre de dominio DNS (y no es que se establece el nombre de dominio NIS tampoco).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.
fuente
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.
fuente