Un nombre de host es una cadena legible por humanos que ayuda a las personas a referirse a una computadora por un nombre familiar, en lugar de un número o descriptores difíciles de manejar como "el tercero desde el fondo del penúltimo estante". A menudo, se establece un nombre de host durante el proceso de instalación, pero hay ocasiones en las que es necesario cambiarlo. En Linux, hay muchas formas de establecer un nombre de host y este artículo pretende cubrirlas todas.
Sin embargo, antes de explorar las herramientas relacionadas con los nombres de host, debe comprender los diferentes contextos en los que se usa el término. Hay potencialmente dos designadores del nombre de host de un sistema:el administrador de la computadora (el propietario de una computadora portátil o el usuario raíz de un servidor) y la red (según los protocolos y la configuración). Este factor puede generar confusión, ya que puede mirar el nombre de host de su computadora y ver un valor, solo para encontrar que la misma computadora se conoce como algo diferente en la red.
Hay una razón histórica para esta situación. Hace mucho tiempo, antes del DNS, los hosts de una red tenían que definirse localmente en el archivo /etc/hosts
. Si había 31 hosts en una red y se agregaba uno nuevo, entonces 32 hosts tenían que actualizar su /etc/hosts
archivo para reflejar la dirección IP correcta y el nombre de host correspondiente para cada uno de sus vecinos. Este proceso no se adaptó bien a los sistemas de red más grandes, como la World Wide Web (Internet), por lo que se inventó el DNS y el concepto de nombres de host se abstrajo en gran medida de las computadoras locales para ser administrado por la red.
Hoy, el nombre de host importante es el que usa la red. El valor del nombre de host en /etc/hosts
a menudo se establece en localhost
por defecto.
Con este contexto en mente, aquí están las diferentes formas de manipular un nombre de host en Linux.
[ Descarga gratuita:hoja de referencia de comandos avanzados de Linux. ]
Cambiar los tres nombres con hostnamectl
El hostnamectl
comando de systemd
puede manipular tres variedades de nombres de host:
- Transitorio :Recibido de la configuración de red.
- Estático :Proporcionado por el kernel.
- Bonita :Proporcionado por el usuario.
Un nombre de host transitorio puede cambiar según sea necesario para evitar colisiones de nombres. Por ejemplo, si llama a su computadora penguin
pero ya hay otro host con ese nombre en la red, su nombre de host de red se convierte en penguin-1
.
Los nombres de host estáticos y bonitos se parecen un poco a las variables locales:se usan para actividades que ocurren en la máquina local, principalmente como una conveniencia para el usuario, junto con aplicaciones que necesitan saber si se están ejecutando de forma local o remota (por ejemplo, sobre una sesión X reenviada).
Cuando se invoca sin ningún argumento, hostnamectl
devuelve los nombres estáticos y bonitos, además de información del sistema:
$ hostnamectl
Static hostname: penguin
Pretty hostname: Penguin VM
Icon name: computer-vm
Chassis: vm
Machine ID: 418d9ce8ead44bbfb6970c0d356b89bf
Boot ID: fb3a310237ef41f88b1c62c26f19065a
Virtualization: kvm
Operating System: Fedora 30 (Workstation Edition)
CPE OS Name: cpe:/o:fedoraproject:fedora:30
Kernel: Linux 5.0.9-301.fc30.x86_64
Architecture: x86-64
$ sudo hostnamectl set-hostname --pretty "Web dev test environment"
$ sudo hostnamectl set-hostname --static webdev-test-env
$ hostnamectl
Static hostname: webdev-test-env
Pretty hostname: Web dev test environment
[...]
Cambie los nombres estáticos y bonitos en la GUI con la configuración de GNOME
Si desea configurar los nombres estáticos y bonitos en una aplicación de escritorio, use la configuración de GNOME. Para iniciar la Configuración de GNOME, vaya a Actividades menú en la esquina superior izquierda de su escritorio GNOME. Escriba Settings
en el campo de búsqueda, o haga clic en Mostrar aplicaciones en el panel izquierdo y busque Configuración en los íconos de la aplicación como se muestra a continuación:
$ hostnamectl
Static hostname: rockhopper-computer
Pretty hostname: rockhopper computer
[...]
Cambiar el nombre estático con cockpit
Los sistemas Fedora, CentOS y RHEL cuentan con una aplicación de consola web llamada Cockpit para monitorear y configurar máquinas locales y remotas. Usando Cockpit, puede cambiar el nombre de host estático para su propia máquina, o cualquier máquina que administre (siempre que tenga habilitado Cockpit).
Primero, instale y habilite Cockpit:
$ sudo dnf install cockpit
[...]
$ sudo systemctl enable --now cockpit
En la consola web, haga clic en Sistema pestaña en la columna de la izquierda. Haga clic en la entrada para Nombre de host y edite el Pretty Host Name y (estático) Nombre de host real :
$ sudo echo "galapagos" > /etc/hostname
$ hostnamectl
Static hostname: snares
Pretty hostname: rockhopper web console computer
[...]
Cambiar el nombre estático en el hostname
archivo
También puede configurar el nombre de host estático manualmente editando /etc/hostname
. Este archivo contiene exactamente una línea por defecto. Si aún no ha cambiado el nombre de host, entonces esa línea probablemente dice localhost.localdomain
. Si ha utilizado hostnamectl
para cambiar el nombre de host ya, entonces este archivo refleja ese cambio.
No se recomienda necesariamente editar este archivo manualmente, ya que no actualiza todos los demás valores de nombre de host de la forma en que hostnamectl
hace. Por ejemplo:
$ sudo echo "galapagos" > /etc/hostname
$ hostnamectl
Static hostname: galapagos
Pretty hostname: rockhopper computer
Transient hostname: rockhopper-computer
[...]
Cambiar el nombre estático con nmcli
Otra forma de cambiar un nombre de host estático es a través de la interfaz de línea de comandos para Network Manager, nmcli
:
$ sudo nmcli general hostname emperor
$ hostnamectl
Static hostname: emperor
Pretty hostname: rockhopper computer
Transient hostname: rockhopper-computer
[...]
Cambia el nombre del transitorio con sysctl
El sysctl
El comando le permite configurar los parámetros del kernel mientras se ejecuta Linux (es decir, en lugar de hacerlo durante el arranque). El nombre de host transitorio de su computadora es un parámetro del kernel, por lo que puede modificarlo con este comando:
$ sudo sysctl kernel.hostname=humboldt
$ hostnamectl
Static hostname: emperor
Pretty hostname: rockhopper computer
Transient hostname: humboldt
[...]
Cambia el nombre transitorio con hostname
El hostname
comando desde util-linux
El paquete es una herramienta simple para consultar y configurar el nombre de host transitorio.
Para consultar su nombre de host actual:
$ hostname
humboldt
$ sudo hostname fjordland
$ hostnamectl
Static hostname: emperor
Pretty hostname: rockhopper computer
Transient hostname: fjordland
Ten cuidado con /etc/hosts
El /etc/hosts
El archivo es principalmente histórico, aunque algunas aplicaciones y protocolos lo usan, y puede ser un método útil para crear accesos directos a los hosts que usa con frecuencia. Puede usarlo para establecer un nombre de host, pero por lo general, solo está creando un alias para localhost
en la dirección IP 127.0.0.1
(la dirección de loopback de la red de su computadora).
Por ejemplo, si cambia /etc/hosts
de las entradas predeterminadas como esta:
$ cat /etc/hosts
127.0.0.1 magellanic magellanic.localdomain magellanic magellanic.localdomain4
::1 magellanic magellanic.localdomain magellanic magellanic.localdomain6
$ ping -c 1 localhost
PING localhost(magellanic (::1)) 56 data bytes
64 bytes from magellanic (::1): icmp_seq=1 ttl=64 time=0.182 ms
[...]
$ ping -c 1 magellanic
PING magellanic(magellanic (::1)) 56 data bytes
64 bytes from magellanic (::1): icmp_seq=1 ttl=64 time=0.181 ms
[...]
$ hostnamectl
Static hostname: emperor
Pretty hostname: rockhopper computer
Transient hostname: fjordland
Siga la convención de conformidad
Como puede ver en las iteraciones de este artículo, el nombre de host de una computadora puede volverse confuso si usa demasiados métodos para configurarlo o si lo cambia con frecuencia. Si bien nada impone la uniformidad entre los tipos de nombres de host, es una convención mantener todo igual en cada computadora.
Elija un nombre memorable y utilícelo para su bonito nombre. Deje que los nombres estáticos y transitorios se deriven de eso. Igual de importante, en una red grande, elija significativo nombres Por ejemplo, todas las computadoras de administración superior pueden tener el nombre de un monstruo D&D, mientras que todas las computadoras en el departamento de TI pueden tener el nombre de una nave estelar famosa, y así sucesivamente. El uso de un esquema de nombres ayuda a evitar colisiones de nombres y proporciona contexto a una lista vertiginosa de hosts de red.