Este informe trata de enseñar a cambiar el nombre de equipo en Linux. Partimos del supuesto de que el día que instalamos el sistema operativo le informamos correctamente configuramos un nombre y más tarde, por diversos factores, queremos cambiarlo.

En contra de lo que cabría esperar, no he encontrado ninguna herramienta «de escritorio» para hacerlo, con lo cuál siempre toca revisar el método adecuado. El principal problema es que en muchas ocasiones, distintos servicios utilizan un nombre de la máquina diferente. Veamos cómo cambiarlo para la mayoría de casos.

Cambiar el nombre DNS

Es el más importante y el usado generalmente por la mayoría de servicios nativos de Unix. En este sentido, es el auténtico nombre de la máquina. Si no se cambia durante la configuración, será localhost.localdomain, pero lo normal es que se haya puesto otra cosa. En esta parte vamos a suponer que <nuevo_nombre> es un nombre sin la parte del dominio DNS (por ejemplo, makina para la máquina makina.dominio).

Existe el comando hostname que cambia el nombre de la máquina. Usado sin argumentos nos devuelve el nombre actual de la máquina. Simplemente escribiendo, como root, hostname <nuevo_nombre> ya tenemos cambiado el nombre de la máquina, pero únicamente hasta el próximo arranque de la máquina.

En todas las distribuciones Linux existe un fichero donde se escribe el nombre de la máquina. Cada vez que el sistema arranca, coge el nombre del fichero y llama al comando hostname con ese nombre. El problema es que la localización de ese fichero depende de la distribución.

  • Fedora/Red Hat: en el fichero /etc/sysconfig/network se definen varias variables que se utilizan para arrancar el servicio de red. Las que nos interesan son NETWORKING={yes|no} si tenemos habilitado el uso de la red, NISDOMAIN=<dominio> para configurar el acceso a la red NIS, y HOSTNAME=<nuevo_nombre> con el nombre de host. Evidentemente, nuestra máquina debe tener habilitada la red (NETWORKING=yes), el HOSTNAME bien escrito (y sin el nombre de dominio) y si usamos NIS, configurar bien la variable NISDOMAIN. Las otras variables que pueda haber no son tema de esta entrada.
  • openSUSE/SuSE: el fichero /etc/HOSTNAME contiene únicamente el nombre completamente calificado de nuestra máquina. Lo cambios y ya estaría.

Es recomendable que el fichero /etc/hosts incluya una línea que asocie la dirección IP 127.0.0.1 con el nombre completamente calificado (FQDN, Fully Qualified Domain Name) y los alias que sean. Esta es la entrada que utiliza el comando hostname –alias para preparar su respuesta. En este ejemplo definimos el hostname makina.dominio y los alias makina, localhost y localhost.localdomain:

# Fichero /etc/hosts
127.0.0.1  makina.dominio makina localhost localhost.localdomain

Llegados a este punto, el comando hostname –fqdn debería respondernos makina.dominio y el comando hostname –alias nos diría makina localhost localhost.localdomain.

Informar del nombre de Host a DHCP

Si el PC coge la dirección IP de un servidor DHCP y queremos que éste registre la máquina en un servidor DNS, la máquina debe informar al servidor DNS de su nombre de host, para que éste a su vez lo use para registrar una nueva entrada en el servidor DNS. En teoría, el dhcpclient de Linux lo debería coger del hostname, pero en la práctica suele dar problemas. Aquí vamos a ver cómo solucionarlos en función del Linux que tengamos.

Fedora

En la configuración del dispositivo de red que hace la petición DHCP (fichero /etc/sysconfig/network-scripts/ifcfg-<dev>, siendo <dev> el nombre del dispositivo –eth0, p2p1, etc.-), hay dos opciones que podemos usar: DHCP_HOSTNAME y DHCP_CLIENT_ID que podemos fijar al nombre del host (sin la parte del dominio). Estas variables se pueden fijar desde el escritorio con el administrador de red que trae Fedora, como en la imagen:

Id del Cliente DHCP: makina

Configuración del dispositivo p2p1

Desafortundamente eso no me ha garantizado nunca nada. Lo único que me ha funcionado en Fedora es editar el fichero /etc/dhcp/dhclient.conf y añadir una línea que diga send host-name <nueva_maquina>;, por ejemplo:

send host-name makina;

y con eso sí que el servidor DHCP ha recibido correctamente el hostname que le está llamando.

SAMBA

El nombre que ofrece la máquina en Redes de Windows sólo es necesario si nuestro Linux va a compartir recursos propios en la red, no si únicamente va a ser un cliente de recursos externos. En ses caso, su nombre se configura en el fichero /etc/samba/smb.conf, y suele ser necesario configurar la variables globales netbios name, workgroup y server string de la máquina. No entro en más detalles porque eso quiere decir que estas configurando un servidor SAMBA, y es un tema aparte.