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?
/etc/hosts
fonctionne dans le cas de systèmes JVM comme Cassandra?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é.
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.
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.