Comprendi nome host e / etc / hosts


13

In / etc / hostname, ho myname.

In / etc / hosts, ho:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

Ho una vaga comprensione di ciò che è veramente un nome host e per cosa viene utilizzato.

Queste domande più precise potrebbero aiutarmi a capirlo meglio:

  1. Qual è davvero il mio nome host nell'esempio sopra? mynameo qualcos'altro? Se avessi invece myname.domain.comin /etc/hostname, quale sarebbe il mio vero nome host allora?

  2. Nell'esempio, il comando hostnameritorna myname, mentre il comando hostname -fritorna localhost.localdomain. Avevo in mente che /etc/hostsera solo una mappatura tra nomi e indirizzi IP. Sembra servire un'altra funzione qui. Cos'è un fqdn ea cosa serve? Come viene recuperato? Perché è localhost.localdomain?

  3. Se avessi invece myname.domain.comin /etc/hostname, hostname -fsarebbe tornato myname.domain.com. Perché?

  4. Perché fqdn non termina con un punto in questi file?

  5. Sono hostname -ded dnsmydomainequivalenti?

  6. In quale contesto posso usare il mio hostname ( myname) e quando devo usare il mio fqdn ( localhost.localdomain)?

Risposte:


9
  1. /etc/hostnamecontiene il nome della macchina, come noto per le applicazioni eseguite localmente. /etc/hostse nomi associati DNS con indirizzi IP. mynamepuò essere mappato su qualsiasi indirizzo IP a cui la macchina può accedere, ma 127.0.0.1mapparlo non è estetico.
  2. No /etc/hosts, ma /bin/hostnameserve un'altra funzione con -f.
  3. Perché /etc/hostspuò prevalere sul buon senso . Modificalo con cautela e non lasciare immondizia lì dopo patch ed esperimenti temporanei.
  4. Entrambi gli stili (⋯ .TLD. e ⋯ .TLD ) sono accettabili. Il primo è inequivocabile, mentre il secondo è onnipresente.
  5. Non so cosa dnsmydomainsia, ma è improbabile. Cercare qualcosa /etc/hostsnon è tecnicamente "DNS".
  6. Ricorda il punto 1. Nome host: per le applicazioni eseguite localmente; anche per protocolli di rete particolari come SMB (samba). FQDN (se non un falso o un segnaposto come localhost.localdomain) - per accedere alla macchina dall'esterno. Il nome di dominio completo deve essere risolvibile dove viene utilizzato.

1
Cosa succede se il mio IP è dinamico (DHCP) e cambia di volta in volta? quale indirizzo dovrei usare come mynamein / etc / hosts?
user156516

3

Odio assolutamente quando qualcuno mi dice di leggere il manuale, ma in questo caso ti preghiamo di dare un'occhiata alla pagina man per il nome host e la maggior parte se non tutte le tue domande dovrebbero avere una risposta. È scritto molto meglio di quanto potrei eventualmente spiegare.

Per fornire assistenza, alcuni degli estratti che colpiscono le tue domande sono: - Il tuo nome host è quello che vedi in / etc / hosts. - L'FQDN restituito si basa su ciò che restituisce il resolver, quindi perché vedi il valore in / etc / hosts restituito mentre il resolver controlla prima il file hosts, quindi esegue tutte le richieste DNS necessarie.

Quello che non credo sia toccato nella pagina man del nome host (basato sulla mia rilettura della pagina man da solo) è il motivo per cui le voci nei file non finiscono con un punto.

Tale convenzione viene utilizzata quando si tratta di record DNS. Il nome host e i file host non sono in realtà record DNS. Se stai configurando queste voci in bind da risolvere per le ricerche DNS, allora può entrare in gioco l'uso di un punto (dai un'occhiata a questa buona risorsa: http://www.zytrax.com/books/dns/apa/dot.html ).

Inoltre, tieni presente che tutti questi valori non vengono trasmessi dal sistema. Pertanto, se si desidera che un altro sistema acceda in base al nome di dominio completo, si basa sul file hosts su quell'altro sistema o manca le voci degli host in base alle ricerche DNS che il sistema esterno esegue sul nome di dominio completo per consentire che si risolva nuovamente al sistema.


Correlato, relativo al punto finale in /etc/hosts: serverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith

3

In risposta a

Cosa succede se il mio IP è dinamico (DHCP) e cambia di volta in volta? quale indirizzo dovrei usare come mio nome in / etc / hosts?

