Un hostname è una stringa leggibile dall'uomo che aiuta le persone a fare riferimento a un computer con un nome familiare, piuttosto che con un numero o descrittori ingombranti come "il terzo dal fondo del penultimo rack". Spesso un nome host viene impostato durante il processo di installazione, ma a volte è necessario modificarlo. Su Linux, ci sono molti modi per impostare un nome host e questo articolo mira a trattarli tutti.
Prima di esplorare gli strumenti relativi agli hostname, però, è necessario comprendere i diversi contesti in cui viene utilizzato il termine. Esistono potenzialmente due designatori del nome host di un sistema:l'amministratore del computer (il proprietario di un laptop o l'utente root di un server) e la rete (a seconda dei protocolli e delle impostazioni). Questo fattore può creare confusione, perché potresti guardare il nome host del tuo computer e vedere un valore, solo per scoprire che lo stesso computer viene indicato come qualcosa di diverso sulla rete.
C'è una ragione storica per questa situazione. Molto tempo fa, prima del DNS, gli host su una rete dovevano essere definiti localmente nel file /etc/hosts
. Se c'erano 31 host su una rete e ne veniva aggiunto uno nuovo, allora 32 host dovevano aggiornare il loro /etc/hosts
file per riflettere l'indirizzo IP corretto e il nome host corrispondente per ciascuno dei loro vicini. Questo processo non si adattava bene a sistemi di rete più grandi come il World Wide Web (Internet), quindi è stato inventato il DNS e il concetto di nomi host è stato in gran parte sottratto ai computer locali per essere invece gestito dalla rete.
Oggi, l'hostname importante è quello utilizzato dalla rete. Il valore del nome host in /etc/hosts
è spesso impostato su localhost
per impostazione predefinita.
Tenendo presente questo contesto, ecco tutti i diversi modi per manipolare un nome host su Linux.
[ Download gratuito:cheat sheet dei comandi avanzati di Linux. ]
Cambia tutti e tre i nomi con hostnamectl
Il hostnamectl
comando da systemd
può manipolare tre varietà di nomi host:
- Transitorio :Ricevuto dalla configurazione di rete.
- Statico :fornito dal kernel.
- Carino :fornito dall'utente.
Un nome host temporaneo può cambiare secondo necessità per evitare conflitti di nomi. Ad esempio, se dai un nome al tuo computer penguin
ma c'è già un altro host con quel nome sulla rete, il tuo nome host di rete diventa penguin-1
.
I nomi host statici e graziosi sono un po' come le variabili locali:vengono utilizzati per attività che si verificano sulla macchina locale, principalmente per comodità dell'utente, insieme ad applicazioni che devono sapere se sono in esecuzione localmente o in remoto (ad esempio, su una sessione X inoltrata).
Quando viene invocato senza alcun argomento, hostnamectl
restituisce i nomi statici e graziosi, oltre ad alcune informazioni di 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
[...]
Cambia i nomi statici e graziosi nella GUI con le impostazioni di GNOME
Se vuoi impostare i nomi statici e graziosi in un'applicazione desktop, usa le impostazioni di GNOME. Per avviare le impostazioni di GNOME, vai su Attività menu nell'angolo in alto a sinistra del desktop GNOME. Digita Settings
nel campo di ricerca oppure fai clic su Mostra applicazioni icona sul dock di sinistra e trova Impostazioni nelle icone dell'applicazione come mostrato di seguito:
$ hostnamectl
Static hostname: rockhopper-computer
Pretty hostname: rockhopper computer
[...]
Cambia il nome statico con cockpit
I sistemi Fedora, CentOS e RHEL dispongono di un'applicazione console Web chiamata Cockpit per il monitoraggio e la configurazione di macchine locali e remote. Utilizzando Cockpit, puoi modificare il nome host statico della tua macchina o di qualsiasi macchina che amministra (purché abbia Cockpit abilitato).
Innanzitutto, installa e abilita Cockpit:
$ sudo dnf install cockpit
[...]
$ sudo systemctl enable --now cockpit
Nella console web, fai clic su Sistema scheda nella colonna di sinistra. Fai clic sulla voce per Nome host e modifica il Nome host carino e (statico) Nome host reale :
$ sudo echo "galapagos" > /etc/hostname
$ hostnamectl
Static hostname: snares
Pretty hostname: rockhopper web console computer
[...]
Cambia il nome statico nel hostname
file
Puoi anche impostare manualmente il nome host statico modificando /etc/hostname
. Questo file contiene esattamente una riga per impostazione predefinita. Se non hai ancora cambiato il nome host, allora quella riga probabilmente legge localhost.localdomain
. Se hai usato hostnamectl
per modificare già il nome host, questo file rifletterà tale modifica.
La modifica manuale di questo file non è necessariamente consigliata, perché non aggiorna tutti gli altri valori hostname nel modo in cui hostnamectl
fa. Ad esempio:
$ sudo echo "galapagos" > /etc/hostname
$ hostnamectl
Static hostname: galapagos
Pretty hostname: rockhopper computer
Transient hostname: rockhopper-computer
[...]
Cambia il nome statico con nmcli
Un altro modo per modificare un nome host statico è tramite l'interfaccia della riga di comando per Network Manager, nmcli
:
$ sudo nmcli general hostname emperor
$ hostnamectl
Static hostname: emperor
Pretty hostname: rockhopper computer
Transient hostname: rockhopper-computer
[...]
Cambia il nome del transitorio con sysctl
Il sysctl
Il comando consente di configurare i parametri del kernel mentre Linux è in esecuzione (ovvero, invece che all'avvio). Il nome host temporaneo del tuo computer è un parametro del kernel, quindi puoi modificarlo con questo comando:
$ sudo sysctl kernel.hostname=humboldt
$ hostnamectl
Static hostname: emperor
Pretty hostname: rockhopper computer
Transient hostname: humboldt
[...]
Cambia il nome transitorio con hostname
Il hostname
comando da util-linux
package è un semplice strumento per interrogare e impostare il nome host temporaneo.
Per interrogare il tuo nome host attuale:
$ hostname
humboldt
$ sudo hostname fjordland
$ hostnamectl
Static hostname: emperor
Pretty hostname: rockhopper computer
Transient hostname: fjordland
Fai attenzione con /etc/hosts
Il /etc/hosts
il file è per lo più storico, sebbene sia utilizzato da alcune applicazioni e protocolli e può essere un metodo utile per creare collegamenti agli host che usi spesso. Puoi usarlo per impostare un nome host, ma di solito stai solo creando un alias per localhost
all'indirizzo IP 127.0.0.1
(l'indirizzo di loopback della rete del tuo computer).
Ad esempio, se modifichi /etc/hosts
dalle voci predefinite come questa:
$ 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
Segui la convenzione di conformità
Come puoi vedere dalle iterazioni all'interno di questo articolo, il nome host di un computer può creare confusione se usi troppi metodi per impostarlo o se lo cambi frequentemente. Sebbene nulla imponga l'uniformità tra i tipi di nomi host, è una convenzione mantenere tutto uguale su ogni computer.
Scegli un nome memorabile e usalo per il tuo bel nome. Lascia che i nomi statici e transitori siano derivati da quello. Altrettanto importante, in una rete di grandi dimensioni, scegli significativo nomi. Ad esempio, tutti i computer di gestione superiore possono prendere il nome da un mostro di D&D, mentre tutti i computer nel reparto IT possono prendere il nome da una famosa astronave, e così via. L'uso di uno schema di denominazione aiuta a evitare conflitti di nomi e fornisce contesto a un elenco di host di rete altrimenti vertiginoso.