Nomi host - Di cosa si tratta?


54

Di recente sono stato "costretto" a svolgere alcuni lavori di amministratore di sistema, mentre questo non è qualcosa che adoro fare, ho letto, sperimentato e imparato molto.

C'è un aspetto fondamentale della configurazione del server che non sono stato in grado di comprendere: i nomi host .

In Ubuntu, ad esempio, si dovrebbe impostare il nome host in questo modo (secondo la libreria Linode ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

File: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

Presumo che platosia un nome arbitrario e che plato.example.comsia il nome FQDN.

Ora le mie domande sono:

  • È obbligatorio?
  • A quale scopo?
  • Dove è necessario / usato?
  • Perché non posso definire "localhost" come nome host per ogni macchina?
  • Devo impostare una voce DNS per il nome di plato.example.comdominio completo?
  • Dovrebbe plato.example.comessere usato come voce DNS inversa per il mio IP?

Inoltre, esistono delle "migliori pratiche" per scegliere i nomi host? Ho visto persone che usano lettere greche, nomi di pianeti e persino figure mitologiche ... Cosa succede quando finiamo le lettere / i pianeti?

Mi dispiace se questa è una domanda stupida, ma non sono mai stato troppo entusiasta delle configurazioni di rete.


3
Penso che Chris S sia fuori base qui. La domanda - che cos'è un nome host di sistema e come si collega al DNS - è valida.
Larks

@ Chris S: Capisco, credimi. Ho provato a leggerlo una volta, ma il tutto mi ha lasciato immensamente confuso. Non sto aspirando ad essere una SA, sto solo cercando di capire un po 'meglio le basi.
Alix Axel,

Questo dovrebbe andare alla wiki della comunità
lynxman,

1
@lynxman: Non mi dispiace, ma perché?
Alix Axel,

1
Perché è molto interessante :)
lynxman,

Risposte:


29

In questi giorni, un sistema può avere più interfacce, ognuna con più indirizzi e ogni indirizzo può anche avere più voci DNS associate ad esso. Quindi cosa significa un "nome host di sistema"?

Molte applicazioni useranno il nome host del sistema come identificatore predefinito quando comunicano altrove. Ad esempio, se stai raccogliendo messaggi syslog su un server centrale, i messaggi saranno tutti taggati con il nome host del sistema di origine. In un mondo ideale probabilmente lo ignoreresti (perché non vuoi necessariamente fidarti del client), ma il comportamento predefinito - se avessi chiamato tutti i tuoi sistemi "localhost" - si tradurrebbe in un mucchio di messaggi di log che non sarebbe in grado di associarsi a un sistema specifico.

Come altri hanno sottolineato, il nome host del sistema è anche un utile identificatore se ti trovi ad accedere in remoto a un numero di sistema. Se hai cinque finestre collegate a un sistema chiamato "localhost", avrai difficoltà a tenerle dritte.

Allo stesso modo, proviamo a far corrispondere il nome host di sistema al nome host che usiamo per l'accesso amministrativo a un sistema. Ciò aiuta a evitare confusione quando si fa riferimento al sistema (tramite e-mail, conversazioni, documentazione, ecc.).

Per quanto riguarda il DNS:

Si desidera disporre di voci DNS avanti e indietro adeguate per le proprie applicazioni al fine di evitare confusione. È necessario inserire alcune voci (nome -> indirizzo IP) affinché le persone possano accedere comodamente all'applicazione. Avere la corrispondenza della voce inversa è utile per una serie di motivi, ad esempio ti aiuta a identificare correttamente l'applicazione se trovi l'indirizzo IP corrispondente in un registro.

Si noti che qui sto parlando di "applicazioni" e non di "sistemi", perché - in particolare con i server Web - è comune avere più indirizzi IP su un sistema, associati a nomi host e servizi diversi.

Cercare di mantenere /etc/hostsrapidamente le mappature dei nomi IP nel tuo file diventa difficile mentre gestisci un numero crescente di sistemi. È molto facile che il file degli host locali non sia sincronizzato rispetto al DNS, causando potenzialmente confusione e in alcuni casi malfunzionamento (perché qualcosa tenta di associarsi a un indirizzo IP che non esiste più sul sistema, ad esempio).


Grazie per la tua risposta, sono ancora confuso se dovrei (o debba) conservare il file / etc / hosts invece di basarmi solo sulle voci DNS.
Alix Axel,

8
In genere ignoro /etc/hostsa favore del DNS. Ciò riduce il numero di posti necessari per mantenere le informazioni sul nome -> mappatura dell'indirizzo. Nella maggior parte dei sistemi che mantengo, /etc/hostscontiene solo la singola voce per localhost.
Larks

Quando si ha a che fare con cluster - come ganeti o un cluster Linux-HA / Corosync - / etc / hosts viene usato per parlare tra i membri del cluster. È male per fare affidamento esclusivamente su DNS perché il tuo servizio DNS potrebbe essere su quei cluster ed essere migrato o offline durante una modifica del nodo, quindi / etc / hosts e un nome host corretto ti aiuteranno benissimo.
coredump,

