Hostname
| Fiche express | |
|---|---|
| Domaine | Identité locale de la machine |
| Commande | hostname
|
| Paquet | hostname (Debian/Ubuntu) — inclus par défaut sur RHEL/CentOS
|
| Persistant | hostnamectl (systemd) ou /etc/hostname (legacy)
|
| Voir aussi | Host (résolution DNS — ne pas confondre) |
hostname affiche ou modifie le nom local de la machine, tel que stocké sur cette machine elle-même — c'est une information purement locale, indépendante de toute résolution réseau. Il ne faut pas confondre avec Host, qui interroge le DNS pour résoudre un nom de domaine en adresse IP : hostname répond « comment cette machine s'appelle-t-elle ? », host répond « à quelle IP correspond ce nom sur le réseau ? ». Rien n'empêche qu'un hostname local ne soit pas du tout résolvable en DNS (typique sur un poste de dev ou une VM interne).
Afficher le nom de la machine
hostname # nom court (short hostname), ex. web01
hostname -f # FQDN complet, ex. web01.exemple.fr
hostname -s # force le format court même si /etc/hostname contient un FQDN
hostname -d # domaine seul, ex. exemple.fr
hostname -A # tous les alias/FQDN connus pour cette machine
hostname -I # toutes les IP locales (une par interface), utile en script
hostname -i # IP associée au hostname via /etc/hosts ou DNS (moins fiable que -I)
⚠️ hostname -f ne fonctionne que si le nom court peut être résolu en FQDN, via une entrée dans /etc/hosts ou un enregistrement DNS — sinon la commande renvoie une erreur ou se contente du nom court selon les distributions.
Changer le nom de la machine
Deux mondes coexistent selon que la distribution utilise systemd ou un init legacy.
Systemd (RHEL7+, Debian 8+, Ubuntu 16.04+)
hostnamectl set-hostname web01.exemple.fr # persistant immédiatement, met à jour /etc/hostname
hostnamectl status # affiche Static/Transient/Pretty hostname
hostnamectl distingue trois notions : le hostname static (celui de /etc/hostname, persistant au reboot), le hostname transient (poussé dynamiquement par DHCP/mDNS, perdu au reboot) et le hostname pretty (nom libre avec espaces/accents pour l'affichage, ex. « Serveur de prod »).
Init legacy (SysV, anciennes distributions)
hostname web01.exemple.fr # change le nom en mémoire, effet immédiat mais NON persistant
echo "web01.exemple.fr" > /etc/hostname # rend le changement persistant au reboot
Sans édition de /etc/hostname, un hostname lancé à la main est perdu au prochain redémarrage — la commande seule n'agit que sur le nom en mémoire (kernel), pas sur la configuration persistante.
hostname et /etc/hosts
Sur Debian/Ubuntu, il faut aussi vérifier la ligne 127.0.1.1 de /etc/hosts, qui doit référencer le nouveau hostname — sinon des outils locaux (sudo, certains services) peuvent se plaindre de ne pas pouvoir résoudre le nom de la machine :
127.0.0.1 localhost
127.0.1.1 web01.exemple.fr web01
Cette entrée est une résolution purement locale (fichier plat, lu avant toute requête DNS) : elle ne publie rien sur le réseau et ne remplace pas un enregistrement DNS si d'autres machines doivent joindre ce serveur par son nom.