Un sistema informatico (Linux) ha un solo nome host?


15

hostname viene utilizzato per visualizzare il nome DNS del sistema e per visualizzare o impostare il nome host o il nome dominio NIS.

Un sistema informatico (Linux) ha un solo nome host?

Nell'hosting virtuale, diversi nomi host possono essere risolti in diverse directory principali in un server Web. Se un sistema informatico (Linux) può avere un solo nome host, come è possibile l'hosting virtuale?

Grazie.


I record DNS A o AAA puntano allo stesso indirizzo IP per più domini. Il nome host della macchina non è necessariamente importante.
RubberStamp,

(1) L'output di hostnamemai utilizzato nella risoluzione del nome host in indirizzo IP? (2) A indica l'indirizzo IPv4, AAAA IPv6. Che cos'è AAA?
StackExchange per tutto l'

servizi mDNS, come avahidipendono dal nome host della macchina. In tal caso, hostname.localrisolverebbe l'indirizzo IP locale della macchina. Vedo che qualcuno ha scritto una risposta che è un'espansione del mio primo commento ... troppo simultanea per le notifiche del mio browser.
RubberStamp,

AAA è un refuso 'A' corto
RubberStamp,

L'host virtuale non ha nulla a che fare con il nome host. Dipende esclusivamente dal comportamento del web server. Il server risponde in modo diverso al diverso campo Host dell'intestazione della richiesta HTTP. Non penso che il tipico server Web farebbe qualsiasi cosa relativa al DNS o al nome host per offrire funzionalità di host virtuale.
炸鱼 薯条 德里克

Risposte:


26

Sì e no. Sono due cose distinte chiamate nomi host.

Il nome host "interno" è fondamentalmente una stringa mantenuta dal kernel. Questo è quello restituito dal hostnamecomando (o dalla gethostname()chiamata) ed è unico all'interno di un sistema (*) .

Viene utilizzato principalmente quando un programma desidera generare un identificatore per il sistema su cui è in esecuzione. Ad esempio \hin Bash si PS1espande al nome host. Allo stesso modo, i file di registro in stile syslog includono anche il nome host nelle voci di registro.

(* Anche se come commenta Stephen Kitt, gli spazi dei nomi possono essere usati per mostrare nomi host diversi ai processi sullo stesso sistema. È usato principalmente per i contenitori, che cercano di agire come se fossero sistemi distinti.)

Quindi ci sono anche nomi DNS che vengono utilizzati da altri sistemi per cercare l'indirizzo IP di un altro. Potrebbe esserci più di un nome DNS che punta allo stesso indirizzo IP e quindi allo stesso host.

Il nome host interno e i nomi DNS non devono necessariamente essere gli stessi. Supponiamo che qualcuno abbia un server web che abbia deciso di chiamare orange(*) , con l'indirizzo IP 192.0.2.9. Potrebbe servire due domini diversi e il DNS verrebbe impostato per avere www.example.orged www.example.comentrambi farebbero riferimento a 192.0.2.9, mentre il nome host interno del sistema potrebbe essere orange.example.orgo solo orange. In tal caso, la configurazione DNS di solito avrebbe anche una ricerca inversa sul 192.0.2.9punto di ritorno al nome orange.example.org, ma non c'è nulla che lo costringa.

(* perché a loro piace nominare i loro server come frutto. Qualcuno potrebbe usare webserver1o simili, ma il punto è che non ha bisogno di essere nominato dopo uno dei domini reali.)

Inoltre, l'hosting virtuale richiede che il browser indichi al server Web il nome del sito a cui ha tentato di accedere. Altrimenti il ​​server non saprebbe quale sito virtuale il client ha tentato di raggiungere. HTTP ha l' Hostintestazione per quello.


Ciò che confonde la distinzione tra un nome DNS e il nome host interno è il protocollo mDNS (implementato ad esempio dal demone avahi ) e altri protocolli di rilevamento. mDNS consente agli host di interrogare tutti gli altri host sulla stessa rete per informazioni sui nomi e di rendere visibili i loro nomi host su altri host senza configurarli esplicitamente in DNS.


Grazie. (1) "la configurazione DNS di solito dovrebbe 192.0.2.9 tornare al nome orange.example.org" La risoluzione non ottiene l'indirizzo IP per un determinato nome host, perché il contrario? (2) L'output di hostnamemai utilizzato nella risoluzione del nome host in indirizzo IP?
StackExchange per tutto l'

(2) ... Quando si configura una rete wifi locale in casa da un ISP utilizzando un router e un modem, le macchine nella rete possono essere identificate dagli output dei loro hostnamecomandi, giusto? Il router si comporta come un DNS per risolvere gli output degli hostnameindirizzi IP privati ​​nella rete?
StackExchange per tutto l'