quindi, per quanto riguarda "unico", stiamo piuttosto "cercando" di essere "unico" piuttosto che "deve" essere unico, giusto? Perché ci sono così tanti server là fuori e sono tutti nello stesso ambito, essere "unici" è impossibile. Questa comprensione è corretta?
shenkwen,

10

È possibile impostare ogni nome host su "localhost", ma è molto utile avere alix@plato ~ $nel prompt dei comandi quando si gestiscono macchine su SSH. La gestione remota dei server potrebbe diventare molto confusa in caso contrario.

Avere un FQDN corretto è importante quando si ospita un server Web o un server di posta. A questi tipi di applicazioni server piace sapere "su chi" sono in esecuzione.

Per aver scelto un buon schema di denominazione, vi rimando a questa domanda molto popolare .

Un nome di dominio completo diventa utile solo quando è significativo per un altro computer. Ci sono tre livelli per questo:

  • Un computer sulla tua rete locale ha una voce nel suo file host che punta a quella macchina
  • Hai un server DNS in esecuzione sulla tua rete locale e ogni computer locale che lo utilizza come server DNS ora conosce Platone per nome.
  • Registri un nome di dominio e ora il mondo intero sa a quale macchina punta il nome plato.alixaxel.com.

Quando si inviano e-mail o si servono pagine Web al mondo esterno, la terza è quella che si desidera avere. Per la maggior parte degli altri casi, puoi accontentarti di un DNS locale o persino modificare i file host.

In tal caso, puoi semplicemente creare un nome di dominio (plato.alixnetwork potrebbe andare bene come un nome di dominio completo) da utilizzare all'interno della tua rete locale. L'unico valore aggiunto di avere la parte "alixnetwork" (il nome di dominio) è la comodità quando si dispone di un'altra rete locale da cui si desidera distinguerla.


Grazie kenny, immagino che il mio principale dubbio sia perché sia ​​importante per un server web / mail avere un FQDN adeguato. Inoltre, cosa costituisce un FQDN "corretto"? Devo semplicemente anteporre il nome host al dominio e puntarlo all'indirizzo IP pubblico? Ho l'impressione di dover creare voci DNS A / AAAA con il nome host, no?
Alix Axel,

Dipende da cosa vuoi ottenere. Se non invii e-mail o offri pagine Web al mondo con Platone, non è davvero necessario creare un record DNS globale per quella macchina.
Kenny Rasschaert,

"Registri un nome di dominio e ora il mondo intero sa a quale macchina punta il nome plato.alixaxel.com." - Non lo capisco. Il mondo intero non sa a quale macchina punta il nome plato.alixaxel.com controllando la risoluzione DNS di "alixaxel.com"? Cosa c'entra con l'impostazione di un nome di dominio completo in una macchina casuale?
shenkwen,

9

Una panoramica di base. Il nome host è solo un puntatore; è possibile assegnare uno specifico come nome host a cui fa riferimento la macchina, ma potrebbe avere più. Alcuni servizi, in particolare la posta e HTTP, si basano su nomi di dominio per sapere dove dovrebbero trovarsi i servizi e come raggiungerli.

Molto tempo fa, tutti questi nomi (che di nuovo, sono solo puntatori a indirizzi IP) sono stati tenuti traccia di in un file chiamato hosts. Man mano che il sistema cresceva, non erano in grado di mantenere il file sincronizzato su tutti i computer interessati che partecipavano alle varie reti interconnesse. Quindi è stato inventato il sistema DNS. Quando esegui una ricerca per nome, controlla ancora prima il file hosts, quindi il sistema DNS. Windows può anche controllare altri sistemi come WINS o NetBIOS.

Quando si inserisce una voce in un hostsfile, non la si assegna al computer. L'assegnazione di un nome host come quello utilizzato dal computer viene eseguita nei file di configurazione (su sistemi * nix) e Proprietà di sistema nei sistemi Windows (il sistema Windows può anche avere suffissi specifici NIC).

Le voci nel hostsfile, come il sistema DNS, sono solo una mappatura da un nome host a un indirizzo IP. Per usare il nome host 'localhost' (non c'è niente di speciale, è un nome host come tutto il resto) deve essere mappato all'interfaccia di loopback (quindi punterà sempre al computer locale). Per garantire hostsche funzioni , tutti i computer dispongono di questa mappatura predefinita nel loro file, ma potrebbe essere potenzialmente rimossa se non si desidera poter utilizzare quel nome host.

Inoltre, come altri hanno notato, è molto utile assegnare un nome host a un computer. Quando è collegato al computer, è possibile che venga visualizzato il nome host quando si accede, o come richiesta o in qualsiasi altro luogo. Ciò semplifica l'identificazione del computer a cui sei connesso. Se si imposta quel nome host in DNS o lo si inserisce in tutti i hostsfile, si sarà in grado di connettersi al computer facendo riferimento al suo nome host invece di dover conoscere sempre il suo indirizzo IP. (Ancora più utile se il computer utilizza DHCP, poiché l'indirizzo potrebbe cambiare. Se il computer aggiorna DNS, il record DNS punta al nuovo indirizzo IP; è comunque possibile connettersi senza conoscere il nuovo indirizzo IP perché si conosce il nome DNS ).

