Sto eseguendo un RHEL 5.7 e il hostname
comando mi dà il nome host corretto.
Ma hostname -s
e hostname -f
ritorno: Unknown host
. Perché?
/etc/hostname
?
hostname -f
usa DNS, hai una voce DNS inversa per il tuo IP?
Sto eseguendo un RHEL 5.7 e il hostname
comando mi dà il nome host corretto.
Ma hostname -s
e hostname -f
ritorno: Unknown host
. Perché?
/etc/hostname
?
hostname -f
usa DNS, hai una voce DNS inversa per il tuo IP?
Risposte:
(copiato da una delle mie risposte su SF )
Il hostname
comando restituisce risultati da DNS e /etc/hosts
.
hostname
è equivalente a uname -n
ed è l'attuale "nomehost" o "nodename" della casella.
Tutti gli altri hostname
argomenti usano questo nodename per cercare informazioni.
Quindi, prima di andare oltre, dovrei spiegare il /etc/hosts
formato del file.
Il primo campo è abbastanza ovvio, è l'indirizzo IP a cui dovrebbero risolvere tutti i nomi host sulla linea. Il secondo campo è il nome host principale per quell'IP. I campi rimanenti sono alias.
Quindi, se lo esegui hostname -f
, tenterà innanzitutto di risolvere l'IP per il tuo nome nodo. A seconda di come è stata hosts:
configurata la voce in /etc/nsswitch.conf
questo metodo può variare.
/etc/resolv.conf
fino a quando non ottiene un IP dal DNS. /etc/hosts
una riga in cui il nome host primario o il nome alias corrisponde al nome nodo corrente ( uname -n
), quindi restituisce l'indirizzo IP in quella riga. Una volta che ha l'IP, proverà quindi una ricerca inversa su quell'IP. Anche in questo caso utilizzerà DNS per questo e il tuo file hosts in base al tuo nsswitch.conf
. Nel caso di utilizzo del file hosts, verrà restituita la voce principale (che è il primo campo dopo l'IP nel file).
hostname -a
funzionerà solo con il file hosts poiché fare una ricerca inversa in DNS ti dà solo 1 risultato. Con il file hosts restituisce gli alise nella riga corrispondente (che è tutto dopo la prima voce, il nome host primario).
Quindi in breve, il probabile motivo del tuo problema è che non hai alcuna voce /etc/hosts
che contenga il tuo hostname ( uname -n
).
Esempi
Se il tuo nodename è 'foobar' e hai una voce /etc/hosts
come questa:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Quindi otterrai i seguenti risultati di comando:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost