Quel est le but de / etc / hosts?

21

Si je comprends bien, le hostsfichier est l'une des nombreuses installations système qui aident à adresser les nœuds de réseau dans un réseau informatique. Mais que devrait-il y avoir à l'intérieur? Lorsque j'installe Ubuntu par défaut

127.0.0.1 localhost 

sera là. Pourquoi?

  • Comment /etc/hostsfonctionne dans le cas de systèmes JVM comme Cassandra?
  • Quand est l'alternative DNS, je suppose que ce n'est pas sur un seul ordinateur?
MikiBelavista
la source
Mon /etc/hostscontient 127.0.0.2 mycouchdb bookmarkdb myothercouchappet 127.0.0.3 myapachi websiteje les utilise pour m'aider avec mon développement en cours d'exécution sur ma machine locale. J'ai 3 services à l'écoute sur le port 80. Je ne veux pas les mettre sur le DNS, car ils ne sont que locaux.
ctrl-alt-delor
As-tu essayé man 5 hosts?
Rétablir Monica - M. Schröder
Linux n'a-t-il pas de page de manuel pour cela où il est expliqué en détail? C'est la question la plus fondamentale.
Rob

Réponses:

45

Le fichier a /etc/hostscommencé dans l'ancien temps de DARPA en tant que fichier de résolution pour tous les hôtes connectés à Internet (avant l'existence du DNS). Il a la priorité maximale, ce qui signifie que ce fichier est préféré à tout autre système de noms. 1

Cependant, en tant que fichier unique, il ne s'adapte pas bien: la taille du fichier devient trop grande très rapidement. C'est pourquoi le système DNS a été développé, un système de noms distribué hiérarchique. Il permet à tout hôte de trouver efficacement l'adresse numérique d'un autre hôte.

Le concept très ancien du /etc/hostsfichier est très simple, juste une adresse et un nom d'hôte:

127.0.0.1      localhost

pour chaque ligne. Il s'agit d'une simple liste de paires adresse-hôte. 2

Sa principale utilisation actuelle consiste à contourner la résolution DNS. Une correspondance trouvée dans le /etc/hostsfichier sera utilisée avant toute entrée DNS. En fait, si le nom recherché (comme localhost) se trouve dans le fichier, aucune résolution DNS ne sera effectuée.


1 Eh bien, l'ordre de résolution des noms est en fait défini dans /etc/nsswitch.conf, qui a généralement cette entrée:

hosts:          files dns

ce qui signifie "essayer les fichiers ( /etc/hosts); et s'il échoue, essayez DNS".

Mais cet ordre pourrait être modifié ou élargi.


2 (de nos jours) Le fichier hosts contient des lignes de texte constituées d'une adresse IP dans le premier champ de texte suivi d'un ou plusieurs noms d'hôtes. Chaque champ est séparé par un espace blanc - les tabulations sont souvent préférées pour des raisons historiques, mais des espaces sont également utilisés. Des lignes de commentaires peuvent être incluses; ils sont indiqués par un octothorpe (#) à la première position de ces lignes. Les lignes entièrement vides du fichier sont ignorées. Par exemple, un fichier d'hôtes type peut contenir les éléments suivants:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Cet exemple contient des entrées pour les adresses de bouclage du système et leurs noms d'hôte, la première ligne est un contenu par défaut typique du fichier hosts. La deuxième ligne a plusieurs noms supplémentaires (probablement uniquement valables dans les systèmes locaux). L'exemple montre qu'une adresse IP peut avoir plusieurs noms d'hôtes (localhost et loopback), et qu'un nom d'hôte peut être mappé à la fois aux adresses IP IPv4 et IPv6, comme indiqué sur les première et deuxième lignes respectivement. Un nom ( mycomputer.lan) peut se résoudre en plusieurs adresses ( 192.168.0.8 10.0.0.27). Cependant, dans ce cas, lequel est utilisé dépend des routes (et de leurs priorités) définies pour l'ordinateur.

Certains systèmes d'exploitation plus anciens n'avaient aucun moyen de signaler une liste d'adresses pour un nom donné.

Isaac
la source
5

L'utilisation du fichier / etc / hosts pour donner un nom lisible à un système local dans un environnement de bureau est parfaitement raisonnable. Le fichier hosts est idéal à utiliser dans un réseau domestique ou même dans un environnement de petite entreprise. Cela ne peut pas être du côté public comme l'adressage Internet - alors vous avez besoin du DNS. Si le réseau local est suffisamment grand, ou simplement coupé dans différents sous-réseaux, ou pour toute autre raison utile, le DNS est préféré.

