web-dev-qa-db-fra.com

Quel est le but de / etc / hosts?

Si je comprends bien, le fichier hosts est l'une des nombreuses installations système qui aident à adresser les nœuds du réseau dans un réseau informatique. Mais qu'est-ce qui devrait y être? Lorsque j'installe Ubuntu par défaut

127.0.0.1 localhost 

sera là. Pourquoi?

  • Comment /etc/hosts fonctionne 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?
23
MikiBelavista

Le fichier /etc/hosts a commencé 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.

L'ancien très concept du /etc/hosts le fichier 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 d'adresse-hôte.2

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


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 des 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ôte. 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ôte (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 résoudre 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 un liste d'adresses pour un nom donné.

48
Isaac

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.

5
francois P

sous linux, oserais-je dire qu'il devrait toujours y avoir au moins 127.0.0.1 localhost dans 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) nix.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 à la maison, c'est soit /etc/hosts ou un serveur de noms de domaine (DNS) qui fait la résolution de l'hôte, donc quand vous tapez nix.stackexchage.com qui en tant qu'humain est ce dont vous vous souciez, vous n'avez pas à vous souvenir - 185.53.179.7 car c'est ce que l'ordinateur a vraiment besoin de savoir.

Comme cela a été souligné, sous linux il y a /etc/nsswitch généralement 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/hosts sinon hôte non trouvé

Comment vous gérez la vérification des commandes 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 enregistrer uniquement /etc/hosts et ne jamais vérifier avec DNS ou NIS ou ...

Pour un réseau domestique simple de quelques ordinateurs, disons 2 à N, un administrateur modifierait simplement /etc/hosts sur 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 une autorité pour effectuer la résolution du nom d'hôte en adresse IP.

pour linux recherche sur le web l'historique et la raison de 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/hosts est par défaut généralement le dernier mot et la dernière chose que le système d'exploitation Linux doit utiliser pour 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.

3
ron