Ci sono molti altri usi di entrambi hostse DNS, ma sospetto che tu abbia più domande che risposte se leggi tutto questo.


4
+1 per aver dedicato del tempo a scrivere una buona risposta nonostante il tuo iniziale sentimento di frustrazione per la domanda.
Kenny Rasschaert,

Spiegazione fantastica! Se la mia comprensione è corretta inserendo il nome di dominio completo in /etc/hostsnon è necessario, avere il nome host in una voce DNS otterrebbe lo stesso risultato, giusto?
Alix Axel,

2
@Alix, corretto, se la voce è in DNS (e DNS funziona correttamente), la sua presenza nel hostsfile sarebbe ridondante. Anche la voce nel hostsfile sovrascriverà il DNS (utile per i test a volte, fastidioso quando te ne dimentichi). Si noti che questo è tutto per quanto riguarda i record A e AAAA, esistono altri tipi di record per i nomi host, ma li ho lasciati fuori per chiarezza.
Chris S,

Grazie Chris, questo rende tutto molto più chiaro.
Alix Axel,

5

Ad ogni host dovrebbe essere assegnato un nome significativo. Il nome host può servire a diversi scopi:

1- Ti aiuta a riconoscere su cui stai attualmente lavorando.

2- L'uso dei nomi configurati nei /etc/hostsrecord DNS e / o è più semplice della memorizzazione di molti indirizzi IP.

3- Localhost è un nome riservato per fare riferimento alla macchina corrente (indirizzo 127.0.0.1).

4- I record DNS sono utili per rendere i tuoi server accessibili al pubblico.

Scegliere un nome adatto per ciascun server ti aiuta molto nella tua amministrazione. Inoltre, aiuta i tuoi clienti ad accedere ai tuoi server.


2

Proprio come una nota a margine: il corretto funzionamento in avanti e la risoluzione DNS inversa è la pietra angolare assoluta di ogni installazione IT su questo pianeta. Non sottovalutare mai la necessità di un DNS ben mantenuto e di una corretta risoluzione del nome host!


Non riesco a capire perché sia ​​importante. Ho un server linode che ospita molti siti Web. Non capendo lo scopo di impostare il nome host, lo lascio così com'è, che è "ubuntu". Questo server è in esecuzione da un paio d'anni e non ho mai avuto alcun inconveniente. Non sto mettendo in discussione la tua risposta, sto solo cercando di capire perché il nome host è importante. Nel mio caso, quando vorrei avere impostato correttamente un nome host?
shenkwen,

1
@shenkwen - se onestamente hai un solo server, puoi nominarlo come desidera il tuo cuore, e ovviamente non importa. Non appena il numero di server diventa maggiore di 1, hai nuovi problemi da gestire e la corretta denominazione è uno strumento importante.
mfinni,

1

Disclaimer: la domanda principale riguarda i sistemi Linux, quindi sentiti libero di ignorare questa risposta se non sei interessato al lato Windows del problema.

In ogni caso, nei sistemi Windows, a parte tutti i punti menzionati in altre risposte, il nome host è effettivamente utilizzato dal sistema operativo stesso, a scopi di rete e autenticazione; in particolare:

  • Ogni sistema, che sia o meno un membro di dominio, deve avere un nome univoco nella stessa rete (cioè nella stessa sottorete IP), altrimenti si verificherà un conflitto di denominazione e vari servizi di rete (principalmente condivisione di file e stampanti) non lavoro.
  • Tutti i sistemi membri dello stesso dominio di Active Directory devono avere un nome univoco, indipendentemente dai confini della rete.
  • In un ambiente di dominio, il nome host di un sistema funge da entità di sicurezza e può essere utilizzato per l'autenticazione remota (basti pensare a questo come un account utente per la macchina); può essere assegnato autorizzazioni e diritti di accesso e può essere inserito in gruppi per motivi di sicurezza. Ciò influisce su tutti i processi in esecuzione sul sistema utilizzando gli account utente LocalSysteme incorporati NetworkService, che possono autenticarsi su altri sistemi utilizzando le credenziali del sistema su cui sono in esecuzione; ciò consente a un processo in esecuzione come NetworkServicesu SystemA di accedere a una cartella condivisa su SystemB concedendo le autorizzazioni sulla cartella all'account utente di SystemA.

-1

Molti siti e / o presunti "amministratori" stanno ora affermando che l'attributo "nomehost" contiene l'FQDN dell'istanza del sistema operativo, il che "interrompe" qualsiasi risoluzione che aggiunge il "nome dominio" ad esso:

nomehost
system1.domain1.org

ping hostname
- impossibile risolvere system1.domain1.org.domain1.org


Potete fornire una fonte di riferimento per la vostra dichiarazione?
Dave M,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.