Le fichier des hôtes locaux et le DNS sont gérés avec une priorité différente afin qu'il n'y ait jamais de conflits.

francois P
la source
4
Je ne serais pas d'accord sur les conflits, j'ai eu un certain nombre de problèmes difficiles à déboguer car l'hôte-provision-by-group-A a laissé des /etc/hostsentrées périmées qui à l'avenir ont provoqué l'échec des opérations par groupe-B (mon groupe) , et nous avons fini par mettre quelque chose pour assainir le contenu de/etc/hosts
thrig
des conflits à l'intérieur du fichier peuvent exister bien sûr mais c'est la faute du propriétaire de la machine :)
francois P
2
Je suis également en désaccord avec le fait de ne jamais avoir de conflits. J'ai dû déboguer des erreurs très étranges en raison d'entrées d'hôte obsolètes en conflit avec les modifications DNS.
Rui F Ribeiro
@thrig: Le problème est peut-être que vos groupes sont trop grands pour utiliser efficacement / etc / hosts. Fonctionne parfaitement bien pour les 5 machines (en ce moment) sur mon réseau domestique.
jamesqf
Eh bien, le système ne pense pas qu'il y ait un conflit, il a des instructions claires quant à la priorité des choses: p
StarWeaver
3

sous linux, j'ose dire qu'il devrait toujours y avoir au moins 127.0.0.1 localhostdans le fichier /etc/hosts ainsi que l'adresse IPv6 correspondante pour localhost .

Il s'agit simplement d'une résolution de nom d'hôte vers une adresse IPv4 ou IPv6 numérique. Lorsque vous essayez de vous connecter à (a) unix.stackexchange.com quelque part sur terre qui n'est probablement pas près de chez vous, ou (b) myotherpc sur le réseau local de votre domicile, c'est l'un /etc/hostsou l' autre des serveurs de noms de domaine (DNS) qui fait la résolution de l'hôte, donc lorsque vous tapez unix.stackexchage.com qui, en tant qu'humain, est ce dont vous vous souciez, vous n'avez pas à vous souvenir de 185.53.179.7 , ce que l'ordinateur a vraiment besoin de savoir.

Comme cela a été souligné, sous Linux, il existe /etc/nsswitchgénéralement un paramètre qui définit l'ordre de résolution du nom d'hôte, ce qui signifie vérifier DNS d'abord avant de vérifier NIS, puis enfin vérifier le fichier, /etc/hostssinon hôte non trouvé

Comment vous gérez la vérification de la commande et ce que / où / qui gère le service DNS ou NIS dépend de vous, ou vous pouvez tout remplacer en modifiant / etc / nsswitch pour uniquement vous enregistrer /etc/hostset ne jamais vérifier avec DNS ou NIS ou ...

Pour un réseau domestique simple de quelques ordinateurs, disons 2 à N, un administrateur éditerait simplement /etc/hostssur chaque ordinateur pour être correct, serait plus facile, plus rapide et moins cher que de configurer un serveur de noms de domaine ou un autre service pour avoir un emplacement maître ou l'autorité de faire la résolution du nom d'hôte à l'adresse IP.

pour linux web recherche l'histoire et la raison derrière localhost. Beaucoup de choses sous Linux dépendent du nom localhost qui se résout en 127.0.0.1 et si cela ne se produit pas, cela causera des problèmes, et cette définition de localhost se produira / devrait se produire dans un fichier système local tel que / etc / hosts.

/etc/hostsest par défaut généralement le dernier mot et la dernière chose pour que le système d'exploitation Linux se rabatte sur la résolution du nom d'hôte. sous Windows XP et 7, le fichier correspondant est C:\Windows\System32\drivers\etc\lmhosts Je ne connais pas Windows 8 ou 10.

Ron
la source
Une utilisation typique du fichier hosts, en particulier sous Windows, est de détourner la tentative d'un programme de «rappeler à la maison» vers un périphérique nul. Loin de moi l'idée de suggérer que cela pourrait être de contrecarrer un contrôle de légalité.
Laurence Payne
Je n'ai toujours pas trouvé l'éditeur sur mon iPhone qui me permet d'éditer / etc / hosts ... alors je lance DNS sur mon lan
ivanivan