• cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO A WEBAREA? CLICCA QUI E REGISTRATI !

Il comando hostname in Linux. Visualizzare e modificare il nome host di un server.

di :: 20 marzo 2018

hostname

Un hostname identifica un dispositivo collegato ad una rete. In poche parole, è un nome assegnato ad una macchina: un server web, un server di posta....

Assegnando ad un server un nome host, possiamo raggiungerlo, nella rete in cui è inserito, utilizzando il suo nome invece che il suo indirizzo IP.

In questo articolo vediamo innanzitutto la differenza tra hostname, nome dominio, e fully-qualified domain name ("FQDN"), vista la confusione che ogni tanto accomuna queste voci.

Quando installiamo una distribuzione linux (nel nostro esempio una CentOS), di default il sistema generalmente assegna come nome della macchina, cioè come hostname, il nome "localhost" oppure come "localhost.localdomain",  ovviamente modificabili e vedremo come. Possiamo chiamare la macchina "pippo", "pluto", "www", ....

Il nome host, detto anche "unqualified" cioè "non qualificato", è un nome di fantasia lungo al massino 63 caratteri che può contenere il carattere ".", come in "localhost.localdomain".

Vedremo nel paragrafo successivo le peculiarità di un nome host. Per adesso vi basti sapere che più macchine all'interno di una rete locale possono avere lo stesso nome host, anche se è una scelta sconsigliabile per evitare di far confusione.

Facciamo un esempio:

  • Abbiamo una rete locale (LAN) chiamata "Paperopoli", con IP della classe 192.168.1.x, collegata alla rete pubblica tramite l'IP pubblico 5.252.127.97
  • Al suo interno abbiamo 2 server, il primo con hostname "pippo" e IP locale 192.168.1.1, il secondo con hostname "paperino" e IP locale 192.168.1.2.
  • Abbiamo inoltre configurato, per la rete locale, un dominio locale chiamato "paperopoli" (in lettere minuscole). Pensiamo ad un dominio locale come un elemento aggregante i tra vari computer di una rete lan.
    All'interno della LAN
    potrò ora raggiungere i singoli server utilizzando  gli indirizzi "pippo.paperopoli" e "paperino.paperopoli" anzichè i loro IP.
  • Facciamo un ulteriore passo in avanti: vogliamo raggiungere la nostra rete dall'esterno senza utilizzare l'IP Pubblico 5.252.127.97 ma attraverso un dominio. Ma un dominio locale non ci consente di farlo. Dobbiamo registrare, presso uno dei numerosi servizi online, ad esempio presso Aruba.it, un dominio pubblico, ad esempio "paperopoli.com". Il dominio pubblico ha una estensione chiamata TLD (ad esempio .com. .it, .org...). Associando al dominio pubblico, tramite i sistemi DNS, il nostro l'IP pubblico 5.252.127.97, possiamo raggiungere la nostra rete digitando "paperopoli.com" da qualunque parte del mondo.

Configurando opportunamente la rete "Paperopoli", con il nostro dominio pubblico potremo:

  • raggiungere la macchina "pippo" digitando "pippo.paperopoli.com"
  • raggiungere la macchina "paperino" digitando "paperino.paperopoli.com"

"pippo.paperopoli.com" e "paperino.paperopoli.com" sono chiamati FQDN e cioè fully-qualified domain name

Una coppia "nomehost.nomedominio" è considerata FQDN quando è possibile risalire alla specifica macchina "nomehost" tramite il sistema DNS, che potrà essere soltanto una. Ecco quindi che il FQDN identifica in modo univoco un server.

Ad esempio l'indirizzo web di un sito, www.corriere.it, è un FQDN. Il dominio è corriere.it, e il nome della macchina è www. Digitando quell'indirizzo web accedo alla macchina con hostname "www".

All'interno di una rete, come detto, nulla vita di avere (ma è preferibile evitarlo) server con lo stesso nome host (ad es. più server che si chiamano "pippo"), mentre ci potrà essere solo un FQDN cioè una sola macchina con la coppia "nomehost.nomedominio".  In poche parole, nella nostra rete ci potrà essere un solo server identificato da "pippo.paperopoli.com".

L'esempio descritto è semplicistico, perchè dietro ad una rete c'è una architettura, DNS, ci sono regole, firewall, proxy, che instradano le chiamate ricevute dall'esterno alla rete locale, ma non è questo l'oggetto del nostro articolo. Ci basti sapere cos'è un hostname ("pippo"), un dominio locale ("paperopoli") o pubblico ("paperopoli.com") e un FQDN ("pippo.paperopoli.com").

Che hostnome assegnare ad un server?

Pur non esistendo una vera e propria regola, gli amministratori di sistema usano alcune convenzioni per scegliere un hostname.

Ad esempio, si può assegnare il nome in base alla funzione svolta dalla macchina. Se il server funge da server di posta potremmo usare il nome "mail", se ci sono più server di posta potrei indentificare ogni server con un numero "mail1", "mail2", "mail3", .... Se è un server web potremmo usare "www" o "www1". O ancora "pippo" o "pluto"... quello che vogliamo.

In generale la scelta di un nome dipende solo a voi e alla vostra esperienza e fantasia.

