web-dev-qa-db-fra.com

Comment rendre une machine accessible à partir du LAN en utilisant son nom d'hôte

Voici les détails de la machine à laquelle je veux accéder en utilisant son nom d'hôte:

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

C'est une installation par défaut de Debian 6 (Squeeze), donc je n'ai encore rien manipulé.

Voici ce que j'obtiens d'une machine (exécutant Debian Unstable) essayant d'accéder à la machine ci-dessus:

$ ping hostname
ping: unknown Host hostname
$ ping hostname.company.local
ping: unknown Host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local
131
tshepang

Sur Internet, y compris les réseaux locaux, les machines s'appellent les unes les autres par adresses IP . Pour accéder à la machine B à partir de la machine A en utilisant le nom de la machine B, la machine A doit avoir un moyen de mapper le nom de B à son adresse IP. Il existe trois façons de déclarer des noms de machine sur A:

  • un fichier hôtes . Il s'agit d'un simple fichier texte qui mappe les noms aux adresses.
  • le système de nom de domaine (DNS) . Il s'agit de la méthode utilisée sur Internet mondial. Par exemple, lorsque vous chargez cette page dans un navigateur, la première chose que fait votre ordinateur est de faire une demande DNS pour connaître l'adresse de unix.stackexchange.com.
  • d'autres bases de données de noms telles que NIS , LDAP ou Active Directory . Celles-ci sont utilisées dans certains réseaux d'entreprise, mais pas très souvent (de nombreux réseaux qui utilisent NIS, LDAP ou AD pour les bases de données utilisateur utilisent DNS pour les noms de machine). Si votre réseau en utilise un, vous avez un administrateur réseau professionnel et vous devez lui demander quoi faire.

Il existe de nombreuses manières de les mettre en pratique; il est impossible de les couvrir tous. Dans cette réponse, je décrirai quelques situations courantes.

Fichier hôtes

La méthode du fichier hosts présente l'avantage de ne nécessiter aucune méthode spéciale. Cela peut être fastidieux si vous avez plusieurs machines, car vous devez mettre à jour chaque machine lorsque le nom d'une machine change. Cela ne convient pas si l'adresse IP de B est attribuée dynamiquement (de sorte que vous en obteniez une différente chaque fois que vous vous connectez au réseau).

Un fichier d'hôtes est une simple liste de lignes mappant des noms à des adresses IP. Cela ressemble à ceci:

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

Sur les systèmes Unix, le fichier hosts est /etc/hosts. Sous Windows, c'est c:\windows\system32\drivers\etc\hosts. Presque tous les systèmes d'exploitation que vous pouvez connecter à Internet ont un fichier similaire; Wikipedia a une liste .

Pour ajouter une entrée pour B dans le fichier hosts de A:

  1. Déterminez l'adresse IP de B. Sur B, exécutez la commande ifconfig (si la commande n'est pas trouvée, essayez /sbin/ifconfig). La sortie contiendra des lignes comme celle-ci:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    Dans cet exemple, l'adresse IP de B est 10.3.1.42. S'il y a plusieurs inet addr: lignes, choisissez celle qui correspond à votre carte réseau, jamais l'entrée lo ou un tunnel ou une entrée virtuelle.

  2. Modifiez le fichier d'hôtes sur A. Si A exécute un système Unix, vous devrez modifier /etc/hosts en tant que super utilisateur; voir Comment exécuter une commande en tant qu'administrateur système (root) .

DHCP + DNS sur les réseaux domestiques ou de petite entreprise

Cette méthode est de loin la plus simple si vous disposez de l'équipement requis. Vous n'avez besoin de configurer qu'un seul appareil et tous vos ordinateurs connaîtront les noms des autres. Cette méthode suppose que vos ordinateurs obtiennent leurs adresses IP via DHCP , qui est une méthode permettant aux ordinateurs de récupérer automatiquement une adresse IP lorsqu'ils se connectent au réseau. Si vous ne savez pas ce qu'est DHCP, c'est probablement le cas.

Si votre réseau a un routeur domestique , c'est le meilleur endroit pour configurer les noms des machines connectées à ce routeur. Tout d'abord, vous devez déterminer le adresse MAC de B. Chaque périphérique réseau a une adresse MAC unique. Sur B, exécutez la commande ifconfig -a (si la commande est introuvable, essayez /sbin/ifconfig -a). La sortie contiendra des lignes comme celle-ci:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

