Per impostare il nome host do uso hostnamectl
, ma solo con il nome host, in questo modo:
hostnamectl set-hostname nodename
Per impostare il file di modifica del nome di dominio (DNS)/etc/hosts
e assicurarsi che:
- C'è una linea
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
lì
- Non ci sono altre righe con
<some IP> <hostname>
e questo include le righe con 127.0.0.1
e ::1
(IPv6) indirizzi.
Si noti che, a meno che non si utilizzi NIS, (none)
è l'output corretto quando si esegue il domainname
comando.
Per verificare se il tuo nome di dominio DNS è impostato correttamente, usa il dnsdomainname
comando e controlla l'output di hostname
vs hostname -f
(FQDN).
Dominio NIS vs. DNS
Questo problema mi ha confuso quando l'ho incontrato per la prima volta. Sembra che il domainname
comando preceda la popolarità di Internet. Invece del nome di dominio DNS, mostra o imposta il NIS (Network Information Service) del sistema alias YP (Pagine Gialle) (un gruppo di computer che hanno servizi forniti da un server NIS master). Questo comando visualizza semplicemente il nome restituito dalla getdomainname(2)
funzione di libreria standard. ( nisdomainname
e ypdomainname
sono nomi alternativi per questo comando.)
Visualizza il nome di dominio FQDN o DNS
Per controllare il nome di dominio DNS (Internet), è necessario eseguire il dnsdomainname
comando o hostname
con-d, --domain
opzioni. (Si noti che il dnsdomainname
comando non può essere utilizzato per impostare il nome di dominio DNS: viene utilizzato solo per visualizzarlo.)
Per visualizzare il nome di dominio completo (nome di dominio completo) del sistema, eseguirehostname
con le -f, --fqdn, --long
opzioni (allo stesso modo, questo comando non può essere utilizzato per impostare la parte del nome di dominio).
I comandi precedenti utilizzano il resolver del sistema (implementato da gethostbyname(3)
funzione dalla libreria standard, come specificato da POSIX) per determinare il nome di dominio DNS e il nome FQDN.
Risoluzione del nome
Nei moderni sistemi operativi come RHEL 7, la hosts
voce in /etc/nsswitch.conf
viene utilizzata per risolvere i nomi host. Nella tua macchina CentOS 7, questa linea è configurata come (impostazione predefinita per CentOS 7):
hosts: files dns
Ciò significa che quando le funzioni del resolver cercano nomi host o indirizzi IP, per prima cosa controllano la presenza di una voce nel /etc/hosts
file e quindi provano i server DNS elencati in /etc/resolv.conf
.
Durante l'esecuzione hostname -f
per ottenere l'FQDN di un host, le funzioni del resolver tentano di ottenere l'FQDN per il nome host del sistema. Se l'host non è elencato nel /etc/hosts
file o dal relativo server DNS, il tentativo fallisce e lo hostname
segnala Name or service not known
.
Quando hostname -d
viene eseguito per ottenere il nome di dominio, vengono eseguite le stesse operazioni e la parte del nome di dominio viene determinata rimuovendo la parte del nome host e il primo punto dal nome di dominio completo.
Configura il nome di dominio
1. Aggiornare il server dei nomi DNS pertinente
Nel mio caso, avevo già aggiunto una voce per la mia nuova macchina CentOS 7 nel server DNS per la mia LAN locale, quindi quando il FQDN non è stato trovato nel /etc/hosts
file quando ho eseguito hostname
con -d
o-f
opzione , i servizi DNS locali sono stati in grado di risolvere completamente il nome di dominio completo per il mio nuovo nome host.
2. Utilizzare il /etc/hosts
file
Se il server DNS non è stato configurato, è possibile specificare il nome di dominio completo nel /etc/hosts
file. Il modo più comune per farlo è specificare l'indirizzo IP primario del sistema seguito dal suo FQDN e dal suo nome host breve. Per esempio,
172.22.0.9 nodename.domainname nodename
Estratto dalla hostname
pagina man
Non è possibile modificare il nome FQDN con hostname
odnsdomainname
.
Il metodo consigliato per impostare il nome FQDN è di rendere il nome host un alias per il nome completo utilizzando /etc/hosts,
DNS o NIS. Ad esempio, se il nome host fosse "ursula", si potrebbe avere una riga in /etc/hosts
cui si legge:
27.0.1.1 ursula.example.com ursula
Tecnicamente: il nome FQDN è il nome getaddrinfo (3) restituito per il nome host restituito da gethostname (2). Il nome di dominio DNS è la parte dopo il primo punto.
Pertanto dipende dalla configurazione del resolver (di solito in
/etc/host.conf
) come modificarlo. Di solito il file hosts viene analizzato prima di DNS o NIS, quindi è più comune cambiare l'FQDN in
/etc/hosts
.
hostname -f
comando non funziona sul mio CentOS vm.