Vorrei sottolineare, in primo luogo, che / etc / hosts è una definizione statica di mappatura da nome a indirizzo per l'host su cui è installato e viene utilizzata SOLO da tale host per convertire il nome in indirizzo IP.

Quindi, ci sono 2 punti di vista da considerare: l'host "myname" e tutti gli altri.

Per quell'host "myhost", fai riferimento all'host corrente usando "localhost" (che è definito in / etc / hosts come 127.0.0.1) o aggiungi "myname" alla riga / etc / hosts che definisce localhost in modo che "myname 'si associa sempre a, bene, localhost. Così:

127.0.0.1 nomehost localhost

Quindi non importa quale indirizzo IP viene fornito dall'INTERFACCIA, avrai sempre un indirizzo che funziona (un ulteriore vantaggio è che non è necessario colpire l'hardware per parlare da "mio nome" a "mio nome").

Ora, per consentire ad ALTRI host di trovare "myhost" quando "myhost" ha un indirizzo IP dinamico, è necessario utilizzare DNS e detto server DNS deve gestire i mapping assegnati da DHCP. (Bene, ok, ci sono altre soluzioni a cui riesco a pensare, ma tutto ciò che mi viene in mente rientra nella categoria 'oltre lo sciocco', IMHO. Bene, ok, ci sono cose che puoi fare per l'host affinché l'IT dica al DNS dove si trova, ma questa è una domanda degna di un flusso di domande / risposte completamente diverso qui, IMHO)


2

/ etc / hostname e / etc / hosts sono semplici, ma anche non così semplici ...

Come configurare rapidamente Debian /etc/hostnamee/etc/hosts

1) Modifica / etc / hostname .

Ci sono 2 modi validi per configurarlo.

O fallo:

  • machine, ovvero un semplice nome di una parola per questo processore.
    Ad esempio, " joe" potrebbe essere il nome della macchina da te scelto.
    Nota che ciò richiederà un alias in / etc / hosts, ulteriormente descritto di seguito.

O

  • machine.domain.net, ovvero un nome di dominio completo (FQDN).
    Ad esempio ' joe.xyz.com'.
    (Questo presuppone che tu abbia un record DNS 'A' dell'host che punta da joe.xyz.com all'indirizzo IP di joe, cioè sul tuo computer chiamato joe. Normalmente imposti questo record dove hai acquistato il tuo nome di dominio. un momento.)

Una volta impostato / etc / hostname , il passaggio successivo è ottenere i comandi hostname --all-fqdne dnsdomainnamefunzionare correttamente, in questo ordine, come segue:

2) Modifica / etc / hosts .

Al suo interno ha una riga per il nome FQDN di questo host , ad esempio "machine.domain.net", preceduto dal suo indirizzo IP di questa macchina (possibilmente da un server di indirizzi IP dinamico) come questo:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • Per prima cosa, nota che qui non sono importanti le lettere maiuscole o minuscole . Suggerimento: avere alcuni tappi, tuttavia, ci consente di notare da dove provengono le cose nei passaggi successivi. Quindi ho capitalizzato J oe.

  • Inoltre, affinché il semplicehostname (es. / Etc / hostname = 'machine') generi correttamente un nome di dominio completo, un alias chiamato 'machine' deve essere presente in / etc / hosts. Ecco perché l'alias joe è lì. (A proposito, va bene avere quell'alias anche se non lo stai usando.) Altrimenti questo alias non è necessario, né usato.

  • Si noti inoltre che "domain.net" deve essere risolvibile, ovvero deve esistere un record A per esso nel DNS. Questo è ciò che viene chiamato " risolvibile " (ovvero dal risolutore DNS).

3) Ora installa queste nuove impostazioni da / etc / hostname e / etc / hosts nel kernel, eseguendo:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) Test hostname

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

O

$ hostname
joe.xyz.com

Suggerimenti:

  • Nota che questo non è quello che è / etc / hostname attualmente, come se lo modifichi di nuovo adesso, ma piuttosto ciò che è stato letto in precedenza dallo script /etc/init.d/hostname.sh, probabilmente a seguito di un riavvio.

  • Nota anche che 'j' è minuscola, quindi questo suggerisce che proviene da / etc / hostname, non / etc / hosts.

5) Test FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6) Test nome dominio DNS

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

Ora questo dovrebbe facilitare la configurazione di un server Web ed e-mail.

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.