2
come per (1), ci sono anche ricerche inverse che prendono l'indirizzo IP e restituiscono un nome. (Per un sistema con un solo nome e un singolo indirizzo, si vorrebbe che entrambi si risolvessero nell'altro, solo per motivi di chiarezza)
ilkkachu,

3
Potrebbero essere in uso reti di piccole dimensioni mDNS. Nel bene o nel male, consente ai proprietari di sistemi di scegliere i propri nomi host, accessibili da altri sistemi sulla rete locale, senza la necessità di registrarsi con un server DNS.
Mark Plotnick,

2
In molte reti domestiche, il router locale funge da resolver DNS. Gli host inviano il loro nome host quando richiedono un indirizzo tramite DHCP e il router ricorda quel nome e lo risolve per tutti gli host sulla rete. Come menzionano Mark e RubberStamp, c'è anche Bonjour (implementato in Avahi) che consente il rilevamento di servizi sulla LAN (in particolare le stampanti). Si noti inoltre che gli host possono avere più indirizzi IP e che i nomi host sono ora spaziati in modo che i processi possano vedere nomi host diversi sullo stesso host.
Stephen Kitt,

7

Un sistema informatico (Linux) ha un solo nome host?

No.

[Ignorerò completamente che chiunque può dare al tuo host il nome che preferisce con un record DNS che punta al suo indirizzo o che puoi avere più di un alias per esso in /etc/hosts , o qualsiasi considerazione filosofica su cosa sia davvero un nome ]

Su un sistema Linux, il nome host è semplicemente una risorsa per processo (lo "spazio dei nomi UTS") che viene ereditato dai suoi figli per impostazione predefinita, ma che potrebbe essere disgiunto da unshare(2)o clone(2)usando il CLONE_NEWUTSflag. Dovresti guardare nella namespaces(7)manpage.

Proprio come pid, numeri di porta, punti di montaggio, ecc. Il nome host non è più un identificatore globale e potrebbe essere virtualizzato esattamente come lo spazio degli indirizzi (memoria virtuale) o la tabella dei descrittori di file di un processo.

Nell'hosting virtuale, diversi nomi host possono essere risolti in diverse directory principali in un server Web. Se un sistema informatico (Linux) può avere un solo nome host, come è possibile l'hosting virtuale?

L'hosting virtuale è qualcosa di completamente diverso, e di solito viene fatto configurando un record DNS jolly (ad es. *.foo.com=> 13.13.13.13) Con un server Web in esecuzione 13.13.13.13e che serve directory / risorse diverse in base al valore dell'intestazione http Host:[1] (che è altamente configurabile ; la maggior parte dei server Web è in grado di servire risorse diverse in base a qualsiasi intestazione http, non solo Host:). In tutto ciò, il sistema operativo del sistema su cui è in esecuzione il server Web non fa parte.

[1] o sul valore dell'indicazione del nome del server in caso di https, che consente allo stesso server web di utilizzare certificati diversi per host virtuali diversi.


Non sono d'accordo con te su questo. Per l'hosting virtuale, generalmente abbiamo un set specifico di record cname che puntano al singolo host. Non utilizziamo un record DNS con caratteri jolly poiché disponiamo di molti sistemi all'interno del dominio che richiedono host virtuali. Escludendo gli spazi dei nomi UTS (quanto è ampiamente utilizzato questo?), Hai hostnamectl che riporta un singolo nome host per un determinato server. DNS e hostnamectl sono ortogonali e hanno poco a che fare l'uno con l'altro.
doneal24,

1
@ DougO'Neal Con cosa non sei d'accordo? Che i record DNS con caratteri jolly sono utilizzati nel modo in cui li descrivo? Sono usati selvaggiamente in quel modo (scusate il gioco di parole), che vi piaccia o no. Che le informazioni uts sono virtualizzate per processo in linux? È semplicemente così. Per quanto riguarda l'idea che gli spazi dei nomi vengano utilizzati / utilizzati solo da soluzioni di containerizzazione / virtualizzazione in scatola (come suggerito nell'altra risposta), mi dispiace ma è "solo le ragazze giocano con le bambole" o "le trasmissioni manuali vengono utilizzate solo in camion pesanti" qualità ;-)
Zio Billy,

1

Di solito imposti un singolo nome host in / etc / hostname. E, hai impostato molti nomi di dominio in / etc / hosts.

Gli spazi dei nomi UTS consentono a un singolo sistema di avere nomi host e di dominio diversi per processi diversi. Per maggiori informazioni: https://en.wikipedia.org/wiki/Linux_namespaces . Quindi, è assolutamente possibile avere più nomi host e nomi di dominio per lo stesso sistema. Ad esempio, il contenitore docker all'interno dello stesso host ha un nome host diverso rispetto al sistema host.

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.