Depende de la distribución y sistema de arranque del sistema, en GNU/Linux se pueden obtener y configurar los hostname de diferentes maneras. Si se tiene algun tipo de problemas, esta guía puede ser útil para localizar la configuración faltante o erronea.
Cuando se habla de definir el nombre del host hay que tener en cuenta tres conceptos, estos son el hostname, el dominio y el fqdn.
FQDN (sigla en inglés de fully qualified domain name) es el nombre que incluye el nombre de la computadora y el nombre de dominio asociado a ese equipo. Es decir, conceptualmente “hostname.dominio”, pero se puede tener un hostname en el sistema diferente al usado en el fqdn, por ejemplo un hostname: freakpc , dominio busindre.com y un fqdn www.busindre.com.
Cada distribución tiene un script que suele inicializar el hostname. En sistemas Debian el funcionamiento suele ser usar /etc/hostname, de estar vacío, se prueba con el valor del kernel (/proc/sys/kernel/hostname) y si tampoco contiene un valor se utiliza localhost. Veamos algunas diferencias entre distribuciones.
El comando hostname trabaja con /etc/hostname y /etc/hosts.
hostname -a, --aliases # Muestra los alias creados. hostname -d, --domain # Muestra el dominio (usa la la primera definición de /etc/hosts). hostname -f, --fqdn, --long # Muestra fqdn. hostname -i # Lista la dirección IP del hostname.
El FQDN se nutre del fichero /etc/hosts, sus modificaciones tienen efectos inmediatos pero no se mantienen tras un reinicio.
NOTA: Tras modificar el hostname algunos programas pueden requerir reiniciarse, sobre todo aplicaciones gráficas.
Fichero /etc/hostname.
freetsa
Fichero /etc/hosts.
# Sintaxis: X.X.X.X canonical_hostname [alias...] 127.0.0.1 localhost.localdomain localhost 205.185.116.116 www.freetsa.org freetsa.org freetsa ::1 localhost ip6-localhost ip6-loopback
hostname freetsa # Viene de /etc/hostname. hostname -d freetsa.org hostname -f www.freetsa.org hostname -a freetsa.org freetsa
Consultar o fijar en el kernel directamente el hostname y el dominio.
/sbin/sysctl -n kernel.hostname # /proc/sys/kernel/hostname /sbin/sysctl -n kernel.domainname # /proc/sys/kernel/domain sysctl -w kernel.hostname=freetsa # echo "freetsa" > /proc/sys/kernel/hostname sysctl -w kernel.domainname=freetsa.org # echo "freetsa.org" > /proc/sys/kernel/domain
Ademas del comando hostname y los ficheros anteriormente comentados en la sección SysVinit, en sistemas Systemd se recomienda usar únicamente hostnamectl.
Tipos de hostname comprendidos por hostnamectl.
Static host name: “server1”, “server2” o “www.server.com“”.
Transient/dynamic host name: Como el estático pero definido por (DHCP / mDNS), es ignorado si se usa el estático.
Pretty host name: De formato libre, permite una descripción en UTF8, por ejemplo “Servidor de Backups 11”.
Comando hostnamectl.
hostnamectl # Visualizar la actual configuración. # Configurar el hostname. hostnamectl set-hostname "backups.dominio.com" --static # Utilizado por el kernel al inicializar, si está fijado la opción trastient es ignorada. hostnamectl set-hostname "Gandalf" --transient (De estar definido el hostname estático, este desaparece de hostnamectl al poco de configurarse) hostnamectl set-hostname "Servidor de Backups de domino.com" --pretty # Borrar un hostname en Systemd. hostnamectl set-hostname "" # Por defecto se refiere a --static hostnamectl set-hostname "" --transient hostnamectl set-hostname "" --pretty
Para publicar los cambios del hostname en Systemd es necesario reiniciar el servicio systemd-hostnamed.
systemctl restart systemd-hostnamed
Si SELinux no permite editar el archivo hostname, usar restorecon.
restorecon -v /etc/hostname
Si se tiene como hostname un dominio fqdn configurado, por ejemplo “dominioabc.com”, al intentar resolver la IP de cualquier palabra, pongamos xxx, el sistema hará una solicitud DNS para obtener la ip de xxx.domonioabc.com.
ping xxx ping: xxx: Nombre o servicio desconocido hostname localarch # Hostame actual hostname dominioabc.com # Establecemos como hostname dominioabc.com. ping xxx # Ahora hace un ping a xxx.dominioabc.com, que en este caso existe. PING xxx.com (14.56.6.5) 56(84) bytes of data. 64 bytes from 14.56.6.5 (14.56.6.5): icmp_seq=1 ttl=54 time=153 ms