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
Il s’agit d’une installation par défaut de Debian 6 (Squeeze). Je ne me suis donc jamais occupé de rien.
C'est ce que je reçois 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
networking
Tshepang
la source
la source
ping
) ou sur une machine que le client consulte. Quel est le système d'exploitation sur le client? Quelle est sa configuration DNS?ping
et/etc/hosts
ne connaît pas le DNS?Réponses:
Sur Internet, y compris les réseaux locaux, les machines s’appellent par adresses IP . Pour accéder à la machine B à partir de la machine A à l'aide du nom de la machine B, la machine A doit disposer d'un moyen de mapper le nom de B sur son adresse IP. Il existe trois façons de déclarer les noms de machine sur A:
unix.stackexchange.com
.Celles-ci peuvent fonctionner de nombreuses façons. il est impossible de tous les couvrir. Dans cette réponse, je vais décrire quelques situations courantes.
Fichier d'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 de manière dynamique (afin que vous obteniez une adresse 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 sur des adresses IP. Cela ressemble à ceci:
Sur les systèmes Unix, le fichier hosts est
/etc/hosts
. Sous Windows, c'estc:\windows\system32\drivers\etc\hosts
. À peu près tous les systèmes d'exploitation que vous pouvez connecter à Internet possèdent un fichier similaire; Wikipedia a une liste .Pour ajouter une entrée pour B dans le fichier hosts de A:
Déterminez l'adresse IP de B. Sur B, exécutez la commande
ifconfig
(si la commande est introuvable, essayez/sbin/ifconfig
). La sortie contiendra des lignes comme celle-ci: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'lo
entrée, ni un tunnel, ni une entrée virtuelle./etc/hosts
tant que super utilisateur. voir Comment exécuter une commande en tant qu'administrateur système (racine) .DHCP + DNS sur les réseaux domestiques ou de petite entreprise
Cette méthode est de loin la plus simple si vous disposez du matériel requis. Il vous suffit de configurer un seul périphérique, et tous vos ordinateurs connaîtront le nom de chacun. Cette méthode suppose que vos ordinateurs obtiennent leurs adresses IP via DHCP , ce qui permet aux ordinateurs de récupérer automatiquement une adresse IP lorsqu'ils se connectent au réseau. Si vous ne savez pas ce que DHCP est, ils le font probablement.
Si votre réseau dispose d'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 l' 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: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).A présent, sur l'interface Web de votre routeur, recherchez un paramètre tel que «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 micrologiciel Tomato :
Entrez l'adresse MAC, une adresse IP et le nom souhaité. Vous pouvez choisir n'importe quelle adresse IP dans 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», 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 sous tension 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 se trouve pas dans cette plage.
Maintenant, connectez B au réseau, et il devrait obtenir l'adresse IP que vous avez spécifiée et il sera accessible par le nom spécifié à partir de n'importe quel ordinateur du réseau.
Faites votre propre serveur DNS avec Dnsmasq
Si vous ne disposez pas d'un routeur domestique capable, vous pouvez configurer la même fonctionnalité sur n'importe quel ordinateur Linux. Je vais vous expliquer comment utiliser Dnsmasq pour configurer DNS . Il existe de nombreux autres programmes similaires. J'ai choisi Dnsmasq car 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 les PC, les serveurs et les équipements réseau.
Choisissez un ordinateur 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
dnsmasq
paquet (s'il n'est pas déjà là). Ci-dessous, je supposerai que le fichier de configuration est/etc/dnsmasq.conf
; l'emplacement peut varier d'une distribution à l'autre. Maintenant, vous devez faire plusieurs choses./etc/hosts
(voir la section «Fichier des hôtes» ci-dessus), et assurez-vous que/etc/dnsmasq.conf
lano-hosts
directive ne soit pas décommentée. (Les lignes commençant par un#
sont commentées.) Vous pouvez mettre les noms dans un fichier différent; si vous le faites, mettez une ligneaddn-hosts=/path/to/hosts/file
dedans/etc/dnsmasq.conf
.Indiquez à Dnsmasq comment obtenir des adresses IP pour les noms de machines sur Internet.
resolvconf
paquet. Dans la plupart des cas courants, tout fonctionnera hors de la boîte.Si votre administrateur réseau ou votre fournisseur de services Internet vous a fourni les adresses de serveurs DNS, entrez-les
/etc/dnsmasq.conf
, par exemple:Si vous ne connaissez pas vos paramètres DNS actuels, consultez le fichier
/etc/resolv.conf
. Si vous voyez une ligne commenameserver 8.8.8.8
, mettre une ligneserver=8.8.8.8
à/etc/dnsmasq.conf
. Une fois que vous avez changé/etc/dnsmasq.conf
, redémarrez Dnsmasq. La commande à faire dépend de la distribution; les possibilités typiques incluentrestart dnsmasq
ou/etc/init.d/dnsmasq restart
./etc/resolv.conf
(en tant que root), supprimez toutes lesnameserver
lignes et mettez-les à lanameserver 127.0.0.1
place./etc/resolv.conf
peut ne pas être optimale si vous avez installé leresolvconf
paquet avec le réseau en marche. Assurez - vous que les fichiersbase
,head
ettail
dans le/etc/resolvconf/resolv.conf.d/
répertoire ne contiennent pas d'nameserver
entrées, puis exécutezresolvconf -u
( en tant que root)./etc/resolv.conf
et remplacez toutes lesnameserver
lignes par une seulenameserver 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 en tant que serveur DHCP afin que les ordinateurs 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 l'Internet mondial
Jusqu'ici, j'ai assumé un réseau local. Et si vous voulez donner un nom à une machine située dans un coin différent du monde? Vous pouvez toujours utiliser l'une des techniques ci-dessus, à l'exception du fait que les parties impliquant DHCP ne s'appliquent que sur un réseau local. Sinon, si vos machines ont des adresses IP publiques, vous pouvez enregistrer votre propre nom public pour elles. (Vous pouvez également attribuer une adresse IP privée à un nom public; elle est moins commune et moins utile, mais il n'y a pas de 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 de ce domaine. Vous devez enregistrer le nom de domaine auprès d'un fournisseur de nom de domaine. cela coûte généralement entre 10 et 15 dollars par an (pour les domaines les moins chers). Utilisez l'interface Web de votre fournisseur de nom de domaine pour attribuer des adresses à des noms d'hôte.
DNS dynamique
Si vos ordinateurs ont une adresse IP dynamique, vous pouvez utiliser le protocole DNS dynamique pour mettre à jour l'adresse IP associée au nom de l'ordinateur lorsque l'adresse change. Tous les fournisseurs de noms de domaine ne prennent pas en charge le DNS dynamique. Achetez donc 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
).la source
Utilisez DNS multidiffusion (mDNS). Il s'agit d'un protocole à configuration zéro qui fonctionne sur les sous-réseaux LAN. Aucun serveur requis. Utilise le
.local
TLD (qui est ce que vous utilisez déjà).Parce que vous demandez, tout le reste semble exagéré. Si ce n'était pas le cas, vous ne poseriez probablement pas la question.
la source
avahi
paquet (s). Vous pouvez interroger votre réseau viaavahi-browse -alr
par exemple.et
la source
service restart dhcpd
). La deuxième partie serait faite sur le client, et sur la plupart des distributions devrait maintenant être exécutée commeservice networking restart
.Les ordinateurs ne savent pas comme par magie quels noms d’hôtes appartiennent à quels destinataires IP. Même sur localhost, il y a une sorte de recherche impliquée.
Vous devrez configurer vos autres systèmes pour utiliser un type de service de recherche de nom. Cela peut être
/etc/hosts
sur le client, ldap, nsswitch ou serveurs DNS normaux. J'utilisebind
et saisis toutes les machines locales dans un domaine local, puis je le fais servir le DNS pour ce site.la source