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.
hostname
jamais 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?avahi
dépendent du nom d'hôte de la machine. Dans ce cas,hostname.local
se 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.Réponses:
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
hostname
commande (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,
\h
dans BashPS1
s'é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 IP192.0.2.9
. Il pourrait servir deux domaines différents et le DNS serait configuré pour avoirwww.example.org
etwww.example.com
pointer vers192.0.2.9
, tandis que le nom d'hôte interne du système pourrait êtreorange.example.org
ou simplementorange
. Dans ce cas, la configuration DNS aurait généralement également une recherche inversée sur le192.0.2.9
point de retour au nomorange.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
webserver1
tel 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-
Host
tê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.
la source
hostname
jamais utilisée pour résoudre le nom d'hôte en adresse IP?hostname
commandes, n'est-ce pas? Le routeur agit-il comme un DNS pour résoudre les sortieshostname
vers des adresses IP privées dans le réseau?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.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)
ouclone(2)
en utilisant l'CLONE_NEWUTS
indicateur. Vous devriez regarder lanamespaces(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.
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 sur13.13.13.13
et 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 seulementHost:
). 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.
la source
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.
la source