Ci sono tuttavia alcuni vincoli da seguire:

  • può solo contenere lettere (dalla a alla z), numeri (da 0 a 9), il carattere trattino "-" il carattere punto "."
  • può contenere da 2 a 63 caratteri
  • deve iniziare e terminare con una lettera o un numero
  • le lettere degli host sono case-insensitive
  • per evitare confusione, all'interno di una rete, il nome scelto dovrebbe essere univoco (ma non siamo obbligati a farlo)

Come visualizzare l'hostname di un server

Per conosere il nome host e il dominio assegnato ad un server, da terminale digitiamo il comando hostname

# hostname
pippo.paperopoli.com

Se avete da poco installato un server, senza indicare il nome host in fase di installazione, alla macchina sarà generalmente assegnato il nome "localhost" o "localhost.localdomain" che attenzione non è una coppia hostname e dominio, è solo un nome host utilizzato da alcune distribuzione di default, con un carattere "." in mezzo, che come abbiamo detto è lecito in un nome host.

# hostname
localhost.localdomain

Il nome host di un server è contenuto all'interno del file "/etc/hostname", come possiamo vedere ispezionando il file (utilizziamo il comando cat per leggere il file)

# cat /etc/hostname
localhost.localdomain

Come cambiare un hostname

Ultilizziamo il comando hostname seguito dal nome che abbiamo scelto, ad esempio "pluto"

# hostname pippo

Verifichiamo che la modifica abbia avuto effetto, usando, come sappiamo, il comando hostname

# hostname
pippo

Il nome host così assegnato, tuttavia, viene mantenuto solo fino al riavvio del server, ritornando poi al suo nome originario.

Se controlliamo all'interno del file "/etc/hostname" possiamo constatare che il nome non è stato modificato.

# cat /etc/hostname
localhost.localdomain

Per rendere definitiva la modifica dobbiamo operare come segue.

Innanzitutto modifichiamo il file "/etc/hostname" utilizzando, ad esempio, l'editor vi.

# vi /etc/hostname
pippo

Per chi non fosse pratico dell'editor "vi", dopo l'apertura del file, cliccare sul tasto "i" per poter modificare il file, e, dopo aver modificato il nome host, digitare ":wq" (write, quite) per salvare e uscire dall'editor.

Andiamo poi a modificare il file "/etc/hosts"

Se disponiamo del dominio, dobbiamo indicare l'ip della macchina, il FQDN e il nome host, divisi da uno spazio o da una tabulazione.

127.0.0.1    localhost localhost.localdomain
...............
5.252.127.97 pippo.paperopoli.com pippo
...............

Se non disponiamo di un dominio, configuriamolo ad esempio associato all'interfaccia di rete 192.168.1.1 (del nostro esempio)

127.0.0.1    localhost localhost.localdomain
192.168.1.1  pippo

Infine in una distribuzione CentOS editiamo il file "/etc/sysconfig/network" andando a modificare, o aggiungere se non presente, la riga HOSTNAME indicando il FQDN se ce l'abbiamo

HOSTNAME="pippo.paperopoli.com"

In mancanza indichiamo il nome host

HOSTNAME="pippo"

Salviamo il file e riavviamo il server per verificare che il nome host sia stato salvato in modo permanente.

# shutdown -r now

In alternativa al riavvio, sulla nostra Centos 7 usiamo il comando

# systemctl restart systemd-hostnamed

Altre opzioni del comando hostname

Il comando hostname può essere usato in combinazione con alcuni parametri, ed il risultato ottenuto si baserà sulle informazioni contenute nel file di configurazione "/etc/hosts" .

Vediamo assieme alcune di queste opzioni.

Se abbiamo un dominio pubblico, nel nostro esempio "paperopoli.com", ed il server è stato configurato con questo dominio, possiamo vedere il FQDN della macchina aggiungendo al comando hostname l'opzione "-f"

# hostname -f
pippo.paperopoli.com

Nel nostro esempio il FQDN è dato dal nome host "pippo" e dal dominio "paperopoli.com", separati da un punto.

Il comando hostname -f opera così:

  1. prima, tramite il file "/etc/hosts, tenta "risolvere" l'indirizzo "pippo", che è il nome host della macchina, ed ottiene come risposta "5.252.127.97"
  2. a questo punto viene fatta una ricerca DNS inversa ("reverse dns") per risalire al dominio dall'indirizzo IP. Ed ecco ottenuto il FQDN, cioè "pippo.paperopoli.com".

Se il dominio non è configurato, per cui non è presente il FQDN, l'operazione si interrompe al nome host

# hostname -f
pippo

Se vogliamo conoscere solo il nome di dominio della macchina usiamo il comando hostname con l'opzione "-d" (in alternativa potete anche usare il comando dnsdomainname, che ne è un alias)

# hostname -d
paperopoli.com

Se il dominio non è configurato non apparirà nulla.

Per conoscere il nome host breve ("short"), cioè quello che appare prima del carattere ".", usiamo l'opzione "-s"

# hostname -s
pippo

Con l'opzione "-i" visualizziamo l'indirizzo IP, della nostra macchina, con la quale verrà effettuata la risoluzione DNS (l'ip usato dall'opzione "-f" per ottenere il FQDN)

# hostname -i
5.252.127.97

L'opzione "-I" resituisce invece tutti gli ip della nostra macchina (tranne l'interfaccia loopback 127.0.0.1), quindi non riguarda la risoluzione DNS

# hostname -I
5.252.127.97 192.168.1.1
x

ATTENZIONE