Un système informatique (Linux) n'a-t-il qu'un seul nom d'hôte?

15

hostname est utilisé pour afficher le nom DNS du système et pour afficher ou définir son nom d'hôte ou son nom de domaine NIS.

Un système informatique (Linux) n'a-t-il qu'un seul nom d'hôte?

Dans l'hébergement virtuel, plusieurs noms d'hôte peuvent être résolus dans différents répertoires racine d'un serveur Web. Si un système informatique (Linux) ne peut avoir qu'un seul nom d'hôte, comment l'hébergement virtuel est-il possible?

Merci.

StackExchange pour tous
la source
Les enregistrements DNS A ou AAA pointent vers la même adresse IP pour plusieurs domaines. Le nom d'hôte de la machine n'est pas nécessairement important.
RubberStamp
(1) La sortie de hostnamejamais utilisée pour résoudre le nom d'hôte en adresse IP? (2) A signifie adresse IPv4, AAAA IPv6. Qu'est-ce que AAA?
StackExchange for All
Les services mDNS, tels que avahidépendent du nom d'hôte de la machine. Dans ce cas, hostname.localse résoudrait à l'adresse IP locale de la machine. Je vois que quelqu'un a écrit une réponse qui est une extension de mon premier commentaire ... trop simultanée pour les notifications de mon navigateur.
RubberStamp
AAA est une faute de frappe courte 'A'
RubberStamp
L'hôte virtuel n'a rien à voir avec le nom d'hôte. Cela dépend uniquement du comportement du serveur Web. Le serveur répond différemment aux différents champs Host de l'en-tête de requête HTTP. Je ne pense pas qu'un serveur Web typique ferait quoi que ce soit lié au DNS ou au nom d'hôte pour offrir une fonctionnalité d'hôte virtuel.
炸鱼 薯条 德里克

Réponses:

26

Oui et non. Ce sont deux choses distinctes appelées noms d'hôtes.