Dans cet exemple, l'adresse MAC est 01:23:45:67:89:ab. Vous devez choisir la ligne HWaddr qui correspond au port réseau connecté au routeur via un câble (ou la carte wifi si vous êtes connecté via wifi). Si vous avez plusieurs entrées et que vous ne savez pas laquelle est laquelle, branchez le câble et voyez quel périphérique réseau reçoit une adresse IP (inet addr ligne juste en dessous).

Maintenant, sur l'interface Web de votre routeur, recherchez un paramètre comme "DHCP". Le nom et l'emplacement du paramètre dépendent entièrement du modèle de routeur, mais la plupart ont un ensemble similaire de paramètres de base. Voici à quoi cela ressemble sur un firmware Tomato :

tomato screenshot

Saisissez l'adresse MAC, une adresse IP et le nom souhaité. Vous pouvez choisir n'importe quelle adresse IP sur la plage d'adresses de votre réseau local. La plupart des routeurs domestiques sont préconfigurés pour une plage d'adresses de la forme 192.168. x . y ou 10. x . y . z . Par exemple, sur le routeur Tomato illustré ci-dessus, dans l'onglet "Réseau", il y a un paramètre "adresse IP du routeur" avec la valeur 10.3.0.1 et un paramètre "masque de sous-réseau" avec la valeur 255.255.255.0, ce qui signifie que les ordinateurs sur le réseau local doit avoir une adresse de la forme 10.3.0. z . Il existe également une plage d'adresses pour les adresses DHCP attribuées automatiquement (10.3.0.129–10.3.0.254); pour votre adresse DHCP attribuée manuellement, choisissez-en une qui ne fait pas partie de cette plage.

Connectez maintenant B au réseau, il devrait obtenir l'adresse IP que vous avez spécifiée et il sera accessible par le nom spécifié depuis n'importe quelle machine du réseau.

Créez votre propre serveur DNS avec Dnsmasq

