Format de / etc / hosts sous Linux (différent de Windows?)

22

Collé sous cette question est un échantillon d'un /etc/hostsfichier à partir d'un Linux (CentOS) et d'une machine Windows. Le fichier Linux a deux entrées à onglets après l'adresse IP (c'est-à-dire localhost.localdomain localhost) et Windows n'en a qu'une. Si je veux modifier le fichier hosts dans Windows pour avoir le nom de la machine (etest) au lieu de localhost, je remplace simplement le mot localhost par le nom de la machine que je veux. La machine n'a pas besoin de faire partie d'un domaine.

Dans une machine Linux, les deux entrées localhost.localdomainet localhostsemblent indiquer que j'aurai besoin que la machine fasse partie d'un domaine. Est-ce vrai?

Puis-je simplement modifier les deux entrées pour etestqu'elles s'affichent:

127.0.0.1       etest etest

ou dois-je remplacer une entrée par un nom de domaine?

De plus, veuillez me faire savoir à quoi /etc/hostssert la deuxième ligne du fichier sur la machine Linux.

::1     localhost6.localdomain6 localhost6

hosts fichier sur une machine Linux:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

hosts fichier sur une machine Windows:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
Thomas
la source
J'ai récemment posé une question similaire, mais elle n'a pas suscité beaucoup d'intérêt. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Mais celui-ci est mieux écrit.
Faheem Mitha

Réponses:

13

Vous souhaitez toujours que l'adresse 127.0.0.1 soit d'abord résolue en localhost. S'il existe un domaine, vous pouvez également l'utiliser, mais assurez-vous que localhost est répertorié en second. Si vous souhaitez ajouter des alias pour votre machine qui rechercheront l'adresse de bouclage, vous pouvez continuer à les ajouter en tant que valeurs séparées par des espaces sur cette ligne. La spécification d'un domaine ici est facultative, mais ne supprimez pas "localhost" des options.

Caleb
la source
5
":: 1" est également l'équivalent ipv6 de 127.0.0.1 (qui est pour ipv4).
XQYZ
Cela signifie-t-il qu'il serait plus sage d'avoir une ligne comme celle-ci au lieu de celle que j'ai publiée avec ma question? J'ai inclus un alias séparé par un espace (etest mon nom d'hôte) en laissant intact le localhost.localdomain localhost. Sinon, veuillez publier un exemple de ce que vous proposez comme entrée idéale pour inclure le nom d'hôte de ma machine et avoir des entrées localhost dans le fichier hosts.
Thomas
1
127.0.0.1 localhost.localdomain localhost etest
Thomas
1
@Thomas: Votre exemple est tel qu'il devrait être. Allez-y, et si vous devez ajouter plus d'alias pour les tests (par exemple avec le nom d'hôtes virtuels dans apache), vous pouvez les ajouter à la ligne.
Caleb
22

Le format de /etc/hostssous Linux et Windows est le même:

IP address        hostname [hostalias]...

où les crochets sont la manière habituelle d'indiquer que quelque chose est facultatif (ne les tapez pas réellement) et les points ( ...) signifient qu'il peut y en avoir plus d'un.

Vous ne devriez pas avoir à intégrer votre hôte à un domaine. Essayez-le et voyez. Mais ce serait une bonne idée d'utiliser .localdomainsi vous n'avez pas un vrai nom de domaine. Cela peut rendre la résolution du nom d'hôte un peu plus rapide grâce à l' ndotsoption dans /etc/resolv.conf.

Notez que dans ce sens, domaine signifie domaine DNS (comme google.comou stackexchange.com), pas un domaine Windows ou quelque chose comme ça.

La ligne commençant par ::1est pour IPv6 . ::1est comme 127.0.0.1sous le nouveau schéma d'adressage. Exécutez ifconfig loet vous devriez voir qu'il a deux adresses. Notez l'entrée commençant par inet6.

$ ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
...

Consultez la page de manuel hosts (5) pour plus de détails.

Mikel
la source
(...) signifie qu'il peut y en avoir plusieurs: les extras sont-ils délimités par des espaces, des virgules ou les deux?
Guy
1
les espaces. Je suppose que pour être plus correct, c'est hostname [hostalias[,hostalias]*].
Mikel
6

Je ne peux pas parler de la façon dont Windows peut différer de Linux, mais le format de la définition de la machine locale affecte les résultats que vous obtiendrez à partir de la commande 'hostname'.

Le format que je trouve le plus cohérent est celui-ci:

127.0.0.1 etest.mydomain.com etest localhost

La chose importante que j'ai trouvée est d'avoir le FQDN d'abord et les alias, dans n'importe quel ordre, après.

Si vous essayez de réorganiser les noms après l'adresse IP, puis en utilisant les commandes 'hostname -s' (nom court) et 'hostname -f' (nom de domaine complet ou FQDN), vous verrez ce que je veux dire. Ça devrait ressembler a quelque chose comme ca:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

'hostname' en lui-même devrait retourner le nom que vous avez entré pour l'hôte dans /etc/conf.d/hostname ou / etc / hostname (l'emplacement du fichier varie selon la distribution, mais doit être trouvé sous / etc quelque part).

Si vous changez l'ordre des noms, vous pouvez constater que "hostname -f" vous donne des réponses comme "localhost" ou "hostname: system error". Le seul arrangement que j'ai trouvé qui fonctionne correctement est de mettre le FQDN en premier.

J'ai toujours défini la ligne d'adresse locale IPv6 (:: 1) de la même manière, c'est-à-dire:

::1 etest.mydomain.com etest localhost

Je sais que certaines distributions définissent le nom IPv6 sur quelque chose comme ip6-localhost. Je n'utilise pas encore vraiment IPv6, donc je ne peux pas commenter quels seraient les meilleurs paramètres pour cette ligne. Je peux simplement dire que dans un réseau IPv4, cela fonctionne pour avoir les deux lignes avec les mêmes noms.

Angelo Babudro
la source
0

Conserver le fichier des hôtes esclaves en tant que

127.0.0.1 localhost

Conserver le fichier hôte maître en tant que

<private ip> master
<private ip> slave1
<private ip> slave2

100% de travail

Puneet
la source
Veuillez clarifier votre réponse et utiliser une mise en forme appropriée. Vous n'avez pas besoin de mettre votre nom dans votre réponse.
Lambert