Le nom d'hôte "interne" est essentiellement une chaîne conservée par le noyau. C'est celui renvoyé par la hostnamecommande (ou l' gethostname()appel) et il est unique au sein d'un système (*) .

Il est principalement utilisé lorsqu'un programme souhaite générer un identifiant pour le système sur lequel il s'exécute. Par exemple, \hdans Bash PS1s'étend au nom d'hôte. De même, les fichiers journaux de style syslog incluent également le nom d'hôte dans les entrées de journal.

(* Bien que Stephen Kitt commente, les espaces de noms peuvent être utilisés pour montrer différents noms d'hôtes aux processus sur le même système. Cela est principalement utilisé pour les conteneurs, qui essaient d'agir comme s'ils étaient des systèmes distincts.)

Ensuite, il y a aussi des noms DNS qui sont utilisés par d'autres systèmes pour rechercher l'adresse IP d'un autre. Il peut y avoir plusieurs noms DNS qui pointent vers la même adresse IP et donc le même hôte.

Le nom d'hôte interne et les noms DNS n'ont pas besoin d'être identiques. Supposons que quelqu'un ait un serveur Web qu'il a décidé d'appeler orange(*) , avec l'adresse IP 192.0.2.9. Il pourrait servir deux domaines différents et le DNS serait configuré pour avoir www.example.orget www.example.compointer vers 192.0.2.9, tandis que le nom d'hôte interne du système pourrait être orange.example.orgou simplement orange. Dans ce cas, la configuration DNS aurait généralement également une recherche inversée sur le 192.0.2.9point de retour au nom orange.example.org, mais il n'y a rien pour forcer cela.

(* parce qu'ils aiment nommer leurs serveurs d'après fruit. Quelqu'un pourrait utiliser webserver1tel ou tel, mais le fait est qu'il n'a pas besoin d'être nommé d'après l'un des domaines réels.)

En plus de cela, l'hébergement virtuel nécessite que le navigateur indique au serveur Web le nom du site auquel il a tenté d'accéder. Sinon, le serveur ne saurait pas quel site virtuel le client a tenté d'atteindre. HTTP a l'en- Hosttête pour cela.


Ce qui brouille la distinction entre un nom DNS et le nom d'hôte interne est le protocole mDNS (implémenté par exemple par le démon avahi ) et d'autres protocoles de découverte. mDNS permet aux hôtes d'interroger tous les autres hôtes du même réseau pour obtenir des informations sur le nom et de rendre leurs propres noms d'hôtes visibles sur d'autres hôtes sans les configurer explicitement dans DNS.

ilkkachu
la source
Merci. (1) "la configuration DNS aurait généralement 192.0.2.9 point de retour au nom orange.example.org" La résolution n'obtient-elle pas l'adresse IP pour un nom d'hôte donné, pourquoi l'inverse? (2) La sortie de hostnamejamais utilisée pour résoudre le nom d'hôte en adresse IP?
StackExchange for All
(2) ... Lorsque vous configurez un réseau wifi local dans votre maison à partir d'un FAI à l'aide d'un routeur et d'un modem, les machines du réseau peuvent être identifiées par les sorties de leurs hostnamecommandes, n'est-ce pas? Le routeur agit-il comme un DNS pour résoudre les sorties hostnamevers des adresses IP privées dans le réseau?
StackExchange for All le
2
comme pour (1), il existe également des recherches inversées qui prennent l'adresse IP et renvoient un nom. (Pour un système avec un seul nom et une seule adresse, vous voudriez que les deux se résolvent
mutuellement
3
Les petits réseaux peuvent utiliser mDNS. Pour le meilleur ou pour le pire, il permet aux propriétaires de systèmes de choisir leurs propres noms d'hôte, accessibles par d'autres systèmes sur le réseau local, sans avoir besoin de s'inscrire auprès d'un serveur DNS.
Mark Plotnick
2
Dans de nombreux réseaux domestiques, le routeur local agit comme un résolveur DNS. Les hôtes envoient leur nom d'hôte lorsqu'ils demandent une adresse à l'aide de DHCP, et le routeur se souvient de ce nom et le résout pour tous les hôtes du réseau. Comme Mark et RubberStamp le mentionnent, il y a aussi Bonjour (implémenté dans Avahi) qui permet la découverte de services sur le LAN (imprimantes en particulier). Notez également que les hôtes peuvent avoir plusieurs adresses IP et que les noms d'hôtes sont désormais dotés d'espaces de noms afin que les processus puissent voir différents noms d'hôtes sur le même hôte.
Stephen Kitt
7

Un système informatique (Linux) n'a-t-il qu'un seul nom d'hôte?

Non.

[J'ignorerai complètement que n'importe qui peut donner à votre hôte le nom qu'il souhaite en ayant un enregistrement DNS pointant vers son adresse, ou que vous pouvez avoir plus d'un alias pour lui /etc/hosts, ou toute considération philosophique sur ce qu'est vraiment un nom ]

Sur un système Linux, le nom d'hôte est simplement une ressource par processus (l '"espace de noms UTS") hérité par défaut de ses enfants, mais peut être disjoint avec unshare(2)ou clone(2)en utilisant l' CLONE_NEWUTSindicateur. Vous devriez regarder la namespaces(7)page de manuel.

Tout comme les pids, les numéros de port, les points de montage, etc., le nom d'hôte n'est plus un identificateur global et il pourrait être virtualisé de la même manière que l'espace d'adressage (mémoire virtuelle) ou la table de descripteurs de fichiers d'un processus.

Dans l'hébergement virtuel, plusieurs noms d'hôte peuvent être résolus dans différents répertoires racine d'un serveur Web. Si un système informatique (Linux) ne peut avoir qu'un seul nom d'hôte, comment l'hébergement virtuel est-il possible?

L'hébergement virtuel est quelque chose de complètement différent, et cela se fait généralement en configurant un enregistrement DNS générique (par exemple. *.foo.com=> 13.13.13.13) Avec un serveur Web fonctionnant sur 13.13.13.13et servant différents répertoires / ressources en fonction de la valeur de l'en- Host:tête http [1] (qui est hautement configurable ; la plupart des serveurs Web peuvent servir différentes ressources en fonction de n'importe quel en- tête http, pas seulement Host:). Dans tout cela, le système d'exploitation du système sur lequel le serveur Web s'exécute ne joue aucun rôle.

[1] ou sur la valeur de l' indication du nom du serveur dans le cas de https, qui permet au même serveur Web d'utiliser des certificats différents pour différents hôtes virtuels.

Oncle Billy
la source
Je dois être en désaccord avec vous à ce sujet. Pour l'hébergement virtuel, nous avons généralement un ensemble spécifique d'enregistrements cname pointant vers l'hôte unique. Nous n'utilisons pas d'enregistrement DNS générique car nous avons de nombreux systèmes dans le domaine nécessitant des hôtes virtuels. À l'exception des espaces de noms UTS (quelle est leur utilisation, de toute façon?), Vous avez hostnamectl signalant un seul nom d'hôte pour un serveur donné. DNS et hostnamectl sont orthogonaux et ont peu à voir l'un avec l'autre.
doneal24
1
@ DougO'Neal Avec quoi êtes-vous en désaccord? Que les enregistrements DNS génériques sont utilisés de la façon dont je le décris? Ils sont largement utilisés comme ça (désolé pour le jeu de mots), que cela vous plaise ou non. Que les informations uts sont virtualisées par processus sous Linux? C'est simplement ainsi. En ce qui concerne l'idée que les espaces de noms ne sont utilisés / doivent être utilisés que par des solutions de conteneurisation / virtualisation en conserve (comme suggéré dans l'autre réponse), désolé mais c'est "seules les filles jouent avec des poupées" ou "les transmissions manuelles ne sont utilisées que dans les camions lourds" qualité ;-)
Oncle Billy
1

Vous définissez généralement un seul nom d'hôte dans / etc / hostname. Et, vous définissez de nombreux noms de domaine dans / etc / hosts.

Les espaces de noms UTS permettent à un seul système d’avoir des noms d’hôte et de domaine différents pour différents processus. Pour plus d'informations: https://en.wikipedia.org/wiki/Linux_namespaces . Ainsi, il est absolument possible d'avoir plusieurs noms d'hôte et noms de domaine pour le même système. Par exemple, le conteneur Docker dans le même hôte a un nom d'hôte différent du système hôte.

Uddhav Gautam
la source