Si vous ne disposez pas d'un routeur domestique compatible, vous pouvez configurer les mêmes fonctionnalités sur n'importe quelle machine Linux. Je vais vous expliquer comment utiliser Dnsmasq pour configurer DNS . Il existe de nombreux autres programmes similaires; J'ai choisi Dnsmasq parce qu'il est facile à configurer et léger (c'est ce que le routeur Tomato illustré ci-dessus utilise, par exemple). Dnsmasq est disponible sur la plupart des distributions Linux et BSD pour PC, serveurs et équipements réseau.

Choisissez un ordinateur qui est toujours allumé, qui a une adresse IP statique et qui exécute une sorte de Linux ou BSD; appelons-le S (pour le serveur). Sur S, installez le package dnsmasq (s'il n'est pas déjà là). Ci-dessous, je suppose que le fichier de configuration est /etc/dnsmasq.conf; l'emplacement peut varier sur certaines distributions. Maintenant, vous devez faire plusieurs choses.

  • Dites à Dnsmasq de servir vos noms d'hôte en plus de ceux qu'il obtient d'Internet. La manière la plus simple consiste à saisir les noms et adresses IP dans /etc/hosts (voir la section "Fichier Hosts" ci-dessus), et assurez-vous que /etc/dnsmasq.conf n'a pas le no-hosts directive sans commentaire. (Lignes commençant par # sont commentés.) Vous pouvez mettre les noms dans un fichier différent; si vous le faites, mettez une ligne addn-hosts=/path/to/hosts/file dans /etc/dnsmasq.conf.
  • Dites à Dnsmasq comment obtenir des adresses IP pour les noms de machines sur Internet.

    • Si vous utilisez Debian, Ubuntu ou un dérivé, installez le paquet resolvconf. Dans la plupart des cas, tout fonctionnera hors de la boîte.
    • Si votre administrateur réseau ou votre FAI vous a donné les adresses des serveurs DNS, entrez-les dans /etc/dnsmasq.conf, par exemple:

      server=8.8.8.8
      server=8.8.4.4
      
    • Si vous ne savez pas quels sont vos paramètres DNS actuels, consultez le fichier /etc/resolv.conf. Si vous voyez une ligne comme nameserver 8.8.8.8, mettez une ligne server=8.8.8.8 dans /etc/dnsmasq.conf. Après avoir changé /etc/dnsmasq.conf, redémarrez Dnsmasq. La commande pour ce faire dépend de la distribution; les possibilités typiques incluent restart dnsmasq ou /etc/init.d/dnsmasq restart.

  • Dites à S d'utiliser le service Dnsmasq pour toutes les demandes de nom d'hôte. Modifiez le fichier /etc/resolv.conf (en tant que root), supprimez toutes les lignes nameserver et mettez nameserver 127.0.0.1 au lieu.
    • Si vous utilisez resolvconf sur Debian ou Ubuntu, le /etc/resolv.conf peut ne pas être optimal si vous avez installé le package resolvconf avec le réseau opérationnel. Assurez-vous que les fichiers base, head et tail dans le /etc/resolvconf/resolv.conf.d/ le répertoire ne contient aucune entrée nameserver, puis exécutez resolvconf -u (en tant que root).
  • Dites aux autres machines d'utiliser S comme serveur DNS. Éditer /etc/resolv.conf et remplacez toutes les lignes nameserver par une seule nameserver 10.3.0.2 où 10.3.0.2 est l'adresse IP de S (voir ci-dessus pour savoir comment trouver l'adresse IP de S).

Vous pouvez également utiliser Dnsmasq comme serveur DHCP , afin que les machines puissent obtenir automatiquement l'adresse correspondant à leur nom. Cela dépasse le cadre de cette réponse; consultez la documentation Dnsmasq (ce n'est pas difficile). Notez qu'il ne peut y avoir qu'un seul serveur DHCP sur un réseau local donné (la définition exacte du réseau local dépasse le cadre de cette réponse).

Noms sur Internet mondial

Jusqu'à présent, j'ai supposé un réseau local. Et si vous voulez donner un nom à une machine qui se trouve dans un autre coin du monde? Vous pouvez toujours utiliser l'une des techniques ci-dessus, sauf que les parties impliquant DHCP ne sont applicables qu'au sein d'un réseau local. Alternativement, si vos machines ont des adresses IP publiques, vous pouvez leur enregistrer votre propre nom public. (Vous pouvez également attribuer une adresse IP privée à un nom public; c'est moins courant et moins utile, mais il n'y a aucune difficulté technique.)

Obtenir votre propre nom de domaine

Vous pouvez obtenir votre propre nom de domaine et attribuer des adresses IP aux noms d'hôte à l'intérieur de ce domaine. Vous devez enregistrer le nom de domaine auprès d'un fournisseur de noms de domaine; cela coûte généralement 10 à 15 $/an (pour les domaines les moins chers). Utilisez l'interface Web de votre fournisseur de nom de domaine pour attribuer des adresses aux noms d'hôte.

DNS dynamique

Si vos machines ont une adresse IP dynamique, vous pouvez utiliser le protocole DNS dynamique pour mettre à jour l'adresse IP associée au nom de la machine lorsque l'adresse change. Tous les fournisseurs de noms de domaine ne prennent pas en charge le DNS dynamique, alors achetez avant d'acheter. Pour un usage personnel, No-IP fournit un service DNS dynamique gratuit, si vous utilisez leurs propres domaines (par exemple example.ddns.net).

Utilisez DNS multidiffusion (mDNS). Il s'agit d'un protocole à configuration nulle qui fonctionne sur les sous-réseaux LAN. Aucun serveur requis. Utilise le .local TLD (c'est ce que vous utilisez déjà).

Parce que vous demandez, tout le reste semble exagéré. Si ce n'était pas le cas, alors vous ne le demanderiez probablement pas.

27
tne
vi /etc/dhcp3/dhclient.conf

send Host-name "ubuntu-laptop";

et

/etc/init.d/networking restart
4
LanceBaynes

Les ordinateurs ne savent pas comme par magie quels noms d'hôtes appartiennent à quels destinataires IP. Même sur localhost, il existe une sorte de recherche impliquée.

Vous devrez configurer vos autres systèmes pour utiliser une sorte de service de recherche de nom. Cela peut être /etc/hosts sur le client, ldap, nsswitch ou les serveurs DNS normaux. J'utilise bind et saisis toutes les machines locales dans un domaine local, puis je lui fais servir le DNS pour ce site.

3
Caleb

Si vous ne souhaitez pas vous mêler du fichier hôte et que vous possédez par hasard un nom de domaine Internet et un accès Internet, vous pouvez créer un sous-domaine de type A qui pointe vers votre IP interne. Par exemple, configuration intranet-pc1.someperson.com et pointe vers 10.0.1.13.

1
MK Yung